选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用访问无入口实例 EC2 AWS Systems Manager

聚焦模式
使用访问无入口实例 EC2 AWS Systems Manager - AWS Cloud9

AWS Cloud9 不再向新客户提供。 AWS Cloud9 的现有客户可以继续正常使用该服务。了解更多

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

AWS Cloud9 不再向新客户提供。 AWS Cloud9 的现有客户可以继续正常使用该服务。了解更多

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

为 EC2 环境创建的 “无入口 EC2 实例” 可以 AWS Cloud9 连接到其 Amazon 实例,而无需在该 EC2 实例上打开任何入站端口。在使用控制台、命令行界面或堆栈创建 EC2 环境时,您可以选择 no-ingress 选项。AWS CloudFormation有关如何使用控制台或命令行界面创建环境的更多信息,请参阅步骤 1:创建环境

重要

使用 Systems Manager 会话管理器管理与您的 EC2 实例的连接无需支付额外费用。

在控制台的 “创建环境” 页面中选择环境类型时,您可以选择需要入站连接的新 EC2 实例或不需要以下内容的新无入口 EC2 实例:

  • 新 EC2实例-通过此设置,实例的安全组具有允许传入网络流量的规则。将传入的网络流量限制为已获批连接 AWS Cloud9 的 IP 地址。开放的入站端口 AWS Cloud9 允许通过 SSH 连接到其实例。如果您使用 S AWS ystems Manager 会话管理器,则无需打开入站端口(无入口)即可通过 SSM 访问您的 Amazon EC2 实例。此方法仅适用于新的 Amazon EC2 实例。有关更多信息,请参阅 在 EC2 环境中使用 Systems Manager 的好处

  • 现有计算-使用此设置,可以访问需要 SSH 登录详细信息的现有 Amazon EC2 实例,该实例必须具有入站安全组规则。如果您选择此选项,则会自动创建服务角色。您可以在设置屏幕底部的备注中查看服务角色的名称。

如果使用创建环境 AWS CLI,则可以通过在调用命令时设置--connection-type CONNECT_SSM选项来配置无入口 EC2 实例。create-environment-ec2有关创建所需的服务角色和实例配置文件的更多信息,请参阅 使用管理 Systems Manager 的实例配置文件 AWS CLI

创建完使用无入口 EC2 实例的环境后,请确认以下内容:

在 EC2 环境中使用 Systems Manager 的好处

允许 Session Manager 处理 AWS Cloud9 与其 EC2 实例之间的安全连接有两个主要好处:

  • 无需为实例打开入站端口

  • 将实例启动到公有子网或私有子网内的选项

No open inbound ports

与其 EC2 实例 AWS Cloud9 之间的安全连接由会话管理器处理。会话管理器是一项完全托管的 S AWS Cloud9 ystems Manager 功能,无需打开入站端口即可连接到其 EC2 实例。

重要

目前,只有在创建新 EC2 环境时,才可以使用使用 Systems Manager 进行无入口连接的选项。

随着会话管理器会话的启动,将建立与目标实例的连接。建立连接后,环境现在可以通过 Systems Manager 服务与实例进行交互。Systems Manager 服务通过 Systems Manager Agent (SSM Agent) 与实例交互。

默认情况下,SSM 代理安装在 EC2 环境使用的所有实例上。

Private/public subnets

当在 Network settings (advanced) 网络设置(高级)部分中为实例选择子网时,如果环境实例通过 Systems Manager 访问,则可以选择私有子网或公有子网。

为您的环境选择一个新的无入口 EC2 实例

私有子网

对于私有子网,请确保实例仍然可以连接到 SSM 服务。此操作可以通过在公有子网中设置 NAT 网关或者为 Systems Manager 配置 VPC 终端节点完成。

使用 NAT 网关的优点在于它可以防止互联网启动到私有子网中的实例的连接。为您的环境的实例分配了一个私有 IP 地址,而不是公有 IP 地址。因此,NAT 网关会将流量从实例转发到互联网或其他 AWS 服务,然后将响应发送回实例。

对于 VPC 选项,请为 Systems Manager 创建至少三个所需的接口端点com.amazonaws.region.ssmcom.amazonaws.region.ec2messagescom.amazonaws.region.ssmmessages。有关更多信息,请参阅 AWS Systems Manager 用户指南中的创建 Systems Manager 的 VPC 终端节点

