天道酬勤,学无止境

使用 Go Google App Engine Standard 的 Cloud Endpoints 是否可能?(Are Cloud Endpoints with Go Google App Engine Standard possible?)

问题

我在 Go on Google App Engine Standard 中实现了一个简单的 API:

func init() {
    http.HandleFunc("/api/v1/resource",submitResource)
}

没什么特别的。 但是,我想将此代码移植到使用 Cloud Endpoints 中,以便获得更好的监控和诊断。

甚至可以使用 STANDARD 实例还是我必须转向 FLEXIBLE?

我找不到任何关于此的文档。 这个看似简单的问题也没有答案。 目前我有点希望我选择了 Python,因为它的支持似乎更成熟。 我选择 Go 是因为它似乎更适合类似 API 的代码,因为我的最小研究表明 Go 提供了更好的性能。

如果可能,是否有任何指示如何操作?

回答1

GAE 标准通过端点框架仅支持 Python 和 Java。 但是,GAE Flexible 支持 Go。

这是 Go GAE 灵活示例:https://github.com/GoogleCloudPlatform/golang-samples/tree/master/endpoints/getting-started

回答2

经过大量研究和反复试验,简单的答案是“不”。 - 截至 2016 年 12 月。

更长的答案是,如果您想花费太多精力来更新您自己的最新库,这是可能的。 目前基本上没有支持,即使在阿尔法,使用转到与谷歌App Engine的标准目前谷歌云端点。

回答3

