步驟 4:為您的 Amazon EC2 執行個IAM體建立執行個體設定檔 - AWS CodeDeploy

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

步驟 4:為您的 Amazon EC2 執行個IAM體建立執行個體設定檔

注意

如果您使用的是 Amazon ECS 或 AWS Lambda 運算平台,請跳過此步驟。

您的 Amazon EC2 執行個體需要許可才能存取存 GitHub 放應用程式的 Amazon S3 儲存貯體或儲存庫。若要啟動與相容的 Amazon EC2 執行個體 CodeDeploy,您必須建立其他IAM角色 (執行個體設定檔)。這些指示說明如何建立要連接到 Amazon EC2 執行個IAM體的執行個體設定檔。此角色授予 CodeDeploy 代理程式存取存 GitHub 放應用程式之 Amazon S3 儲存貯體或儲存庫的權限。

您可以使用 AWS CLI、IAM主控台或建立IAM執行個體設定檔IAMAPIs。

注意

您可以在啟動 Amazon IAM 執行個體時將EC2執行個體設定檔附加到該執行個體或先前啟動的執行個體。有關詳情,請參閱執行個體設定檔

為您的 Amazon EC2 執行個IAM體建立執行個體設定檔 (CLI)

在這些步驟中,假設您已經遵循開始使用 CodeDeploy 中前三個步驟的說明。

  1. 在您的開發機器上,建立名為 CodeDeployDemo-EC2-Trust.json 的文字檔案。粘貼以下內容,這EC2使 Amazon 代表您工作:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 在相同的目錄中,建立名為 CodeDeployDemo-EC2-Permissions.json 的文字檔案。貼上下列內容:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }
    注意

    我們建議您將此政策限制為只有 Amazon EC2 執行個體必須存取的 Amazon S3 儲存貯體。確保授予對包含 CodeDeploy 代理程式的 Amazon S3 儲存貯體的存取權。否則,在執行個體上安裝或更新 CodeDeploy 代理程式時,可能會發生錯誤。若要僅授予IAM執行個體設定檔存取 Amazon S3 中某些 CodeDeploy 資源套件儲存貯體的存取權,請使用下列政策,但移除要阻止存取的儲存貯體的行:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-central-2/*", "arn:aws:s3:::aws-codedeploy-eu-north-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-2/*", "arn:aws:s3:::aws-codedeploy-il-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-east-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-4/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-ap-south-2/*", "arn:aws:s3:::aws-codedeploy-me-central-1/*", "arn:aws:s3:::aws-codedeploy-me-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ] }
    注意

    如果您想要使用IAM授權或 Amazon 虛擬私有雲端 (VPC) 端點 CodeDeploy,則需要新增更多許可。如需詳細資訊,請參閱 CodeDeploy 搭配 Amazon Virtual Private Cloud 使用。

  3. 從相同的目錄中,呼叫create-role命令CodeDeployDemo-EC2-Instance-Profile,根據第一個檔案中的資訊建立名為的IAM角色:

    重要

    請確認在檔案名稱之前包含 file://。這是此命令必要項目。

    aws iam create-role --role-name CodeDeployDemo-EC2-Instance-Profile --assume-role-policy-document file://CodeDeployDemo-EC2-Trust.json
  4. 從相同的目錄中,呼叫 put-role-policy 命令,根據第二個檔案中的資訊,將許可提供給名為 CodeDeployDemo-EC2-Instance-Profile 的角色:

    重要

    請確認在檔案名稱之前包含 file://。這是此命令必要項目。

    aws iam put-role-policy --role-name CodeDeployDemo-EC2-Instance-Profile --policy-name CodeDeployDemo-EC2-Permissions --policy-document file://CodeDeployDemo-EC2-Permissions.json
  5. 呼叫以授attach-role-policy予角色 Amazon EC2 Systems Manager 權限,以便SSM可以安裝 CodeDeploy 代理程式。如果您計劃使用命令列從公有 Amazon S3 儲存貯體安裝代理程式,則不需要此政策。進一步了解安裝 CodeDeploy 代理程式

    aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore --role-name CodeDeployDemo-EC2-Instance-Profile
  6. 呼叫指create-instance-profile令後接指add-role-to-instance-profile令,建立名為的IAM執行個體設定檔CodeDeployDemo-EC2-Instance-Profile。執行個體設定檔允許 Amazon EC2 在執行個體首次啟動時CodeDeployDemo-EC2-Instance-Profile將名為的IAM角色傳遞給 Amazon EC2 執行個體:

    aws iam create-instance-profile --instance-profile-name CodeDeployDemo-EC2-Instance-Profile aws iam add-role-to-instance-profile --instance-profile-name CodeDeployDemo-EC2-Instance-Profile --role-name CodeDeployDemo-EC2-Instance-Profile

    如果您需要獲取IAM實例配置文件的名稱,請參閱AWS CLI 參考文獻IAM部分中的 list-instance-profiles-for-role

您現在已建立要連接到 Amazon EC2 執行個IAM體的執行個體設定檔。如需詳細資訊,請參閱 Amazon EC2使用者指南EC2中的 Amazon IAM 角色

為您的 Amazon EC2 執行個IAM體 (主控台) 建立執行個體設定檔

  1. 登入 AWS Management Console 並開啟IAM主控台,位於https://console.aws.amazon.com/iam/

  2. 在IAM主控台的功能窗格中,選擇 [原],然後選擇 [建立原則]。

  3. 在 [指定權限] 頁面上,選擇JSON

  4. 移除範例JSON程式碼。

  5. 貼上以下程式碼:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }
    注意

    我們建議您將此政策限制為只有 Amazon EC2 執行個體必須存取的 Amazon S3 儲存貯體。確保授予對包含 CodeDeploy 代理程式的 Amazon S3 儲存貯體的存取權。否則,在執行個體上安裝或更新 CodeDeploy 代理程式時,可能會發生錯誤。若要僅授予IAM執行個體設定檔存取 Amazon S3 中某些 CodeDeploy 資源套件儲存貯體的存取權,請使用下列政策,但移除要阻止存取的儲存貯體的行:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-central-2/*", "arn:aws:s3:::aws-codedeploy-eu-north-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-2/*", "arn:aws:s3:::aws-codedeploy-il-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-east-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-4/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-ap-south-2/*", "arn:aws:s3:::aws-codedeploy-me-central-1/*", "arn:aws:s3:::aws-codedeploy-me-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ] }
    注意

    如果您想要使用IAM授權或 Amazon 虛擬私有雲端 (VPC) 端點 CodeDeploy,則需要新增更多許可。如需詳細資訊,請參閱 CodeDeploy 搭配 Amazon Virtual Private Cloud 使用。

  6. 選擇 Next (下一步)

  7. 在 [檢閱並建立] 頁面的 [原則名稱] 方塊中,輸入CodeDeployDemo-EC2-Permissions

  8. (選用) 針對 Description (描述),輸入政策的描述。

  9. 選擇 Create policy (建立政策)。

  10. 在導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)

  11. 在 [使用案例] 下,選擇EC2使用案例。

  12. 選擇 Next (下一步)

  13. 在原則清單中,選取您剛建立之原則旁邊的核取方塊 (CodeDeployDemo-EC2-權限)。如有需要,請使用搜尋方塊來尋找政策。

  14. 若要使用 Systems Manager 來安裝或設定 CodeDeploy 代理程式,請選取 A 旁邊的核取方塊mazonSSMManagedInstanceCore。此 AWS 受管原則可讓執行個體使用 Systems Manager 服務核心功能。如有需要,請使用搜尋方塊來尋找政策。如果您計劃使用命令列從公有 Amazon S3 儲存貯體安裝代理程式,則不需要此政策。進一步了解安裝 CodeDeploy 代理程式

  15. 選擇 Next (下一步)

  16. 在 [名稱、檢閱和建立] 頁面的 [角色名稱] 中,輸入服務角色的名稱 (例如,CodeDeployDemo-EC2-Instance-Profile),然後選擇 [建立角色]。

    您也可以在角色說明中輸入此服務角色的說明

您現在已建立要連接到 Amazon EC2 執行個IAM體的執行個體設定檔。如需詳細資訊,請參閱 Amazon EC2使用者指南EC2中的 Amazon IAM 角色