重要

目前,如果您的环境 EC2 实例启动到私有子网,则您不能使用AWS 托管临时证书允许 EC2 环境代表 AWS 实体(例如 IAM 用户)访问 AWS 服务。

公有子网

如果您的开发环境使用 SSM 访问 EC2 实例,请确保启动实例的公有子网为该实例分配公有 IP 地址。为此,您可以指定自己的 IP 地址或启用公有 IP 地址的自动分配。有关修改自动分配 IP 设置所涉及的步骤,请参阅 Amazon VPC 用户指南中的您的 VPC 中的 IP 地址

有关为环境实例配置私有子网和公有子网的更多信息,请参阅 为创建子网 AWS Cloud9

与其 EC2 实例 AWS Cloud9 之间的安全连接由会话管理器处理。会话管理器是一项完全托管的 S AWS Cloud9 ystems Manager 功能,无需打开入站端口即可连接到其 EC2 实例。

重要

目前,只有在创建新 EC2 环境时,才可以使用使用 Systems Manager 进行无入口连接的选项。

随着会话管理器会话的启动,将建立与目标实例的连接。建立连接后,环境现在可以通过 Systems Manager 服务与实例进行交互。Systems Manager 服务通过 Systems Manager Agent (SSM Agent) 与实例交互。

默认情况下,SSM 代理安装在 EC2 环境使用的所有实例上。

管理 Systems Manager 权限

默认情况下,Systems Manager 无权对 EC2 实例执行操作。通过 AWS Identity and Access Management (IAM) 实例配置文件提供访问权限。(实例配置文件是在启动时将 IAM 角色信息传递给 EC2 实例的容器。)

当您使用 AWS Cloud9 控制台创建无入口 EC2 实例时,系统会自动为您创建服务角色 (AWSCloud9SSMAccessRole) 和 IAM 实例配置文件 (AWSCloud9SSMInstanceProfile)。(您可以在 IAM 管理控制台中查看 AWSCloud9SSMAccessRole。实例配置文件不会显示在 IAM 控制台中。)

重要

如果您首次使用创建无入口 EC2 环境 AWS CLI,则必须明确定义所需的服务角色和实例配置文件。有关更多信息,请参阅 使用管理 Systems Manager 的实例配置文件 AWS CLI

重要

如果您正在创建 AWS Cloud9 环境并使用附加AWSCloud9AdministratorAWSCloud9User策略的 Amazon S EC2 ystems Manager,则还必须附加具有特定 IAM 权限的自定义策略,请参阅用于创建 SSM 环境的自定义 IAM 策略。这是由于 AWSCloud9AdministratorAWSCloud9User 策略存在权限问题。

为了提供额外的安全保护, AWS Cloud9 服务相关角色的AWSCloud9ServiceRolePolicy策略中包含了PassRole限制。AWSServiceRoleforAWSCloud9在您将 IAM 角色传递到服务时,则允许该服务代入该角色并代表您执行操作。在这种情况下,该PassRole权限可确保 AWS Cloud9 只能将AWSCloud9SSMAccessRole角色(及其权限)传递给 EC2 实例。这就限制了可以对 EC2 实例执行的操作仅限于所要求的 AWS Cloud9操作。

注意

如果您不再需要使用 Systems Manager 来访问实例,您可以删除 AWSCloud9SSMAccessRole 服务角色。有关更多信息,请参阅 IAM 用户指南中的删除角色或实例配置文件

使用管理 Systems Manager 的实例配置文件 AWS CLI

您还可以使用创建无入口 EC2 环境。 AWS CLI当您调用 create-environment-ec2 时,将 --connection-type 选项设置为 CONNECT_SSM

如果您使用此选项,则 AWSCloud9SSMAccessRole 服务角色和 AWSCloud9SSMInstanceProfile 不会自动创建。因此,要创建所需的服务配置文件和实例配置文件,请执行下列操作之一:

  • 拥有AWSCloud9SSMAccessRole服务角色后使用控制台创建 EC2 环境,之后会自动AWSCloud9SSMInstanceProfile创建。创建服务角色和实例配置文件后,便可用于使用创建的任何其他 EC2 环境 AWS CLI。

  • 运行以下 AWS CLI 命令以创建服务角色和实例配置文件。

    aws iam create-role --role-name AWSCloud9SSMAccessRole --path /service-role/ --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": ["ec2.amazonaws.com","cloud9.amazonaws.com"] },"Action": "sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSCloud9SSMAccessRole --policy-arn arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile aws iam create-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --path /cloud9/ aws iam add-role-to-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --role-name AWSCloud9SSMAccessRole

