在不同的 AWS 帳戶中部署應用程式 - AWS CodeDeploy

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

在不同的 AWS 帳戶中部署應用程式

Organizations 通常會有多個用於不同用途的 AWS 帳戶 (例如,一個用於系統管理工作,另一個用於開發、測試和生產工作,或一個與開發和測試環境相關聯,另一個與生產環境相關聯)。

雖然您可能會在不同的帳戶中執行相關工作,但 CodeDeploy 部署群組和其部署的 Amazon EC2 執行個體會嚴格關聯到建立這些執行個體的帳戶。無法作的事如,新增在帳戶啟動的執行個體至其他帳戶的部署群組中。

假設您有兩個 AWS 帳戶:您的開發帳戶和生產帳戶。您主要在開發帳戶中工作,但您希望能夠在生產帳戶中啟動部署,同時不需要完整的登入資料確認,也不用登出開發帳戶和登入生產帳戶。

遵循跨帳戶組態步驟後,您可以啟動屬於您組織的另一個帳戶的部署,同時無需使用該帳戶的完整登入資料。您可以執行此操作,部分是使用 AWS Security Token Service (AWS STS) 提供的功能,該功能授予您對該帳戶的臨時訪問權限。

步驟 1:在任一帳戶中建立 S3 儲存貯體

無論是開發帳戶或生產帳戶:

  • 如果您尚未這麼做,請建立 Amazon S3 儲存貯體,在其中存放生產帳戶的應用程式修訂版本。如需詳細資訊,請參閱在 Amazon S3 中建立儲存貯體。您甚至可以讓兩個帳戶使用相同的儲存貯體以及應用程式修改版,部署相同檔案到您的生產環境,讓您測試和驗證開發帳戶。

步驟 2:將 Amazon S3 儲存貯體許可授與生產帳戶的 IAM 執行個體設定檔

如果您在步驟 1 中建立的 Amazon S3 儲存貯體位於您的生產帳戶中,則不需要執行此步驟。稍後您假設的角色可以存取此儲存貯體,因為它也在生產帳戶中了。

如果您在開發帳戶中建立 Amazon S3 儲存貯體,請執行下列動作:

  • 在生產帳戶中,建立 IAM 執行個體設定檔。如需相關資訊,請參閱步驟 4:為您的 Amazon EC2 執行個體建立 IAM 執行個體設定檔

    注意

    記下此 IAM 執行個體設定檔的 ARN。您將需要新增它到您接下來建立的跨儲存貯體政策中。

  • 在開發帳戶中,將您在開發帳戶中建立的 Amazon S3 儲存貯體存取權授與您剛在生產帳戶中建立的 IAM 執行個體設定檔。如需詳細資訊,請參閱範例 2:授與跨帳戶值區權限的值區擁有者

    在完成授予跨帳戶儲存貯體權限許可的過程中,請注意以下事項:

    • 在範例攻略中,帳戶 A 代表您的開發帳戶,帳戶 B 代表您的生產帳戶。

    • 當您 執行帳戶 A (開發帳戶) 任務、修改以下儲存貯體政策以授與跨帳戶許可,而不使用範例政策,請參閱逐步解說。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "Cross-account permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/role-name" }, "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::bucket-name/*" ] } ] }

      account t-id 代表您剛建立 IAM 執行個體設定檔的生產帳戶的帳戶編號。

      角色名稱代表您剛建立的 IAM 執行個體設定檔的名稱。

      bucket-name 表示您在步驟一中建立的儲存貯體名稱。請確認在您的儲存貯體名稱後含有的 /*,提供對儲存貯體內每個文件的存取權限。

步驟 3:在生產帳戶中建立資源與跨帳戶角色

在您的生產帳戶中:

  • 使用本指南中的指示建立 CodeDeploy 資源,包括應用程式、部署群組、部署組態、Amazon EC2 執行個體、Amazon EC2 執行個體設定檔、服務角色等。

  • 建立其他角色 (跨帳戶 IAM 角色),讓開發帳戶中的使用者可以假設在此生產帳戶中執行 CodeDeploy 作業。

    使用逐步解說:使用 IAM 角色指導跨 AWS 帳戶委派存取權,以協助您建立跨帳戶角色。除了將逐步解說中的範例權限新增至您的政策文件,您應該至少將下列兩個 AWS 提供的原則附加至該角色:

    • AmazonS3FullAccess:僅在 S3 儲存貯體位於開發帳戶時才需要。提供假定的生產帳戶角色,以完整存取開發帳戶中 Amazon S3 服務和資源 (其中存放修訂)。

    • AWSCodeDeployDeployerAccess:可讓使用者註冊和部署修訂。

    如果您想要建立以及管理部署群組以及不只是初始化部署,新增 AWSCodeDeployFullAccess 原則而不是 AWSCodeDeployDeployerAccess 原則。如需使用 IAM 受管政策授與 CodeDeploy 任務許可的詳細資訊,請參閱AWS 的管理 (預先定義) 策略 CodeDeploy

    您可以附加原則,如果您想要在其他 AWS 服務執行工作,使用此跨帳戶角色。

重要

建立跨帳戶 IAM 角色時,請記下存取生產帳戶所需的詳細資料。

若要使用 AWS Management Console 來切換角色,您必須提供下列其中一項:

  • URL 用於啟動生產帳戶與假設角色認證。您將在 檢視 頁面上找到URL,其顯示在跨帳戶角色建立程序的末端。

  • 跨帳戶角色的名稱及帳戶 ID 數或別名都可以。

若要使用 AWS CLI 來切換角色,您必須提供下列項目:

  • 跨帳戶角色的 ARN,您將假設。

步驟 4:將應用程式修訂版上傳到 Amazon S3 儲存貯體

在您建立 Amazon S3 儲存貯體的帳戶中:

步驟 5:假設跨帳戶角色並部署應用程式

在開發帳戶中,您可以使用 AWS CLI 或 AWS Management Console 來承擔跨帳戶角色,並在生產帳戶中啟動部署。

如需有關如何使用切 AWS Management Console 換角色和初始化部署的指示,請參閱切換至角色 (AWS Management Console)建立 EC2/內部部署計算平台部署 (主控台)

如需如何使用 AWS CLI 來擔任跨帳戶角色和啟動部署的指示,請參閱切換至 IAM 角色 (AWS Command Line Interface)建立EC2/內部部署計算平台部署 (CLI)

若要取得有關使用角色的更多資訊 AWS STS,請參閱《AWS Security Token Service 使用指南》AssumeRole中的〈指AWS CLI 令參考〉中的〈assume-role〉中的〈〉。

相關主題: