本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS Systems Manager 存取無輸入的 EC2 執行個體
為 EC2 環境建立的「無輸入 EC2 執行個體」可使 AWS Cloud9 與其 Amazon EC2 執行個體連線,無需在該執行個體上開啟任何傳入連接埠。建立 EC2 環境時,您可以使用主控台、命令列界面或 AWS CloudFormation 堆疊選取無輸入選項。
重要
使用 Systems Manager Session Manager 來管理 EC2 執行個體的連線,不需要額外付費。
在主控台的 Create environment (建立環境) 頁面選取環境類型時,您可以選擇需要傳入連線的新 EC2 執行個體,或是新的無輸入 EC2 執行個體,其不需要下列項目:
-
New EC2 instance (新的 EC2 執行個體) – 使用此設定時,執行個體的安全群組會有允許傳入聯網流量的規則。傳入網路流量受限於已核准進行 AWS Cloud9 連線的 IP 地址。開放的傳入連接埠可讓 AWS Cloud9 透過 SSH 連線到其執行個體。若您使用 AWS Systems Manager Session Manager,您可以透過 SSM 存取 Amazon EC2 執行個體,而無需開啟傳入連接埠 (無輸入)。此方法僅適用於新的 Amazon EC2 執行個體。如需詳細資訊,請參閱為 EC2 環境使用 Systems Manager 的好處。
-
Existing compute (現有運算) – 透過此設定,可存取需要 SSH 登入詳細資訊的現有 Amazon EC2 執行個體,而 Amazon EC2 執行個體必須具有輸入安全群組規則。如果您選取此選項,則會自動建立服務角色。您也可以在設定畫面底部的備註中檢視服務角色名稱。
如果使用 AWS CLI 建立環境,您可以設定無輸入 EC2 執行個體,方法是在呼叫 create-environment-ec2
命令時設定 --connection-type CONNECT_SSM
選項。如需詳細了解如何建立必要的服務角色和執行個體描述檔,請參閱 使用 AWS CLI 管理 Systems Manager 的執行個體描述檔。
完成建立使用無輸入 EC2 執行個體的環境之後,請確認下列項目:
-
Systems Manager Session Manager 具備代表您對 EC2 執行個體執行動作的許可。如需詳細資訊,請參閱管理 Systems Manager 許可。
-
AWS Cloud9 使用者可以存取由 Session Manager 管理的執行個體。如需詳細資訊,請參閱讓使用者存取由 Session Manager 管理的執行個體。
為 EC2 環境使用 Systems Manager 的好處
允許 Session Manager 處理 AWS Cloud9 及其 EC2 執行個體之間的安全連線,可帶來兩項關鍵優勢:
-
不需要為執行個體開啟傳入連接埠
-
提供在公有或私有子網路中啟動執行個體的選項
管理 Systems Manager 許可
在預設情況下,Systems Manager 沒有在您的 EC2 執行個體上執行動作的許可。存取權需透過 AWS Identity and Access Management (IAM) 執行個體描述檔取得。(執行個體描述檔是在啟動時將 IAM 角色資訊傳遞到 EC2 執行個體的容器。)
如果您使用 AWS Cloud9 主控台建立無輸入 EC2 執行個體,服務角色 (AWSCloud9SSMAccessRole
) 和 IAM 執行個體描述檔 (AWSCloud9SSMInstanceProfile
) 都會自動建立。(您可以在 IAM 管理主控台檢視 AWSCloud9SSMAccessRole
。執行個體描述檔不會顯示在 IAM 主控台中。)
重要
如果您第一次使用 AWS CLI 建立無輸入 EC2 環境,您必須明確定義必要的服務角色和執行個體描述檔。如需詳細資訊,請參閱使用 AWS CLI 管理 Systems Manager 的執行個體描述檔。
重要
如果您正在建立AWS Cloud9環境和使用亞馬遜 EC2 系統管理器與AWSCloud9Administrator
或者AWSCloud9User
附加政策時,您還必須附加具有特定 IAM 許可的自訂政策,請參閱建立 SSM 環境的自訂 IAM 政策。這是由於權限問題AWSCloud9Administrator
和AWSCloud9User
政策。
為了獲得額外的安全保護,AWS Cloud9 服務連結的角色 AWSServiceRoleforAWSCloud9
會在其 AWSCloud9ServiceRolePolicy
政策中設定 PassRole
限制。當您傳遞 IAM 角色給某個服務時,該角色會允許該服務接受角色,並代表您執行動作。這種情況下,PassRole
許可會確保 AWS Cloud9 只能傳遞 AWSCloud9SSMAccessRole
角色(及其許可)給 EC2 執行個體。這麼做會將可在 EC2 執行個體上執行的動作限制為僅限 AWS Cloud9 要求的動作。
注意
如果您不再需要使用 Systems Manager 存取執行個體,您可以刪除 AWSCloud9SSMAccessRole
服務角色。如需詳細資訊,請參閱 IAM 使用者指南中的刪除角色或執行個體描述檔。
使用 AWS CLI 管理 Systems Manager 的執行個體描述檔
您也可以使用 AWS CLI 建立無輸入的 EC2 環境。當您呼叫 create-environment-ec2
時,需在 CONNECT_SSM
設定 --connection-type
選項。
如果您使用此選項,AWSCloud9SSMAccessRole
服務角色和 AWSCloud9SSMInstanceProfile
不會自動建立。因此,若要建立必要的服務設定檔和執行個體設定檔,請執行下列其中一項操作:
-
在
AWSCloud9SSMAccessRole
服務角色和AWSCloud9SSMInstanceProfile
自動建立之後使用主控台建立 EC2 環境。環境建立後,服務角色和執行個體描述檔就可以供任何其他透過 AWS CLI 建立的 EC2 環境使用。 -
執行下列 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
的許可。此操作會啟動與受管 EC2 執行個體的連線,執行 Session Manager 工作階段。為使用者提供存取權時,建議您使用 AWS Cloud9 特定的受管政策,或者您也可以編輯 IAM 政策並新增必要的許可。
方法 | 描述 |
---|---|
使用 AWS Cloud9 特定的受管政策 |
建議您使用 AWS 受管政策來允許使用者存取由 Systems Manager 管理的 EC2 執行個體。受管政策可提供一組適用於標準 AWS Cloud9 使用案例的許可,並且可以輕鬆連接到 IAM 實體。 所有受管政策也都包含執行
重要如果您正在建立AWS Cloud9環境和使用亞馬遜 EC2 系統管理器與 如需詳細資訊,請參閱AWS 受管理的政策 AWS Cloud9。 |
編輯 IAM 政策並新增必要政策陳述式 |
若要編輯現有政策,您可以為 編輯政策時,請新增 policy statement (請參閱以下內容) 來允許 |
您可以使用下列許可來執行 StartSession
API 操作。ssm:resourceTag
條件索引鍵會指定 Session Manager 工作階段可由任何執行個體 (Resource: arn:aws:ec2:*:*:instance/*
)啟動,但條件是執行個體是 AWS Cloud9 EC2 開發環境 (aws:cloud9:environment
)。
注意
下列受管政策也包含這些政策陳述式:AWSCloud9Administrator
、AWSCloud9User
及 AWSCloud9EnvironmentMember
。
{ "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 開發環境時,請在建立堆疊之前執行下列動作:
-
建立
AWSCloud9SSMAccessRole
服務角色和AWSCloud9SSMInstanceProfile
執行個體描述檔。如需詳細資訊,請參閱使用 AWS CloudFormation 範本建立服務角色和執行個體描述檔。 -
為呼叫 AWS CloudFormation 的 IAM 實體更新政策。如此,該實體就能啟動連線到 EC2 執行個體的 Session Manager 工作階段。如需詳細資訊,請參閱將 Systems Manager 許可新增至 IAM 政策。
使用 AWS CloudFormation 範本建立服務角色和執行個體描述檔
您需要建立服務角色 AWSCloud9SSMAccessRole
和執行個體描述檔 AWSCloud9SSMInstanceProfile
,讓 Systems Manager 能夠管理支援開發環境的 EC2 執行個體。
如果您之前已建立無輸入的 EC2 環境 with the console 或執行 AWS CLI 命令而建立了 AWSCloud9SSMAccessRole
和 AWSCloud9SSMInstanceProfile
,該服務角色和執行個體設定檔已可供使用。
注意
假設您嘗試為無輸入 EC2 環境建立 AWS CloudFormation 堆疊,但您沒有先建立必要的服務角色和執行個體設定檔。然後,不會建立堆疊,並顯示下列錯誤訊息:
例項設定檔AWSCloud9SSMInstanceProfile帳戶中不存在。
第一次使用 AWS CloudFormation 建立無輸入 EC2 環境時,您可以將 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 實體具有啟動 Session Manager 工作階段的許可。工作階段是指使用 Session Manager 建立的 EC2 執行個體連線。
注意
如果您在為無輸入 EC2 環境建立堆疊之前,並未新增啟動 Session Manager 工作階段的許可,系統就會傳回 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 儲存貯體包含要下載的相依性時,才允許存取該儲存貯體。
注意
您可使用 AWS Management Console、AWS CLI 或 Amazon VPC API 來建立與設定 VPC。下列程序說明如何使用主控台界面來建立 VPC 端點。
為 Amazon S3 建立和設定 VPC 端點
-
在 AWS Management Console 中,前往 Amazon VPC 的主控台頁面。
-
在導覽列中選擇 Endpoints (端點)。
-
在 Endpoints (端點) 頁面,選擇 Create Endpoint (建立端點)。
-
在 Create Endpoint (建立端點)頁面的搜尋欄位中輸入「s3」,然後按下 Return (傳回) 以列出目前的 AWS 區域中可用的 Amazon S3 的端點。
-
從傳回的 Amazon S3 端點清單中,選取 Gateway (閘道) 類型。
-
接下來,選擇包含您環境的 EC2 執行個體的 VPC。
-
現在選擇 VPC 的路由表。如此,相關聯的子網路可以存取端點。您環境的 EC2 執行個體位於其中一個子網路中。
-
在 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 Cloud9 的 AWS 區域中儲存貯體的名稱。
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
-
選擇 Create Endpoint (建立端點)。
如果您已提供正確的組態資訊,訊息會顯示已建立的端點的 ID。
-
若要檢查您的 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 可存取儲存貯體及其相依性。
如需此功能的詳細資訊,請參閱亞馬遜 S3 的端點在AWS PrivateLink指南。
將 VPC 端點設為使用私有連線
如果您使用 access using Systems Manager (使用 Systems Manager 存取) 選項在子網路中啟動執行個體,該執行個體的安全群組不含允許傳入網路流量的傳入規則。但是,安全群組卻有允許從執行個體傳出流量的傳出規則。若要下載將 AWS Cloud9 IDE 維持在最新狀態的套件和資料庫,這是必要的條件。
為了防止執行個體的傳出和傳入流量,請為 Systems Manager 建立和設定 Amazon VPC 端點。使用界面 VPC 端點 (介面端點),您可以連線至採用 AWS PrivateLink 技術的服務。AWS PrivateLink 技術可以用來使用私有 IP 地址,以私密方式存取 Amazon EC2 和 Systems Manager API。若要將 VPC 端點設為使用 Systems Manager,請遵循此知識中心資源
警告
假設您可以設定一個不允許傳入或傳出網路流量的安全群組。然後,支援 AWS Cloud9 IDE 的 EC2 執行個體無法存取網際網路。您需要建立 VPC 的 Amazon S3 端點才能允許存取受信任的 S3 儲存貯體中包含的相依性。此外,某些 AWS 服務 (例如 AWS Lambda) 如果沒有網際網路存取權,可能就無法如期運作。
使用 AWS PrivateLink 時,透過 VPC 端點處理的每 GB 資料都會產生處理費用。這與流量的來源或目的地無關。如需詳細資訊,請參閱 AWS PrivateLink 定價