使用 存取無輸入EC2執行個體 AWS Systems Manager - AWS Cloud9

AWS Cloud9 不再提供給新客戶。的現有客戶 AWS Cloud9 可以繼續正常使用服務。進一步了解

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 存取無輸入EC2執行個體 AWS Systems Manager

為EC2環境建立的「無輸入EC2執行個體」 AWS Cloud9 可連線至其 Amazon EC2執行個體,而不需要開啟該執行個體上的任何傳入連接埠。您可以使用主控台、命令列介面或AWS CloudFormation 堆疊 建立EC2環境時,選取禁止輸入選項。如需如何使用主控台或命令列介面建立環境的詳細資訊,請參閱 步驟 1:建立環境

重要

使用 Systems Manager Session Manager 管理EC2執行個體的連線,無需支付額外費用。

主控台的建立環境頁面中選取環境類型時,您可以選擇需要傳入連線的新EC2執行個體,或不需要下列條件的新無輸入EC2執行個體:

  • 新EC2執行個體 – 使用此設定時,執行個體的安全群組具有允許傳入網路流量的規則。傳入網路流量受限於已核准進行 AWS Cloud9 連線的 IP 地址。開放的傳入連接埠 AWS Cloud9 可讓您SSH連線至其執行個體。如果您使用 AWS Systems Manager Session Manager,則可以透過 存取您的 Amazon EC2執行個體,SSM而無需開啟傳入連接埠 (不傳入)。此方法僅適用於新的 Amazon EC2執行個體。如需詳細資訊,請參閱針對EC2環境使用 Systems Manager 的優點

  • 現有運算 – 透過此設定,會存取現有的 Amazon EC2執行個體,該執行個體需要該執行個體必須具有傳入安全群組規則的SSH登入詳細資訊。如果您選取此選項,則會自動建立服務角色。您也可以在設定畫面底部的備註中檢視服務角色名稱。

如果使用 建立環境AWS CLI,您可以在呼叫 create-environment-ec2命令時設定 --connection-type CONNECT_SSM選項,以設定無輸入EC2執行個體。如需詳細了解如何建立必要的服務角色和執行個體描述檔,請參閱 使用 管理 Systems Manager 的執行個體設定檔 AWS CLI

建立使用無輸入EC2執行個體的環境後,請確認下列事項:

針對EC2環境使用 Systems Manager 的優點

允許 Session Manager 處理 AWS Cloud9 與其EC2執行個體之間的安全連線,可提供兩個主要優點:

  • 不需要為執行個體開啟傳入連接埠

  • 提供在公有或私有子網路中啟動執行個體的選項

No open inbound ports

AWS Cloud9 與其EC2執行個體之間的安全連線由 Session Manager 處理。Session Manager 是完全受管的 Systems Manager 功能,可讓您 AWS Cloud9 連線至其EC2執行個體,而不需要開啟傳入連接埠。

重要

只有在建立新EC2環境時,才能使用 Systems Manager 進行無輸入連線的選項。

Session Manager 工作階段啟動後,就會與目標執行個體建立連線。現在連線完成後,環境就可以透過 Systems Manager 服務與執行個體互動。Systems Manager 服務會透過 Systems Manager 代理程式 ( SSM代理程式 ) 與執行個體通訊。

根據預設,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.ssm com.amazonaws.region.ec2messages 、 和 com.amazonaws.region.ssmmessages 。如需詳細資訊,請參閱 AWS Systems Manager 使用者指南 中的為 Systems Manager 建立VPC端點

重要

目前,如果您環境的EC2執行個體啟動到私有子網路,則無法使用AWS 受管臨時憑證來允許EC2環境代表 AWS 實體 (例如IAM使用者) 存取 AWS 服務。

公有子網路

如果您的開發環境使用 SSM 來存取EC2執行個體,請確保執行個體由其啟動的公有子網路指派公有 IP 地址。若要這麼做,您可以指定自己的 IP 地址或啟用公有 IP 地址的自動指派功能。如需修改自動指派 IP 設定的相關步驟,請參閱 Amazon VPC使用者指南 中的 中的 IP 定址VPC

如需為環境執行個體設定私有和公有子網路的詳細資訊,請參閱 為 建立子網路 AWS Cloud9

管理 Systems Manager 許可

根據預設,Systems Manager 沒有在EC2執行個體上執行動作的許可。透過 AWS Identity and Access Management (IAM) 執行個體設定檔提供存取權。(執行個體設定檔是在啟動時將IAM角色資訊傳遞給EC2執行個體的容器。)

當您使用 AWS Cloud9 主控台建立無輸入EC2執行個體時,系統會自動為您建立服務角色 (AWSCloud9SSMAccessRole) 和IAM執行個體描述檔 (AWSCloud9SSMInstanceProfile)。(您可以在 IAM Management 主控台AWSCloud9SSMAccessRole中檢視 。 IAM 主控台中不會顯示執行個體設定檔。)

重要

如果您第一次使用 建立無輸入EC2環境 AWS CLI,則必須明確定義所需的服務角色和執行個體設定檔。如需詳細資訊,請參閱使用 管理 Systems Manager 的執行個體設定檔 AWS CLI

重要

如果您正在建立 AWS Cloud9 環境,並使用 Amazon EC2 Systems Manager 連接 AWSCloud9AdministratorAWSCloud9User政策,您還必須連接具有特定IAM許可的自訂政策,請參閱 建立SSM環境的自訂IAM政策。這是因為 AWSCloud9AdministratorAWSCloud9User政策的許可問題。

如需其他安全保護, AWS Cloud9 服務連結角色 在其AWSCloud9ServiceRolePolicy政策中AWSServiceRoleforAWSCloud9具有PassRole限制。當您將IAM角色傳遞給 服務時,該服務會允許 擔任角色並代表您執行動作。在此情況下, PassRole許可可確保 只能將AWSCloud9SSMAccessRole角色 (及其許可) AWS Cloud9 傳遞給EC2執行個體。這會將可在EC2執行個體上執行的動作限制為只有 所需的動作 AWS Cloud9。

注意

如果您不再需要使用 Systems Manager 存取執行個體,您可以刪除 AWSCloud9SSMAccessRole 服務角色。如需詳細資訊,請參閱 IAM 使用者指南 中的刪除角色或執行個體設定檔

使用 管理 Systems Manager 的執行個體設定檔 AWS CLI

您也可以使用 建立無輸入EC2環境 AWS CLI。當您呼叫 create-environment-ec2 時,需在 CONNECT_SSM 設定 --connection-type 選項。

如果您使用此選項,AWSCloud9SSMAccessRole 服務角色和 AWSCloud9SSMInstanceProfile 不會自動建立。因此,若要建立必要的服務設定檔和執行個體設定檔,請執行下列其中一項操作:

  • 使用主控台建立EC2環境,一旦 具有AWSCloud9SSMAccessRole服務角色,之後就會自動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

讓使用者存取由 Session Manager 管理的執行個體

若要開啟透過 Systems Manager 連線至EC2執行個體 AWS Cloud9 的環境,使用者必須具有API操作 的許可StartSession。此操作會啟動 Session Manager 工作階段的受管EC2執行個體連線。您可以使用 AWS Cloud9 特定受管政策 (建議) 或編輯IAM政策並新增必要的許可,為使用者提供存取權。

方法 描述

使用 AWS Cloud9特定的 受管政策

建議使用 AWS 受管政策,允許使用者存取 Systems Manager 管理的EC2執行個體。受管政策為標準 AWS Cloud9 使用案例提供一組許可,並且可以輕鬆連接到IAM實體。

所有受管政策也包含執行StartSessionAPI操作的許可。以下是 特有的受管政策 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 環境,並使用 Amazon EC2 Systems Manager 連接 AWSCloud9AdministratorAWSCloud9User政策,您還必須連接具有特定IAM許可的自訂政策,請參閱 建立SSM環境的自訂IAM政策。這是因為 AWSCloud9AdministratorAWSCloud9User政策的許可問題。

如需詳細資訊,請參閱AWS 的 受管政策 AWS Cloud9

編輯IAM政策並新增必要的政策陳述式

若要編輯現有政策,您可以新增 StartSession 的許可API。若要使用 AWS Management Console 或 編輯政策 AWS CLI,請遵循 IAM 使用者指南 中的編輯IAM政策所提供的指示。

編輯政策時,請新增允許ssm:startSessionAPI操作執行的 policy statement(請參閱下文)。