可以在 GAE 标准环境中运行 Go+endpoints,但是现在库可能已经过时了。
可以在 github 上找到库和示例应用程序:
https://github.com/GoogleCloudPlatform/go-endpoints
我已成功将“Greetings”部署为 AppEngine SE 应用程序,并且可以正常工作。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Google App Engine和Google Compute Engine有什么区别?
    本文翻译自:What is the difference between Google App Engine and Google Compute Engine? I was wondering what the difference between App Engine & Compute Engine are. 我想知道App Engine和Compute Engine之间有什么区别。 Can anyone explain the difference to me? 谁能向我解释差异? #1楼 参考:https://stackoom.com/question/1XEXR/Google-App-Engine和Google-Compute-Engine有什么区别 #2楼 App Engine is a Platform-as-a-Service. App Engine是平台即服务。 It means that you simply deploy your code, and the platform does everything else for you. 这意味着您只需部署代码,平台即可为您完成其他所有工作。 For example, if your app becomes very successful, App Engine will automatically
  • Are Cloud Endpoints with Go Google App Engine Standard possible?
    I have implemented a simple API in Go on Google App Engine Standard using just: func init() { http.HandleFunc("/api/v1/resource",submitResource) } Nothing special. However I want to port this code to using Cloud Endpoints instead in order to get the better monitoring and diagnostics. Is it even possible with STANDARD instances or must I move to FLEXIBLE? I can't find any documentation on this. Nor answers to this seemingly simple question. At the moment I half wish I had chosen Python because its support seems more mature. I chose Go because it seems more appropriate for API-like code because
  • Google App Engine和Google Compute Engine有什么区别?(What is the difference between Google App Engine and Google Compute Engine?)
    问题 我想知道App Engine和Compute Engine之间的区别是什么。 谁能向我解释差异? 回答1 App Engine是平台即服务。 这意味着您只需部署代码,平台即可为您完成其他所有工作。 例如,如果您的应用非常成功,则App Engine将自动创建更多实例来处理增加的数量。 进一步了解App Engine Compute Engine是基础架构即服务。 您必须创建和配置自己的虚拟机实例。 它为您提供了更大的灵活性,并且其成本通常比App Engine低得多。 缺点是您必须自己管理应用程序和虚拟机。 进一步了解Compute Engine 如有必要,您可以将App Engine和Compute Engine混合使用。 它们都可以与Google Cloud Platform的其他部分很好地配合使用。 编辑(2016年5月): 另一个重要的区别是:如果没有请求进入,在App Engine上运行的项目可以缩减为零实例。这在开发阶段非常有用,因为您可以花数周的时间而不必花费大量的实例小时免费配额。 灵活的运行时(即“托管VM”)需要至少一个实例才能持续运行。 编辑(2017年4月): 从抽象的角度来看,云功能(目前处于beta版)是App Engine的下一个更高级别-没有实例! 它允许开发人员部署一小段代码,以响应不同事件而执行,这些事件可能包括HTTP请求,Cloud
  • 如何将Google App Engine端点API的访问权限限制为仅对我的Android应用程序?(How do I restrict Google App Engine Endpoints API access to only my Android applications?)
    问题 我是一名Android开发人员,为我的应用程序构建了我的第一个Google App Engine(java)后端。 除了我的应用程序外,我不希望其他任何人访问此API。 (我计划使用App引擎在我的Android应用中验证InApp购买)。 我的数据与用户无关,因此,即使用户使用Google帐户(在网络或Android设备上)登录,我也不希望他们能够访问我的API。 我按照-“在API后端中指定授权的客户端”(https://developers.google.com/appengine/docs/java/endpoints/auth)中提到的步骤进行操作,例如生成客户端ID并将其添加到@Api(clientIds和受众群体),但“添加用户参数”除外-因为我不需要用户身份验证。 然后,我部署了App引擎,但仍然可以通过API资源管理器(https://your_app_id.appspot.com/_ah/api/explorer)访问API(我尚未添加API_EXPLORER客户端ID) 在添加客户端ID之前,我使用由端点库构建的APK进行了测试,并且仍然可以访问API。 是否必须在所有端点API中添加“用户参数”? 达到我的目的(仅将API限制为我的Android应用)。 是否可以从Android客户端传递null作为userAccount名称
  • Google Cloud Endpoints和用户身份验证(Google Cloud Endpoints and user's authentication)
    问题 我目前是AppEngine领域的新手,并希望使用Cloud Endpoints为我正在开发的移动应用程序创建一个后端。 我现在的问题之一是关于用户的身份验证。 我一直在关注App Engine上的Udacity的MOOC,他们教我们如何使用Google帐户验证用户的API请求。 在后端,我们只需要向我们的方法中添加一个User参数,并检查用户是否登录。据我所知,此用户参数是App Engine根据请求的Authorization标头生成的。 (在那里可能需要一些确认) 现在,我不确定有很多东西,而在本MOOC中并没有得到很好的解释。 现在,我想知道它是否与Google之外的其他OAuth方案兼容? 那么,如果我想实现Facebook身份验证,我是否只需传递Facebook访问令牌? 根据我的搜索,使用Android上的Facebook SDK将使我能够生成一个用户访问令牌,该令牌将我的用户标识为facebook 。 将其发送到我的后端后,我想在Facebook上检查其有效性,如果有效,请为我的应用程序创建一个新用户。 现在,我还想生成一个新令牌,用于标识我的应用程序的用户。 我需要怎么做? 回答1 您可以将自己的身份验证器提供给Endpoints,然后将通过您的身份验证器获得注入的用户https://developers.google.com/appengine/docs
  • 在 Google Cloud 中保存 Android 应用程序数据(Saving Android application data in Google Cloud)
    问题 是否可以在 Google Cloud 中保存 Android 应用程序数据并在使用应用程序时与应用程序同步? 例如,我希望 Google Cloud Storage 充当我的应用程序的服务器。 我想在 Google Cloud Storage 中创建一个文件夹并将所有与应用程序相关的数据存储在那里。 我已阅读 Cloud Storage 文档并创建了 API 密钥。 请告知是否可以这样做。 回答1 您可以使用 Google Cloud Endpoints 将您的移动应用连接到 Google Cloud Platform: 一个工具,多个客户端从一个来源为 Android、iOS 和基于 Web 的客户端构建客户端库。 Cloud Endpoints 只需几个步骤即可封装您的代码以构建 API 服务器。 Cloud Endpoint API 库提供 Java 和 Python 版本。 在我们的文档中了解有关 Cloud Endpoints 的更多信息,或者直接尝试我们的示例 Tic Tac Toe Web 应用程序。 扩展 App Engine 基础架构 App Engine 中提供的所有工具和库现在都可用于您的移动设备。 使用您的 App Engine 后端访问数据存储、云存储和任务队列,无需额外工作。 按照我们的示例快速集成 OAuth 2.0 身份验证。 如果您正在构建
  • 无需登录Google帐户即可通过Cloud Endpoints对客户端进行身份验证(Authenticating your client to Cloud Endpoints without a Google Account login)
    问题 我一直在广泛研究如何使用Cloud Endpoints对您的客户端(Android,iOS,Web应用)进行身份验证,而无需您的用户按照文档显示的方式使用其Google帐户登录。 原因是我想保护我的API或仅将其“锁定”到我指定的客户端。 有时,我会有一个没有用户登录的应用程序。 我不想让我的用户现在登录,只是为了确保我的API安全。 有时,我只想像在网站上一样管理自己的用户,而不使用Google +,Facebook或其他任何登录身份验证。 首先,让我首先展示如何使用文档中指定的Google帐户登录信息使用Cloud Endpoints API对Android应用进行身份验证的方法。 之后,我将向您展示我的发现以及需要帮助的解决方案的潜在领域。 (1)指定被授权向您的API后端发出请求的应用的客户端ID(clientIds),以及(2)将User参数添加到所有公开的方法中,以受授权保护。 public class Constants { public static final String WEB_CLIENT_ID = "1-web-apps.apps.googleusercontent.com"; public static final String ANDROID_CLIENT_ID = "2-android-apps.googleusercontent.com"
  • 从 App Engine 连接到 CloudSQL(第二代 CloudSQL)GO(Connecting to CloudSQL from App Engine (Second Generation CloudSQL) GO)
    问题 爱堆栈,我的第一篇文章完全出于沮丧。 感谢您的评论! 创建 App Engine 项目在我的 App Engine 项目中创建了第二代 MySQL 实例在 MySQL 实例中创建数据库在 App Engine 中,我激活 --> Google Cloud Shell <--。 (我在 console.cloud.google.com 的命令提示符下工作) 我已经复制了这个基本的 GO 程序来连接到我的 MySQL 实例。 我构建并运行它。 去构建 mysqlexample.go ./mysqlexample 我一直无法成功连接。 您可以看到我尝试过的所有各种连接字符串,它们的右侧是我得到的响应。 我可以使用 mysql admin 从我的本地 Windows 机器连接。 帮助? package main import ( "database/sql" _ "github.com/go-sql-driver/mysql" "log" ) func main() { const dbIP = "104.xxx.xx.x" const dbInstanceName = "esp-1-dev:us-central1:espdev" const dbName = "servpro" const dbUserName = "root" const dbPassword =
  • 使用 Cloud Endpoint for Google App Engine 对 Android 应用进行本地测试(Local testing for Android App using Cloud Endpoints for Google App Engine)
    问题 我正在开发一个 Android 应用程序,它使用 Google App Engine(Python 中)上的 Google Cloud Endpoints 作为其后端。 Android 应用程序授权用户在 Android 设备上使用 Google Play 服务,并且一切都非常出色。 但是,现在我有实际用户,我希望能够在将任何应用引擎 API 更改部署到生产环境之前在本地测试这一切,而且我还没有弄清楚如何让 Android 应用程序与我的本地开发服务器通信任何地方。 测试建议表明我只是对 API Explorer 进行了一些手动修改,但是由于我将 Endpoints Proto Datastore 用于我的 API,这使得 Android 开发变得容易,但它也使 API Explorer 基本无用,因为我需要调用制作比我手动生成的要复杂得多。 这个问题的一个答案表明,有一种方法可以将 Android 客户端指向本地服务器,但是虽然我可以使用 --host 参数让 dev_appserver 的默认服务器侦听 localhost 以外的其他内容,但我似乎无法找到一种对 API 服务器执行相同操作的方法。 即使我能做到这一点,它也可能只是为我的 Android 应用程序进行完整的端到端本地测试设置的第一步。 有人可以发布有关我如何执行此操作的更多详细信息,或者仅此而已
  • Google App Engine: No module named google.api
    I have installed the latest version of google cloud sdk, google-cloud-sdk-app-engine-python on my Ubuntu PC as mentioned in the docs in-order to test google-cloud-endpoints-framework sample app. But on invoking an api request, I got the below traceback. Seems like there is a conflict between google package inside GAE sdk and the google package installed automatically to the lib folder because of google-endpoints package. $ dev_appserver.py app.yaml INFO 2017-03-14 07:51:36,173 devappserver2.py:764] Skipping SDK update check. INFO 2017-03-14 07:51:36,199 api_server.py:268] Starting API server
  • 与 Google Cloud Endpoints 的“会话”(“Sessions” with Google Cloud Endpoints)
    问题 这个问题只是为了确认我对这个概念很清楚。 据我了解, Google Cloud Endpoints是 Google 对REST服务的一种实现,因此它们无法在内存中保留任何“会话”数据,因此: 用户必须随每个请求发送身份验证数据。 我以后要使用的所有数据都必须持久化,也就是说,对于我收到的每个 API 请求,我必须访问数据存储区,执行某些操作并再次存储数据。 这样对吗? 如果是这样,这在性能方面真的好吗? 回答1 数据存储非常快,特别是如果您进行键查找(与查询有关)。 如果您使用 NDB,那么您将受益于 auto memache 您的查找。 回答2 是的,您可以使用会话,只需在您的 API 方法中使用 HttpServlet 放置另一个参数: @ApiMethod public MyResponse getResponse( HttpServletRequest req, @Named("infoId") String infoId ) { // Use 'req' as you would in a servlet, e.g. String ipAddress = req.getRemoteAddr(); ... } 回答3 是的,您的 Cloud Endpoints API 后端代码(Java 或 Python)仍在 App Engine 上运行,因此您对 App
  • 缓存 Google Cloud Endpoints?(Caching of Google Cloud Endpoints?)
    问题 对 Cloud Endpoints 的请求会被缓存吗? 官方文档对这个问题有点了解。 文档中写道: Cloud Endpoints 使用分布式可扩展服务代理来提供低延迟和高性能,甚至可以为最苛刻的 API 提供服务。 [...] 并且可以与 Google App Engine、Google Container Engine、Google Compute Engine 或 Kubernetes 一起使用。 “分布式可扩展服务代理”让我认为端点被分发到边缘节点以获得更快的响应,但文档没有具体说明这一点。 我们可以使用 Cloud CDN 来缓存来自 GAE、Compute 和 Container Engine 的请求。 端点可以与所有这些一起使用。 这让我想知道 CDN+compute 在后台是否有一些魔法来缓存端点响应。 同样,文档对此有一点了解。 有没有人想过这个? 谢谢! 回答1 好问题! 可扩展服务代理 (ESP) 不执行请求缓存。 它的功能是拦截传入的请求,验证身份验证令牌,然后将请求转发到 Google 服务控制,在那里应用 Open API 规范中定义的其他 API 管理规则。 Endpoints 使用分布式代理模型来获得更好的性能,以避免通常由传统多租户 API 代理引起的额外网络跃点。 这实际上与 Google 内部用于支持我们自己的 API 的模型相同。
  • 谷歌云存储检查对象是否存在(App Engine Java)(google cloud storage check if object exists (App Engine Java))
    问题 我的 AppEngine 项目有一个 API 方法,该方法将可恢复的 URL 发送到 Android 客户端,然后使用该可恢复的 URL 上传图像。 我有另一种创建并返回签名 URL 的 API 方法。 在签名 URL 中,您必须指定 Google Cloud Storage 存储桶和对象名称。 但是,该对象可能不存在,在这种情况下,签名 URL 将当然不起作用。 在发布签名 URL 之前,如何快速检查 App Engine 后端中是否存在对象(在存储桶中)? 编辑:我的 App Engine 项目是一个 Cloud Endpoints 项目。 回答1 您可以调用getMetadata来检查对象是否存在,而无需下载它。 GcsService fileService = GcsServiceFactory.createGcsService(); GcsFilename file = new GcsFilename(bucket, object); fileService.getMetadata(file); 或者,您可以列出存储桶中的所有对象或以指定前缀开头的存储桶中的所有对象(如有必要,该前缀可以等于对象的名称)。 更新: 这是我将uploadURL发送给我的客户的方式: @Override public String getUploadUrl() throws
  • Android应用中的云终结点身份验证失败(Cloud endpoints authentication failure in android app)
    问题 我第一次尝试在Google Cloud Endpoints android应用程序的调试模式下使用身份验证时遇到麻烦。 我像这样设置凭据: credential = GoogleAccountCredential.usingAudience(this, "server:client_id:long-string-i-got-from-api-console"); credential.setSelectedAccountName(accountName); 然后尝试像这样使用它: final String LOCAL_APP_ENGINE_SERVER_URL = "http://xxx.xxx.x.xxx:8888"; Testdbendpoint.Builder endpointBuilder = new Testdbendpoint.Builder( AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential); endpointBuilder.setRootUrl(LOCAL_APP_ENGINE_SERVER_URL + "/_ah/api/"); Testdbendpoint endpoint = endpointBuilder.build(); try { TestDB testDB =
  • 将 Firebase 身份验证与谷歌应用引擎云端点集成(Integrate firebase auth with google app engine cloud endpoints)
    问题 有人可以指定(使用一些示例代码)如何在谷歌云端点中验证 firebase 令牌? 最近提出的问题根本没有澄清(How to integration firebase authentication with google app engine endpoints) 端点中的 Google 身份验证是通过将用户参数添加到端点来自动完成的。 Facebook 令牌可以在云端点中使用 facebook graph api 进行验证,如下所示: @ApiMethod(name = "endpoint.addUser", httpMethod = HttpMethod.POST) public ResultObject addUser(HttpServletRequest request, User pUser) throws OAuthRequestException { String token = request.getHeader("Authorization"); String graphUrl = "https://graph.facebook.com/v2.6/me?fields=id,name,email&access_token=" + token; URL u = new URL(g); URLConnection c = u.openConnection()
  • 是否可以使用 appengine 模块和云端点?(Is it possible to use appengine modules and and cloud endpoints?)
    问题 使用 appengine 模块意味着创建动态 Web 应用程序,而不是通常的 appengine Web 应用程序项目。 云端点与通常的 appengine Web 应用程序项目配合良好,但这些不支持 appengine 模块。 问题是,如果我尝试在动态 Web 应用程序上生成云端点客户端库,则会收到错误“不是 App Engine 项目”。 有没有办法让动态 Web 应用程序被识别为 App Engine 项目,以便可以在其上生成云端点客户端库? 回答1 目前正在解决同样的问题,我想我已经找到了具有以下设置的解决方案(将 maven 用于 java 项目): 在项目根 pom.xml: 中定义了一些常用值(例如您使用的 appengine 版本)、 pom包装和您的模块,尤其是 EAR 模块: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  • Visual Studio代码pylint:无法导入“ protorpc”(Visual Studio Code pylint: Unable to import 'protorpc')
    问题 我正在Visual Studio Code中使用pylint开发Python中的Google App Engine(GAE)Cloud Endpoint API。 我无法解决棉绒错误。 我不知道是什么原因引起的错误,但是pylint找不到protorpc库? 对Linting进行故障排除时,建议的解决方案是将工作区设置配置为指向完全合格的python可执行文件。 我已经做到了,但是皮棉错误仍然存​​在。 protorpc本身已安装到: ~/google-cloud-sdk/platform/google_appengine/lib/protorpc-1.0/protorpc ...并且其中包含无法导入的remote.py模块: __init__.py generate_python.py protojson.py transport.py definition.py google_imports.py protourlencode.py util.py descriptor.py message_types.py registry.py webapp generate.py messages.py remote.py wsgi generate_proto.py protobuf.py static 我已将此路径添加到$PYTHONPATH (以及厨房水槽): export
  • 运行 endpointscfg.py get_swagger_spec 时出错(Error running endpointscfg.py get_swagger_spec)
    问题 我正在尝试按照本指南使用 Google Cloud Endpoints 构建项目:App Engine 上 Cloud Endpoints 框架的快速入门。 我被困在生成 OpenAPI 配置文件的步骤中,我需要在其中运行以下命令: 尝试一 $ lib/endpoints/endpointscfg.py get_swagger_spec main.EchoApi --hostname your-service.appspot.com 我收到此错误: -bash: lib/endpoints/endpointscfg.py: Permission denied 尝试二 我用sudo尝试了相同的命令,它返回了这个错误: sudo: lib/endpoints/endpointscfg.py: command not found 尝试三 我试图cd lib/endpoints从与endpointscfg.py文件相同的文件夹中运行命令: $ cd lib/endpoints $ endpointscfg.py get_swagger_spec main.EchoApi --hostname your-service.appspot.com usage: /Users/myName/google-cloud-sdk/platform/google_appengine
  • Google App Engine 使用 JSON 发送过多数据(Google App Engine sends too much data with JSON)
    问题 我使用数据存储创建了一个非常简单的 API,其中包含 GAE 和 Cloud Endpoints。 我创建了一个名为 Book 的实体,其中包含一些属性(其中大部分是字符串)并部署了该应用程序。 我的 GET 和 POST 请求工作正常,但是我不明白为什么每次我执行 GET 请求以检索数据存储中的实体时,JSON 中都会多出一行,例如: { "id": "5634482569460976", "date": "20141125", "author": "Charly", "kind": "bookendpoint#resourcesItem" } 我从来没有在我的实体中设置“种类”属性,它来自哪里? 除了在每个 json 响应的末尾,我还可以找到这两行: "kind": "bookendpoint#resources", "etag": "\"dIDB-NLukmBT86-tBYjgZpbt2_Y/FcVIa289PJU7Cjr-bG8b0oxmfrKQ\"" 我也不知道那些“kind”和“etag”是从哪里来的。 你能告诉我这些是什么以及如何防止它们出现在 JSON 响应中吗? 回答1 Cloud Endpoints 会自动添加这两个属性。 我不知道如何删除它,谷歌似乎没有记录为什么添加它们,但其中一些很容易猜到。 kind领域 kind向 Android
  • 如何使用 Android Studio 开发 Google App Engine 后端(How to develop Google App Engine backend using Android Studio)
    问题 我正在尝试将 Google App Engine 功能添加到我的 Android 应用程序中。 我正在使用 Android Studio,并查看了 Brad Abrams Google I/O talk 和另一个教程,但 Android Studio 似乎已经从去年的这个时候开始,并且 Google Cloud Endpoints 功能已被删除. 我可以在 GitHub 上看到菜单选项“生成 App Engine 后端”已从 Android Studio 中删除并替换为“新 App Engine Gradle 模块”。 是否有任何选项可以让我像在 Android Studio 中的那些示例中一样生成 App Engine 后端,或者我是否需要使用 Eclipse 来执行此操作? 回答1 此答案基于 AndroidStudio 0.8.3。 选择项目的最顶层,右键单击New > Module,然后选择App Engine Java Endpoints 为您的模块设置名称,例如mymodule 您的build.gradle文件现在将有一个新行: compile project(path: ':mymodule', configuration: 'android-endpoints') 现在您需要打开mymodule/src/main/webapp/WEB-INF