【问题标题】:Google Endpoints using only inside App EngineGoogle Endpoints 仅在 App Engine 内部使用
【发布时间】:2015-04-29 02:39:44
【问题描述】:

当我们创建端点时,它有外部地址来访问它。因此,如果我尝试从另一个端点调用它,它将使用一些流量。

我想创建外部可用的端点 (Api),以及另一个用于访问数据存储的端点。第二端点不应具有外部访问权限,并且只能在 App Engine 内部从另一个应用程序(具有外部地址的第一个服务)调用。只是为了安全和最小化流量。

那么,是否可以创建仅可用于来自容器引擎的另一个端点和应用程序的端点?还是我应该换一种方式?

【问题讨论】:

    标签: eclipse google-app-engine gwt maven-3 m2eclipse


    【解决方案1】:

    我发现你的问题相当模糊。您是否尝试从同一个应用引擎应用程序中访问一个端点?您可以将端点代码提取到静态方法中并调用该方法。在这种情况下没有充分的理由使用端点。

    如果您尝试从另一个 App Engine 应用程序访问您的端点: 默认情况下,Cloud Endpoints 是公开的。如果您限制访问,Google JavaScript 客户端之类的东西将不再起作用,因为您将阻止正确发现您的端点。 您可以通过将 HttpServletRequest 注入您的端点 @ApiMethod 并按请求者的 IP 或自定义标头过滤来限制对端点的访问。您还可以将 User 对象注入您的端点方法并执行服务帐户 oauth 身份验证,以从另一个应用引擎实例或项目访问您的端点。

    希望对你有帮助

    可以通过以下方式对 AppEngine 的数据存储区进行本地访问: JPA、JDO、低级 API (https://cloud.google.com/appengine/docs/java/datastore/) 如果您需要包装器,我在所有项目中都使用 Objectify,但也有 slim3(参见链接)。

    【讨论】:

    • 我想要 2 个独立的服务。一个仅用于数据存储访问,另一个可以调用此服务。为了尽量减少流量,希望通过本地 ip 调用此服务进行数据存储。
    • 为什么要使用端点来访问数据存储?对于这样一个简单的事情来说,这是一个很大的 HTTP 开销和序列化。如果您只想在本地访问数据存储,则不要围绕它包装 Web 服务。但如果你必须,有这个:cloud.google.com/datastore/docs/apis/v1beta2
    • “如果您只想在本地访问数据存储,那么不要围绕它包装 Web 服务”我该怎么做?所有示例和 maven 框架项目都有围绕它的 Web 服务...
    • 我添加了指向原始答案的链接。低级 API 实际上非常易于使用。
    • 是的,我将在与数据存储一起使用的服务中使用它。但我想分离逻辑:一个服务中的 api 和另一个服务中的数据访问。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    相关资源
    最近更新 更多