授予用户访问由会话管理器管理的实例的权限

要打开通过 Systems Manager 连接到 EC2 实例的 AWS Cloud9 环境,用户必须拥有 API 操作权限StartSession。此操作启动与托管 EC2 实例的连接,以进行会话管理器会话。您可以使用 AWS Cloud9 特定的托管策略(推荐)或编辑 IAM 策略并添加必要的权限来授予用户访问权限。

方法 描述

使用 AWS Cloud9特定的托管策略

我们建议使用 AWS 托管策略允许用户访问由 Systems Manager 管理的 EC2 实例。托管策略为标准 AWS Cloud9 用例提供了一组权限,并且可以轻松地附加到 IAM 实体。

所有托管式策略还包括运行 StartSession API 操作的权限。以下是专用于的托管策略 AWS Cloud9:

  • AWSCloud9Administrator (arn:aws:iam::aws:policy/AWSCloud9Administrator)

  • AWSCloud9User (arn:aws:iam::aws:policy/AWSCloud9User)

  • AWSCloud9EnvironmentMember (arn:aws:iam::aws:policy/AWSCloud9EnvironmentMember)

重要

如果您正在创建 AWS Cloud9 环境并使用附加AWSCloud9AdministratorAWSCloud9User策略的 Amazon S EC2 ystems Manager,则还必须附加具有特定 IAM 权限的自定义策略,请参阅用于创建 SSM 环境的自定义 IAM 策略。这是由于 AWSCloud9AdministratorAWSCloud9User 策略存在权限问题。

有关更多信息,请参阅 AWS 的托管策略 AWS Cloud9

编辑 IAM 策略并添加所需的策略语句

要编辑现有策略,您可以添加对于 StartSession API 的权限。要使用 AWS Management Console 或编辑策略 AWS CLI,请按照 IAM 用户指南编辑 IAM 策略提供的说明进行操作。

编辑策略时,添加允许要运行的 ssm:startSession API 操作的 policy statement(请参阅下面的内容)。