您可以使用下列許可來執行StartSessionAPI操作。ssm:resourceTag 條件索引鍵指定 Session Manager 工作階段可以針對任何執行個體 (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執行個體的 Session Manager 工作階段。如需詳細資訊,請參閱將 Systems Manager 許可新增至IAM政策

使用 AWS CloudFormation 範本建立服務角色和執行個體設定檔

您需要建立服務角色AWSCloud9SSMAccessRole和執行個體設定檔AWSCloud9SSMInstanceProfile,讓 Systems Manager 能夠管理支援開發環境的EC2執行個體。

如果您先前已建立 AWSCloud9SSMInstanceProfile AWSCloud9SSMAccessRole,並透過建立無輸入EC2環境with the console執行 AWS CLI 命令 ,則服務角色和執行個體設定檔已可供使用。

注意

假設您嘗試為無輸入EC2環境建立 AWS CloudFormation 堆疊,但您尚未先建立所需的服務角色和執行個體描述檔。然後,不會建立堆疊,並顯示下列錯誤訊息:

帳戶中 AWSCloud9SSMInstanceProfile 不存在執行個體設定檔。

第一次使用 建立無輸入EC2環境時 AWS CloudFormation,您可以在範本中將 AWSCloud9SSMAccessRoleAWSCloud9SSMInstanceProfile 定義為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政策

在範本 中定義服務角色和執行個體設定檔之後,請確定建立堆疊的IAM實體具有啟動 Session Manager 工作階段的許可。 AWS CloudFormation工作階段是使用 Session Manager 與EC2執行個體建立的連線。

注意

如果您未在建立無輸入EC2環境的堆疊之前新增啟動 Session Manager 工作階段的許可,則會傳回AccessDeniedException錯誤。

呼叫 ,將下列許可新增至IAM實體的政策 AWS CloudFormation。

{ "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 儲存貯體包含要下載的相依性時,才允許存取該儲存貯體。

注意

您可以使用 AWS Management Console AWS CLI、 或 Amazon VPC 建立和設定VPC端點API。下列程序說明如何使用主控台介面建立VPC端點。

建立和設定 Amazon S3 的VPC端點

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

  2. 在導覽列中選擇 Endpoints (端點)。

  3. Endpoints (端點) 頁面,選擇 Create Endpoint (建立端點)。

  4. Create Endpoint (建立端點)頁面的搜尋欄位中輸入「s3」,然後按下 Return (傳回) 以列出目前的 AWS 區域中可用的 Amazon S3 的端點。

  5. 從傳回的 Amazon S3 端點清單中,選取 Gateway (閘道) 類型。

  6. 接下來,選擇VPC包含您環境EC2執行個體的 。

  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 元素,以您的 AWS 區域中可用的儲存貯體實際的名稱取代 {bucket_name}。例如,如果您 AWS Cloud9 在歐洲 (愛爾蘭) 區域使用 ,請指定以下內容:"Resource": "arn:aws:s3:::static-eu-west-1-prod-static-hld3vzaf7c4h/content/dependencies/

    下表列出可用 AWS 區域 AWS Cloud9 的儲存貯體名稱。

    AWS Cloud9 區域中的 Amazon 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

    亞太區域 (孟買)

    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. 選擇建立端點

    如果您已提供正確的組態資訊,訊息會顯示已建立的端點的 ID。

  10. 若要檢查您的 IDE 是否可以存取 Amazon S3 儲存貯體,請在選單列上選擇視窗 新終端機,以啟動終端機工作階段。接著執行以下命令,將 {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 是一種技術,可用來APIs使用私有 IP 地址私下存取 Amazon EC2和 Systems Manager。若要設定VPC端點以使用 Systems Manager,請遵循此知識中心資源 提供的指示。

警告

假設您可以設定一個不允許傳入或傳出網路流量的安全群組。然後,支援 AWS Cloud9 IDE的EC2執行個體沒有網際網路存取權。您需要為 建立 Amazon S3 端點VPC,以允許存取信任 S3 儲存貯體中包含的相依性。此外,有些 AWS 服務,例如 AWS Lambda,可能無法在沒有網際網路存取的情況下如預期般運作。

使用 AWS PrivateLink時,透過VPC端點處理的每個 GB 都會產生資料處理費用。這與流量的來源或目的地無關。如需詳細資訊,請參閱 AWS PrivateLink 定價