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執行個體的環境後,請確認下列事項:
-
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 Management 主控台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
您也可以使用 建立無輸入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實體。 所有受管政策也包含執行
重要如果您正在建立 AWS Cloud9 環境,並使用 Amazon EC2 Systems Manager 連接 如需詳細資訊,請參閱AWS 的 受管政策 AWS Cloud9。 |
編輯IAM政策並新增必要的政策陳述式 |
若要編輯現有政策,您可以新增 編輯政策時,請新增允許 |
您可以使用下列許可來執行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 範本建立服務角色和執行個體設定檔。 -
更新呼叫 之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,您可以在範本中將 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政策
在範本 中定義服務角色和執行個體設定檔之後,請確定建立堆疊的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端點
-
在 中 AWS Management Console,前往 Amazon 的主控台頁面VPC。
-
在導覽列中選擇 Endpoints (端點)。
-
在 Endpoints (端點) 頁面,選擇 Create Endpoint (建立端點)。
-
在 Create Endpoint (建立端點)頁面的搜尋欄位中輸入「s3」,然後按下 Return (傳回) 以列出目前的 AWS 區域中可用的 Amazon S3 的端點。
-
從傳回的 Amazon S3 端點清單中,選取 Gateway (閘道) 類型。
-
接下來,選擇VPC包含您環境EC2執行個體的 。
-
現在選擇 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 儲存貯體,請在選單列上選擇視窗 、新終端機,以啟動終端機工作階段。接著執行以下命令,將
{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 定價