在 VPC 终端节点上使用应用程序运行器 - AWS App Runner

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 VPC 终端节点上使用应用程序运行器

您的 AWS 应用程序可能会将 AWS App Runner 服务与在亚马逊虚拟私 AWS 服务 有云(亚马逊 VPC)的 VPC 中运行的其他服务集成。您的部分应用程序可能会从 VPC 内部向 App Runner 发出请求。例如,您可以使用持续部署 AWS CodePipeline 到您的 App Runner 服务。提高应用程序安全性的一种方法是通过 VPC 终端节点将这些 App Runner 请求(以及向其他用户发送请求 AWS 服务)。

使用 VPC 终端节点,您可以私密地将您的 VPC 连接到支持的 VPC 终端节点服务 AWS 服务 以及由其提供支持的 VPC 终端节点服务 AWS PrivateLink。您不需要互联网网关、NAT 设备、VPN 连接或 AWS Direct Connect 连接。

您的 VPC 中的资源不使用公有 IP 地址与 App Runner 资源进行交互。您的 VPC 和 App Runner 之间的流量不会离开亚马逊网络。有关 VPC 终端节点的更多信息,请参阅AWS PrivateLink 指南中的 VPC 终端节点

注意

默认情况下,您的 App Runner 服务中的 Web 应用程序在 App Runner 提供和配置的 VPC 中运行。此 VPC 是公有的。这意味着它已连接到互联网。您可以选择将您的应用程序与自定义 VPC 关联。有关更多信息,请参阅 为出站流量启用 VPC 访问权限

即使您的服务已连接到 VPC,您也可以将服务配置为访问互联网,包括 AWS API。有关如何为 VPC 出站流量启用公共互联网访问的说明,请参阅选择子网时的注意事项

App Runner 不支持为您的应用程序创建 VPC 终端节点。

为 App Runner 设置 VPC 终端节点

要在您的 VPC 中为 App Runner 服务创建接口 VPC 终端节点,请按照AWS PrivateLink 指南中的创建接口终端节点过程进行操作。对于 Service Name (服务名称),选择 com.amazonaws.region.apprunner

VPC 网络隐私注意事项

重要

在 App Runner 上使用 VPC 终端节点并不能确保来自你的 VPC 的所有流量都不会进入互联网。VPC 可能是公共的。此外,您的解决方案的某些部分可能不使用 VPC 终端节点发出 AWS API 调用。例如, AWS 服务 可能会使用其公共终端节点调用其他服务。如果您的 VPC 中的解决方案需要流量隐私,请阅读本节。

为确保您的 VPC 中网络流量的隐私,请考虑以下事项:

  • 启用 DNS 名称 — 应用程序的某些部分仍可能使用apprunner.region.amazonaws.com公共终端节点通过互联网向 App Runner 发送请求。如果您的 VPC 配置了互联网访问权限,则这些请求会成功,而不会向您发出任何指示。您可以通过确保在创建终端节点时启用 “启用 DNS 名称” 来防止这种情况。默认情况下,它设置为 true。这会在您的 VPC 中添加一个 DNS 条目,该条目将公有服务终端节点映射到接口 VPC 终端节点。

  • 为其他服务配置 VPC 终端节点-您的解决方案可能会向其他人发送请求 AWS 服务。例如, AWS CodePipeline 可能会向发送请求 AWS CodeBuild。为这些服务配置 VPC 终端节点,并在这些终端节点上启用 DNS 名称。

  • 配置私有 VPC — 如果可能(如果您的解决方案根本不需要访问互联网),请将您的 VPC 设置为私有,这意味着它没有互联网连接。这样可以确保丢失的 VPC 终端节点会导致明显的错误,这样您就可以添加缺失的终端节点。

使用终端节点策略控制通过 VPC 终端节点进行的访问

App Runner 不支持 VPC 终端节点策略。默认情况下,允许通过接口端点对 App Runner 进行完全访问。或者,您可以将安全组与端点网络接口关联,以控制通过接口终端节点流向 App Runner 的流量。

与接口端点集成

App Runner 支持 AWS PrivateLink,它提供与 App Runner 的私有连接,并消除了互联网流量的暴露。要使您的应用程序能够使用向 App Runner 发送请求 AWS PrivateLink,请配置一种称为接口终端节点的 VPC 终端节点。有关更多信息,请参阅 AWS PrivateLink 指南中的接口 VPC 端点 (AWS PrivateLink)