管理私有端点 - AWS App Runner

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

管理私有端点

使用以下方法之一管理传入流量的私有端点:

注意

如果您的 App Runner 应用程序需要源 IP/CIDR 传入流量控制规则,则必须对私有端点使用安全组规则,而不是 WA F Web ACL。这是因为我们目前不支持将请求源 IP 数据转发到与 WAF 关联的 App Runner 私有服务。因此,与 WAF Web ACL 关联的 App Runner 私有服务的源 IP 规则不符合基于 IP 的规则。

要了解有关基础设施安全和安全组的更多信息,包括最佳实践,请参阅 Amazon VPC 用户指南中的以下主题:使用安全组控制网络流量和控制流向 AWS 资源的流量。

应用程序运行器控制台

使用 App Runner 控制台创建服务时,或者稍后更新其配置时,可以选择配置传入流量。

要配置您的传入流量,请选择以下选项之一。

  • 公共终端节点:使所有服务都能通过互联网访问您的服务。默认情况下,选择公共端点

  • 私有终端节点:使您的 App Runner 服务只能在 Amazon VPC 内访问。

注意

目前,App Runner 仅支持公共端点的 IPv6。托管在亚马逊虚拟私有云(亚马逊 VPC)中的 App Runner 服务不支持 IPv6 终端节点。如果您将使用双栈公共终端节点的服务更新为有终端节点,则您的 App Runner 服务将默认仅支持来自 IPv4 端点的流量,并且无法接收来自 IPv6 端点的流量。

启用私有终端节点

通过将私有终端节点与您要访问的 Amazon VPC 的 VPC 接口终端节点关联来启用该终端节点。您可以创建新的 VPC 接口终端节点,也可以选择现有的 VPC 接口终端节点。

创建 VPC 接口终端节点
  1. 打开 App Runner 控制台,然后在 “区域” 列表中,选择您的 AWS 区域。

  2. 转到 “配置服务” 下的 “网络” 部分。

  3. 对于传入的网络流量,选择私有端点。使用 VPC 接口终端节点连接到 VCP 的选项打开。

  4. 选择创建新端点创建新 VPC 接口终端节点对话框打开。

  5. 输入 VPC 接口终端节点的名称。

  6. 从可用下拉列表中选择所需的 VPC 接口终端节点。

  7. 从下拉列表中选择安全组。添加安全组可为 VPC 接口终端节点提供额外的安全层。建议选择两个或多个安全组。如果您未选择安全组,App Runner 会向 VPC 接口终端节点分配默认安全组。确保安全组规则不会阻止想要与您的 App Runner 服务通信的资源。安全组规则必须允许与您的 App Runner 服务进行交互的资源。

    注意

    如果您的 App Runner 应用程序需要源 IP/CIDR 传入流量控制规则,则必须对私有端点使用安全组规则,而不是 WA F Web ACL。这是因为我们目前不支持将请求源 IP 数据转发到与 WAF 关联的 App Runner 私有服务。因此,与 WAF Web ACL 关联的 App Runner 私有服务的源 IP 规则不符合基于 IP 的规则。

    要了解有关基础设施安全和安全组的更多信息,包括最佳实践,请参阅 Amazon VPC 用户指南中的以下主题:使用安全组控制网络流量和控制流向 AWS 资源的流量。

  8. 从下拉列表中选择所需的子网。建议您为每个可用区至少选择两个子网,以便从中访问 App Runner 服务。

  9. (可选)选择添加新标签并输入标签键和标签值。

  10. 选择创建配置服务页面打开,顶部栏上显示成功创建 VPC 接口终端节点的消息。

选择现有 VPC 接口终端节点
  1. 打开 App Runner 控制台,然后在 “区域” 列表中,选择您的 AWS 区域。

  2. 转到 “配置服务” 下的 “网络” 部分。

  3. 对于传入的网络流量,选择私有端点。使用 VPC 接口终端节点连接到 VPC 的选项打开。将显示可用的 VPC 接口终端节点列表。

  4. 选择 VPC 接口终端节点下列出的所需 VPC 接口终端节点

  5. 选择 “下一步” 创建您的服务。App Runner 启用私有端点。

    注意

    创建服务后,如果需要,您可以选择编辑与 VPC 接口终端节点关联的安全组和子网。

    要查看私有终端节点的详细信息,请转到您的服务并展开 “配置” 选项卡下的 “网络” 部分。它显示了与私有终端节点关联的 VPC 和 VPC 接口终端节点的详细信息。

更新 VPC 接口终端节点

创建 App Runner 服务后,您可以编辑与私有终端节点关联的 VPC 接口终端节点。

注意

您无法更新终端节点名称VPC 字段。

更新 VPC 接口终端节点
  1. 打开 App Runner 控制台,然后在 “区域” 列表中,选择您的 AWS 区域。

  2. 前往您的服务,然后在左侧面板上选择网络配置

  3. 选择传入流量以查看与相应服务关联的 VPC 接口终端节点。

  4. 选择要编辑的 VPC 接口终端节点。

  5. 选择编辑。用于编辑 VPC 接口终端节点的对话框打开。

  6. 选择所需的安全组子网,然后单击 “更新”。显示 VPC 接口终端节点详细信息的页面打开,顶部栏上显示成功更新 VPC 接口终端节点的消息。

    注意

    如果您的 App Runner 应用程序需要源 IP/CIDR 传入流量控制规则,则必须对私有端点使用安全组规则,而不是 WA F Web ACL。这是因为我们目前不支持将请求源 IP 数据转发到与 WAF 关联的 App Runner 私有服务。因此,与 WAF Web ACL 关联的 App Runner 私有服务的源 IP 规则不符合基于 IP 的规则。

    要了解有关基础设施安全和安全组的更多信息,包括最佳实践,请参阅 Amazon VPC 用户指南中的以下主题:使用安全组控制网络流量和控制流向 AWS 资源的流量。

删除 VPC 接口终端节点

如果您不希望私密访问您的 App Runner 服务,则可以将传入流量设置为公开。更改为公共会移除私有终端节点,但不会删除 VPC 接口终端节点

删除 VPC 接口终端节点
  1. 打开 App Runner 控制台,然后在 “区域” 列表中,选择您的 AWS 区域。

  2. 前往您的服务,然后在左侧面板上选择网络配置

  3. 选择传入流量以查看与相应服务关联的 VPC 接口终端节点。

    注意

    在删除 VPC 接口终端节点之前,请通过更新您的服务将其从其连接的所有服务中删除。

  4. 选择删除

    如果有服务连接到 VPC 接口终端节点,则您会收到 “无法删除 VPC 接口终端节点” 消息。如果没有服务连接到 VPC 接口终端节点,您将收到一条确认删除的消息。

  5. 选择删除网络配置页面将打开传入流量,顶部栏上显示成功删除 VPC 接口终端节点的消息。

应用程序运行器 API 或 AWS CLI

您可以在 App Runner 上部署只能从 Amazon VPC 中访问的应用程序。

有关将您的服务设为私有所需的权限的信息,请参阅权限

注意

目前,App Runner 仅支持公共端点的 IPv6。托管在亚马逊虚拟私有云(亚马逊 VPC)中的 App Runner 服务不支持 IPv6 终端节点。如果您将使用双栈公共终端节点的服务更新为有终端节点,则您的 App Runner 服务将默认仅支持来自 IPv4 端点的流量,并且无法接收来自 IPv6 端点的流量。

