【问题标题】:Google Cloud Platform : How to develop on my local environment with GCP resourcesGoogle Cloud Platform : 如何使用 GCP 资源在我的本地环境中进行开发
【发布时间】:2018-08-02 15:38:32
【问题描述】:
我正在使用 Google App Engine Flex 开发一个 angularjs/php-rest 后端应用程序。
我已经成功地从常规服务器移植到 AppEngine,现在我想与 GCP 服务集成更多,例如:StackDriver、云存储等。
StackDriver 进行日志记录和监控。
Cloud Storage:存储导出数据文件并在将其发送到浏览器之前对其进行压缩。
我的问题是如何在我的笔记本电脑上进行本地开发(可以在线和离线)?
我在文档中没有找到本地开发的“方式”:
- 是否应将 stackDriver 或 Cloud Storage 客户端配置为写入磁盘而不是到达 GCP?
- 是否应该配置一些代理(如 cloud_sql_proxy)才能访问 GCP?我应该为我的本地开发者创建一个项目吗?如果我离线,它如何工作?
任何提示表示赞赏:)
【问题讨论】:
标签:
php
google-cloud-platform
google-cloud-storage
app-engine-flexible
google-cloud-stackdriver
【解决方案1】:
App Engine Flexible 不附带开发服务器或服务模拟器供您在开发期间使用,因此您可以直接使用这些服务。
-
Stackdriver Logging:写入 stdout 和 stderr 的日志会自动为您发送到 Stackdriver Logging,无需使用 PHP 的 Stackdriver Logging 库。这可能足以让您在本地获取日志,但我们建议您使用 PSR-3 记录器,它会自动将元数据添加到您的日志中,以便您的应用程序日志与请求日志相关联。您可以按照文档here 将其设置为在本地运行并登录到您的项目。
-
Stackdriver Monitoring:Google App Engine 包含对灵活环境中的 Monitoring 的内置支持(部署时),并且不需要配置。监控代理虽然不能安装在你的本地机器上,但无论如何监控它是没有意义的。
-
云存储:一个简单的选择是创建一个可以在开发过程中使用的开发存储桶。您可以在任何您希望的项目中创建它,并向您的开发服务帐户授予权限。
一种常见的做法是创建不同的 GCP 项目用于生产、登台和开发目的。这允许您为给定环境创建特定资源。以日志为例,您将能够在 dev 项目中查看日志并解决任何问题,而不会污染您的 prod 项目的日志。 CloudSQL、Datastore 等也是如此......
您无需为这些服务配置任何代理。 cloud_sql_proxy 是一种使用 CloudSQL 实例实施安全连接和简化身份验证的便捷方法,无需将 IP 地址列入白名单。
关于现在离线的情况,当然,如果您当时没有互联网连接,那么从您的本地应用程序到这些服务的调用将失败(间歇性断开实际上可能有助于您测试重试和错误处理机制)。但是,如果您希望在完全没有 Internet 连接的情况下进行开发,则需要编写存根服务以在本地模拟预期的行为。