您可以使用以下权限运行 StartSession API 操作。ssm:resourceTag条件键指定可以为任何实例 (Resource: arn:aws:ec2:*:*:instance/*) 启动会话管理器会话,前提是该实例是 AWS Cloud9 EC2 开发环境 (aws:cloud9:environment)。

注意

以下托管式策略还包括这些策略语句:AWSCloud9AdministratorAWSCloud9UserAWSCloud9EnvironmentMember

{ "Effect": "Allow", "Action": "ssm:StartSession", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ssm:resourceTag/aws:cloud9:environment": "*" }, "StringEquals": { "aws:CalledViaFirst": "cloud9.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ssm:*:*:document/*" ] }

AWS CloudFormation 用于创建无入口环境 EC2

使用AWS CloudFormation 模板定义无入口的 Amazon EC2 开发环境时,请在创建堆栈之前执行以下操作:

  1. 创建 AWSCloud9SSMAccessRole 服务角色和 AWSCloud9SSMInstanceProfile 实例配置文件。有关更多信息,请参阅 使用 AWS CloudFormation 模板创建服务角色和实例配置文件

  2. 更新调用 IAM 实体的策略 AWS CloudFormation。这样,实体就可以启动连接到 EC2 实例的会话管理器会话。有关更多信息,请参阅 将 Systems Manager 权限添加到 IAM 策略

使用 AWS CloudFormation 模板创建服务角色和实例配置文件

您需要创建服务角色AWSCloud9SSMAccessRole和实例配置文件,AWSCloud9SSMInstanceProfile以使 Systems Manager 能够管理支持您的开发环境的 EC2 实例。

如果您之前创建AWSCloud9SSMAccessRoleAWSCloud9SSMInstanceProfile通过创建无入口 EC2 环境with the console运行 AWS CLI 命令,则服务角色和实例配置文件已经可供使用。

注意

假设您尝试为无入口 EC2 环境创建 AWS CloudFormation 堆栈,但没有先创建所需的服务角色和实例配置文件。那么,不会创建堆栈,并显示以下错误消息:

账户中不存在实例 AWSCloud9SSMInstance配置文件。

首次使用创建无入口 EC2 环境时 AWS CloudFormation,可以在模板中将AWSCloud9SSMAccessRole和定义AWSCloud9SSMInstanceProfile为 IAM 资源。

摘自示例模板的此内容显示了如何定义这些资源。该AssumeRole操作会返回安全证书,这些证书提供对 AWS Cloud9 环境及其 EC2 实例的访问权限。

AWSTemplateFormatVersion: 2010-09-09 Resources: AWSCloud9SSMAccessRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - cloud9.amazonaws.com - ec2.amazonaws.com Action: - 'sts:AssumeRole' Description: 'Service linked role for AWS Cloud9' Path: '/service-role/' ManagedPolicyArns: - arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile RoleName: 'AWSCloud9SSMAccessRole' AWSCloud9SSMInstanceProfile: Type: "AWS::IAM::InstanceProfile" Properties: InstanceProfileName: AWSCloud9SSMInstanceProfile Path: "/cloud9/" Roles: - Ref: AWSCloud9SSMAccessRole

将 Systems Manager 权限添加到 IAM 策略

AWS CloudFormation 模板定义服务角色和实例配置文件后,请确保创建堆栈的 IAM 实体具有启动会话管理器会话的权限。会话是使用会话管理器与 EC2 实例建立的连接。

注意

如果您在为无入口 EC2 环境创建堆栈之前没有添加启动会话管理器会话的权限,则会AccessDeniedException返回错误。

通过调用 AWS CloudFormation,向 IAM 实体的策略添加以下权限。

{ "Effect": "Allow", "Action": "ssm:StartSession", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ssm:resourceTag/aws:cloud9:environment": "*" }, "StringEquals": { "aws:CalledViaFirst": "cloudformation.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ssm:*:*:document/*" ] }

为 Amazon S3 配置 VPC 终端节点以下载依赖项

如果您 AWS Cloud9 环境的 EC2 实例无法访问互联网,请为指定的 Amazon S3 存储桶创建 VPC 终端节点。此存储桶包含保留 IDE 所需的依赖项 up-to-date。

为 Amazon S3 设置 VPC 端点还涉及自定义访问策略。您希望访问策略仅允许访问包含要下载的依赖项的可信 S3 桶。

注意

您可以使用、或 Amazon VPC API 创建和配置 VPC 终端节点。 AWS Management Console AWS CLI以下过程说明如何使用控制台界面创建 VPC 端点。

为 Amazon S3 创建和配置 VPC 终端节点

  1. 在中 AWS Management Console,前往 Amazon VPC 的控制台页面。

  2. 在导航窗格中,选择 Endpoints(端点)

  3. Endpoints(端点)页面中,选择 Create Endpoint(创建端点)

  4. Create Endpoint(创建端点)页面中,在搜索字段中输入“s3”,然后按 Return(返回)以列出 Amazon S3 在当前 AWS 区域内可用的端点。

  5. 从返回的 Amazon S3 端点列表中选择 Gateway(网关)类型。

  6. 接下来,选择包含您的环境 EC2 实例的 VPC。

  7. 现在选择 VPC 的路由表。这样,关联的子网可以访问端点。您的环境 EC2 实例位于其中一个子网中。

  8. Policy(策略)部分,选择 Custom(自定义)选项,并将标准策略替换为以下策略。

    { "Version": "2008-10-17", "Statement": [ { "Sid": "Access-to-C9-bucket-only", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::{bucket_name}/content/dependencies/*" } ] }

    对于 Resource 元素,将 {bucket_name} 替换为您的 AWS 区域内可用的桶的实际名称。例如,如果您 AWS Cloud9 在欧洲(爱尔兰)地区使用,则需要指定以下内容:"Resource": "arn:aws:s3:::static-eu-west-1-prod-static-hld3vzaf7c4h/content/dependencies/

    下表列出了可用 AWS 区域 位置 AWS Cloud9 的存储桶名称。

    区域中的 AWS Cloud9 亚马逊 S3 存储桶
    AWS 区域 存储桶名称

    美国东部(俄亥俄州)

    static-us-east-2-prod-static-1c3sfcvf9hy4m

    美国东部(弗吉尼亚州北部)

    static-us-east-1-prod-static-mft1klnkc4hl

    美国西部(俄勒冈州)

    static-us-west-2-prod-static-p21mksqx9zlr

    美国西部(加利福尼亚北部)

    static-us-west-1-prod-static-16d59zrrp01z0

    非洲(开普敦)

    static-af-south-1-prod-static-v6v7i5ypdppv

    亚太地区(香港)

    static-ap-east-1-prod-static-171xhpfkrorh6

    Asia Pacific (Mumbai)

    static-ap-south-1-prod-static-ykocre202i9d

    亚太地区(大阪)

    static-ap-northeast-3-prod-static-ivmxqzrx2ioi

    亚太地区(首尔)

    static-ap-northeast-2-prod-static-1wxyctlhwiajm

    亚太地区(新加坡)

    static-ap-southeast-1-prod-static-13ibpyrx4vk6d

    亚太地区(悉尼)

    static-ap-southeast-2-prod-static-1cjsl8bx27rfu

    亚太地区(东京)

    static-ap-northeast-1-prod-static-4fwvbdisquj8

    加拿大(中部)

    static-ca-central-1-prod-static-g80lpejy486c

    欧洲地区(法兰克福)

    static-eu-central-1-prod-static-14lbgls2vrkh

    欧洲地区(爱尔兰)

    static-eu-west-1-prod-static-hld3vzaf7c4h

    欧洲地区(伦敦)

    static-eu-west-2-prod-static-36lbg202837x

    欧洲地区(米兰)

    static-eu-south-1-prod-static-1379tzkd3ni7d

    欧洲地区(巴黎)

    static-eu-west-3-prod-static-1rwpkf766ke58

    欧洲地区(斯德哥尔摩)

    static-eu-north-1-prod-static-1qzw982y7yu7e

    中东(巴林)

    static-me-south-1-prod-static-gmljex38qtqx

    南美洲(圣保罗)

    static-sa-east-1-prod-static-1cl8k0y7opidt

    以色列(特拉维夫)

    static-il-central-1-prod-static-k02vrnhcesue

  9. 选择 Create Endpoint(创建端点)。

    如果您提供了正确的配置信息,则会出现一条消息,显示已创建的端点的 ID。

  10. 要检查您的 IDE 是否可以访问 Amazon S3 存储桶,请在菜单栏选择 Window(窗口)> New Terminal(新建终端)以启动终端会话。然后,运行下面的命令,同时将 {bucket_name} 替换为您的区域的桶名称。

    ping {bucket_name}.s3.{region}.amazonaws.com.

    例如,如果您在美国东部(弗吉尼亚州北部)区域为 S3 桶创建了端点,则运行以下命令。

    ping static-us-east-1-prod-static-mft1klnkc4hl.s3.us-east-1.amazonaws.com

    如果 ping 得到响应,则确认 IDE 可以访问该存储桶及其依赖项。

有关此功能的更多信息,请参阅AWS PrivateLink指南中的 Amazon S3 终端节点

为私有连接配置 VPC 终端节点

当您将实例启动到带有 access using Systems Manager(使用 Systems Manager 访问)选项的子网内,则其安全组没有允许传入网络流量的入站规则。但是,安全组具有出站规则,以允许来自实例的出站流量。这是下载使 AWS Cloud9 IDE 保持最新状态所需的软件包和库所必需的。

要防止实例的出站和入站流量,请为 Systems Manager 创建和配置 Amazon VPC 端点。使用接口 VPC 终端节点(接口终端节点),您可以连接到由提供支持的服务AWS PrivateLink。 AWS PrivateLink 是一种可用于使用私有 IP 地址私有访问亚马逊 EC2 和 System APIs s Manager 的技术。要将 VPC 终端节点配置为使用 Systems Manager,请按照此知识中心资源提供的说明进行操作。

警告

假设您配置的安全组不允许入站或出站网络流量。然后,支持你的 AWS Cloud9 IDE 的 EC2 实例无法访问互联网。您需要创建一个适用于您的 VPC 的 Amazon S3 端点,以允许访问包含在可信 S3 桶中的依赖项。此外,如果没有互联网接入 AWS 服务 AWS Lambda,有些内容(例如)可能无法按预期运行。

使用 AWS PrivateLink,通过 VPC 终端节点处理的每 GB 会产生数据处理费用。这与流量的来源或目的地无关。有关更多信息,请参阅 AWS PrivateLink 定价

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。