如何在标准 AppEngine 与共享 VPC 中的另一个标准 AppEngine 之间进行通信?
How to communicate between Standard AppEngine to another Standard AppEngine within shared VPC?
我有标准的应用引擎,它对同一共享 VPC 和项目中的另一个应用引擎进行 api 调用,但响应是 403 禁止错误。我正在 api 调用的标准应用程序引擎也是 gcloud app services update service-name --ingress=internal-only
,但是一旦我将 appEngine 的配置更新为 gcloud app services update service-name --ingress=all
。所有 API 调用都成功。
注意:根据 gcp 的要求,已创建并正在使用无服务器连接器。
问题
1。如何在标准 AppEngine 与共享 VPC 中的另一个标准 AppEngine 之间进行通信?
2。我如何在具有 gcloud app services update service-name --ingress=internal-only
配置的 AppEngnies 之间进行通信。
当您将入口设置为内部时,您告诉 App Engine:只接受来自该项目的 VPC 的流量。
因此,您需要告诉您的其他 App Engine 服务:只能通过 VPC 访问此(App Engine)服务,否则您将被禁止。
首先,当您在无服务器环境、App Engine、Cloud 运行 或 Cloud Functions 上部署时,您是在 Google Cloud VPC 上,而不是在您的项目 VPC 上。
因此,您必须设置 App Engine 的出口才能使用 VPC。您需要插入 VPC connector 以在 GOOGLE 无服务器 VPC 世界和您的 VPC 之间架起这座桥梁。
但是,它不会起作用。事实上,当您在 App Engine 上设置它时,只有到私有 IP 的流量使用无服务器 VPC 连接器,而不是 public IP。您没有能力将 VPC 出口设置为全部以通过 VPC 路由所有流量,public 和私有(您可以使用 Cloud Functions 和 Cloud 运行)
因此,无论是否具有无服务器 VPC 连接器,App Engine 都将通过互联网而不是通过 VPC 联系内部 App Engine 服务,您每次都会收到 403。
总之,您不能使用 App Engine 做到这一点,请查看 Cloud 运行 或 Cloud Functions 以进行此类设置。您还可以检查您的安全设计,不要依赖流量的来源(来自 VPC),而是依赖流量的身份验证(使用身份令牌和 IAM 服务来确保通信安全)。
由于无服务器 VPC,现在可以访问其他 App Engine 服务(仅配置内部流量)。
在app.yaml
中添加所有需要相互通信的服务(在and/or外连接):
vpc_access_connector:
name: projects/PROJECT_ID/locations/LOCATION/connectors/CONNECTOR
egress_setting: all-traffic
文档:https://cloud.google.com/appengine/docs/standard/go/connecting-vpc。
我有标准的应用引擎,它对同一共享 VPC 和项目中的另一个应用引擎进行 api 调用,但响应是 403 禁止错误。我正在 api 调用的标准应用程序引擎也是 gcloud app services update service-name --ingress=internal-only
,但是一旦我将 appEngine 的配置更新为 gcloud app services update service-name --ingress=all
。所有 API 调用都成功。
注意:根据 gcp 的要求,已创建并正在使用无服务器连接器。
问题
1。如何在标准 AppEngine 与共享 VPC 中的另一个标准 AppEngine 之间进行通信?
2。我如何在具有 gcloud app services update service-name --ingress=internal-only
配置的 AppEngnies 之间进行通信。
当您将入口设置为内部时,您告诉 App Engine:只接受来自该项目的 VPC 的流量。
因此,您需要告诉您的其他 App Engine 服务:只能通过 VPC 访问此(App Engine)服务,否则您将被禁止。
首先,当您在无服务器环境、App Engine、Cloud 运行 或 Cloud Functions 上部署时,您是在 Google Cloud VPC 上,而不是在您的项目 VPC 上。
因此,您必须设置 App Engine 的出口才能使用 VPC。您需要插入 VPC connector 以在 GOOGLE 无服务器 VPC 世界和您的 VPC 之间架起这座桥梁。
但是,它不会起作用。事实上,当您在 App Engine 上设置它时,只有到私有 IP 的流量使用无服务器 VPC 连接器,而不是 public IP。您没有能力将 VPC 出口设置为全部以通过 VPC 路由所有流量,public 和私有(您可以使用 Cloud Functions 和 Cloud 运行)
因此,无论是否具有无服务器 VPC 连接器,App Engine 都将通过互联网而不是通过 VPC 联系内部 App Engine 服务,您每次都会收到 403。
总之,您不能使用 App Engine 做到这一点,请查看 Cloud 运行 或 Cloud Functions 以进行此类设置。您还可以检查您的安全设计,不要依赖流量的来源(来自 VPC),而是依赖流量的身份验证(使用身份令牌和 IAM 服务来确保通信安全)。
由于无服务器 VPC,现在可以访问其他 App Engine 服务(仅配置内部流量)。
在app.yaml
中添加所有需要相互通信的服务(在and/or外连接):
vpc_access_connector:
name: projects/PROJECT_ID/locations/LOCATION/connectors/CONNECTOR
egress_setting: all-traffic
文档:https://cloud.google.com/appengine/docs/standard/go/connecting-vpc。