创建与 Amazon VPC 的私有服务连接
  1. 创建 VPC 接口终端节点(一种 AWS PrivateLink 资源)以连接到 App Runner。为此,请指定要与应用程序关联的子网和安全组。以下是创建 VPC 接口终端节点的示例。

    注意

    如果您的 App Runner 应用程序需要源 IP/CIDR 传入流量控制规则,则必须对私有端点使用安全组规则,而不是 WA F Web ACL。这是因为我们目前不支持将请求源 IP 数据转发到与 WAF 关联的 App Runner 私有服务。因此,与 WAF Web ACL 关联的 App Runner 私有服务的源 IP 规则不符合基于 IP 的规则。

    要了解有关基础设施安全和安全组的更多信息,包括最佳实践,请参阅 Amazon VPC 用户指南中的以下主题:使用安全组控制网络流量和控制流向 AWS 资源的流量。

    aws ec2 create-vpc-endpoint --vpc-endpoint-type: Interface --service-name: com.amazonaws.us-east-1.apprunner.requests --subnets: subnet1, subnet2 --security-groups: sg1
  2. 通过 CLI 使用CreateServiceUpdateServiceApp Runner API 操作引用 VPC 接口终端节点。将您的服务配置为不可公开访问。FalseNetworkConfiguration参数的IngressConfiguration成员中设置IsPubliclyAccessible为。以下是引用 VPC 接口终端节点的示例。

    aws apprunner create-service --network-configuration: ingress-configuration=<ingress_configuration> --service-name: com.amazonaws.us-east-1.apprunner.requests --source-configuration: <source_configuration> # Ingress Configuration { "IsPubliclyAccessible": False }
  3. 调用 create-vpc-ingress-connection API 操作为 App Runner 创建 VPC 入口连接资源,并将其与您在上一步中创建的 VPC 接口终端节点相关联。它会返回一个用于访问指定 VPC 中的服务的域名。以下是创建 VPC 入口连接资源的示例。

    例 请求
    aws apprunner create-vpc-ingress-connection --service-arn: <apprunner_service_arn> --ingress-vpc-configuration: {"VpcId":<vpc_id>, "VpceId": <vpce_id>} --vpc-ingress-connection-name: <vic_connection_name>
    例 响应
    { "VpcIngressConnectionArn": <vpc_ingress_connection_arn>, "VpcIngressConnectionName": <vic_connection_name>, "ServiceArn": <apprunner_service_arn>, "Status": "PENDING_CREATION", "AccountId": <connection_owner_id>, "DomainName": <domain_name_associated_with_vpce>, "IngressVpcConfiguration": {"VpcId":<vpc_id>, "VpceId":<vpce_id>}, "CreatedAt": <date_created> }

更新 VPC 入口连接

您可以更新 VPC 入口连接资源。VPC 入口连接必须处于以下状态之一才能更新:

  • AVAILABLE

  • 创建失败

  • 更新失败

以下是更新 VPC 入口连接资源的示例。

例 请求
aws apprunner update-vpc-ingress-connection --vpc-ingress-connection-arn: <vpc_ingress_connection_arn>
例 响应
{ "VpcIngressConnectionArn": <vpc_ingress_connection_arn>, "VpcIngressConnectionName": <vic_connection_name>, "ServiceArn": <apprunner_service_arn>, "Status": "FAILED_UPDATE", "AccountId": <connection_owner_id>, "DomainName": <domain_name_associated_with_vpce>, "IngressVpcConfiguration": {"VpcId":<vpc_id>, "VpceId":<vpce_id>}, "CreatedAt": <date_created> }

删除 VPC 入口连接

如果您不再需要与 Amazon VPC 的私有连接,则可以删除 VPC 入口连接资源。

VPC 入口连接必须处于以下状态之一才能删除:

  • AVAILABLE

  • 创建失败

  • 更新失败

  • 删除失败

以下是删除 VPC 入口连接的示例

例 请求
aws apprunner delete-vpc-ingress-connection --vpc-ingress-connection-arn: <vpc_ingress_connection_arn>
例 响应
{ "VpcIngressConnectionArn": <vpc_ingress_connection_arn>, "VpcIngressConnectionName": <vic_connection_name>, "ServiceArn": <apprunner_service_arn>, "Status": "PENDING_DELETION", "AccountId": <connection_owner_id>, "DomainName": <domain_name_associated_with_vpce>, "IngressVpcConfiguration": {"VpcId":<vpc_id>, "VpceId":<vpce_id>}, "CreatedAt": <date_created>, "DeletedAt": <date_deleted> }

使用以下 App Runner API 操作来管理服务的私有入站流量。

有关使用 App Runner API 的更多信息,请参阅 App Runner API 参考指南