AWS Cloud9 不再提供給新客戶。的現有客戶 AWS Cloud9 可以繼續正常使用服務。進一步了解
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為 EC2 環境建立的「無輸入 EC2 執行個體」可讓 AWS Cloud9 連線到其 Amazon EC2 執行個體,而不需要在該執行個體上開啟任何傳入連接埠。您可以在使用主控台、命令列界面或AWS CloudFormation 堆疊建立 EC2 環境時選取無輸入選項。如需如何使用主控台或命令列界面建立環境的詳細資訊,請參閱 步驟 1:建立環境。
重要
使用 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
選項。如需詳細了解如何建立必要的服務角色和執行個體描述檔,請參閱 使用 管理 Systems Manager 的執行個體描述檔 AWS CLI。
完成建立使用無輸入 EC2 執行個體的環境之後,請確認下列項目:
-
Systems Manager Session Manager 具備代表您對 EC2 執行個體執行動作的許可。如需詳細資訊,請參閱管理 Systems Manager 許可。
-
AWS Cloud9 使用者可以存取 Session Manager 管理的執行個體。如需詳細資訊,請參閱讓使用者存取由 Session Manager 管理的執行個體。
為 EC2 環境使用 Systems Manager 的好處
允許 Session Manager 處理 AWS Cloud9 與其 EC2 執行個體之間的安全連線,可提供兩個主要優點:
-
不需要為執行個體開啟傳入連接埠
-
提供在公有或私有子網路中啟動執行個體的選項
Session Manager 會處理 AWS Cloud9 與其 EC2 執行個體之間的安全連線。Session Manager 是全受管 Systems Manager 功能,可讓 AWS Cloud9 連線至其 EC2 執行個體,而不需要開啟傳入連接埠。
重要
目前只有在建立新的 EC2 環境時,才能使用 Systems Manager 進行無輸入連線的選項。
Session Manager 工作階段啟動後,就會與目標執行個體建立連線。現在連線完成後,環境就可以透過 Systems Manager 服務與執行個體互動。Systems Manager 服務會透過 Systems Manager Agent (SSM Agent) 與執行個體通訊。
根據預設,SSM Agent 會安裝在 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 環境,並使用 Amazon EC2 Systems Manager 並連接 AWSCloud9Administrator
或 AWSCloud9User
政策,您還必須連接具有特定 IAM 許可的自訂政策,請參閱 建立 SSM 環境的自訂 IAM 政策。這是因為 AWSCloud9Administrator
和 AWSCloud9User
政策的許可問題。
為了提供額外的安全性保護, AWS Cloud9 服務連結角色 在其AWSCloud9ServiceRolePolicy
政策中AWSServiceRoleforAWSCloud9
具有PassRole
限制。當您傳遞 IAM 角色給某個服務時,該角色會允許該服務接受角色,並代表您執行動作。在此情況下, PassRole
許可可確保 只能將AWSCloud9SSMAccessRole
角色 (及其許可) AWS Cloud9 傳遞至 EC2 執行個體。這麼做會將可在 EC2 執行個體上執行的動作限制為僅限 AWS Cloud9要求的動作。
注意
如果您不再需要使用 Systems Manager 存取執行個體,您可以刪除 AWSCloud9SSMAccessRole
服務角色。如需詳細資訊,請參閱 IAM 使用者指南中的刪除角色或執行個體描述檔。
使用 管理 Systems Manager 的執行個體描述檔 AWS CLI
您也可以使用 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 環境,並使用 Amazon EC2 Systems Manager 並連接 如需詳細資訊,請參閱AWS 的 受管政策 AWS Cloud9。 |
編輯 IAM 政策並新增必要政策陳述式 |
若要編輯現有政策,您可以為 編輯政策時,請新增 policy statement (請參閱以下內容) 來允許 |
您可以使用下列許可來執行 StartSession
API 操作。ssm:resourceTag
條件索引鍵指定可以啟動任何執行個體 (Resource: arn:aws:ec2:*:*:instance/*
) 的 Session Manager 工作階段,條件是執行個體是 an 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 範本建立服務角色和執行個體描述檔。 -
更新呼叫 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 堆疊,但未先建立所需的服務角色和執行個體描述檔。然後,不會建立堆疊,並顯示下列錯誤訊息:
Instance profile AWSCloud9SSMInstanceProfile does not exist in account. (帳戶中不存在執行個體設定檔 AWSCloud9SSMInstanceProfile。)
第一次使用 建立無輸入 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 實體具有啟動 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 維持在最新狀態所需的相依性。
為 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 區域 體 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
-
選擇建立端點。
如果您已提供正確的組態資訊,訊息會顯示已建立的端點的 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 可存取儲存貯體及其相依性。
如需此功能的詳細資訊,請參閱《AWS PrivateLink 指南》中的 Amazon S3 的端點。
將 VPC 端點設為使用私有連線
如果您使用 access using Systems Manager (使用 Systems Manager 存取) 選項在子網路中啟動執行個體,該執行個體的安全群組不含允許傳入網路流量的傳入規則。但是,安全群組卻有允許從執行個體傳出流量的傳出規則。這是下載讓 IDE AWS Cloud9 保持在最新狀態所需的套件和程式庫所必需。
為了防止執行個體的傳出和傳入流量,請為 Systems Manager 建立和設定 Amazon VPC 端點。使用介面 VPC 端點 (介面端點),您可以連線至採用 技術的服務AWS PrivateLink。 AWS PrivateLink 是一種技術,可用來使用私有 IP 地址來私下存取 Amazon EC2 和 Systems Manager APIs。若要將 VPC 端點設為使用 Systems Manager,請遵循此知識中心資源
警告
假設您可以設定一個不允許傳入或傳出網路流量的安全群組。然後,支援 IDE AWS Cloud9 的 EC2 執行個體沒有網際網路存取權。您需要建立 VPC 的 Amazon S3 端點才能允許存取受信任的 S3 儲存貯體中包含的相依性。此外,有些 AWS 服務等 AWS Lambda可能無法在無法存取網際網路的情況下如預期般運作。
使用 時 AWS PrivateLink,透過 VPC 端點處理的每個 GB 都會產生資料處理費用。這與流量的來源或目的地無關。如需詳細資訊,請參閱 AWS PrivateLink 定價