使用 register 命令 (IAM 使用者 ARN) 註冊現場部署執行個體 - AWS CodeDeploy

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

使用 register 命令 (IAM 使用者 ARN) 註冊現場部署執行個體

重要

不建議使用 IAM 使用者註冊執行個體,因為它使用靜態 (永久) 登入資料進行身分驗證。為了提高安全性,我們建議您使用臨時憑證註冊執行個體以進行身分驗證。如需詳細資訊,請參閱使用 register-on-premises-instance 命令 (IAM 工作階段 ARN) 註冊現場部署執行個體

重要

請確定您已制定輪換 IAM 使用者的存取金鑰 (永久憑證) 的計劃。如需詳細資訊,請參閱輪換存取金鑰

本節說明如何設定現場部署執行個體,並盡可能使用 CodeDeploy 註冊和標記執行個體。當您使用單一或小型現場部署執行個體機群時,register 命令最有用。只有在使用 IAM 使用者 ARN 來驗證執行個體時,才能使用 register命令。您無法使用 register命令搭配 IAM 工作階段 ARN 進行身分驗證。

使用 register命令時,您可以讓 CodeDeploy 執行下列動作:

  • 如果您未使用 命令指定 IAM 使用者,請在現場部署執行個體 AWS Identity and Access Management 的 中建立 IAM 使用者。

  • 將 IAM 使用者的登入資料儲存至現場部署執行個體組態檔案。

  • 向 CodeDeploy 註冊現場部署執行個體。

  • 如果您將標籤指定為命令的一部分,請將標籤新增至現場部署執行個體。

注意

register-on-premises-instance 命令是 register 命令的替代方案。如果您想要設定現場部署執行個體,並使用 CodeDeploy 註冊和標記它,則使用 register-on-premises-instance命令。register-on-premises-instance 命令也可讓您選擇使用 IAM 工作階段 ARN 註冊執行個體,而非 IAM 使用者 ARN。如果您擁有大量現場部署執行個體機群,此方法可提供很大優勢。具體而言,您可以使用單一 IAM 工作階段 ARN 來驗證多個執行個體,而不必逐一為每個現場部署執行個體建立 IAM 使用者。如需詳細資訊,請參閱使用 register-on-premises-instance 命令 (IAM 使用者 ARN) 註冊現場部署執行個體使用 register-on-premises-instance 命令 (IAM 工作階段 ARN) 註冊現場部署執行個體

步驟 1:在現場部署執行個體 AWS CLI 上安裝和設定

  1. 在現場部署執行個體 AWS CLI 上安裝 。請遵循AWS Command Line Interface 《 使用者指南》中的使用 進行設定 AWS CLI中的指示。

    注意

    CodeDeploy 命令可用於 1.7.19 版和更新 AWS CLI 版本中的現場部署執行個體。如果您 AWS CLI 已安裝 ,請呼叫 aws --version 來檢查其版本。

  2. 在現場部署執行個體 AWS CLI 上設定 。請遵循 AWS Command Line Interface 使用者指南中的設定 AWS CLI 中的指示。

    重要

    當您設定 AWS CLI (例如,透過呼叫 aws configure命令) 時,請務必指定 IAM 使用者的私密金鑰 ID 和私密存取金鑰,這些使用者至少具有下列 AWS 存取許可,以及 中指定的許可設定現場部署執行個體的先決條件。這可讓您在現場部署執行個體上下載並安裝 CodeDeploy 代理程式。存取許可看起來類似下述:

    JSON
    { "Version":"2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:*", "iam:CreateAccessKey", "iam:CreateUser", "iam:DeleteAccessKey", "iam:DeleteUser", "iam:DeleteUserPolicy", "iam:ListAccessKeys", "iam:ListUserPolicies", "iam:PutUserPolicy", "iam:GetUser", "tag:getTagKeys", "tag:getTagValues", "tag:GetResources" ], "Resource" : "*" }, { "Effect" : "Allow", "Action" : [ "s3:Get*", "s3:List*" ], "Resource" : [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ] } ] }
    注意

    如果您在嘗試存取先前顯示的其中一個 Amazon S3 儲存貯體時看到存取遭拒錯誤,請嘗試省略儲存貯體的資源 ARN /*部分,例如 arn:aws:s3:::aws-codedeploy-sa-east-1

    JSON
    { "Version":"2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:*", "iam:CreateAccessKey", "iam:CreateUser", "iam:DeleteAccessKey", "iam:DeleteUser", "iam:DeleteUserPolicy", "iam:ListAccessKeys", "iam:ListUserPolicies", "iam:PutUserPolicy", "iam:GetUser", "tag:GetResources" ], "Resource" : "*" }, { "Effect" : "Allow", "Action" : [ "s3:Get*", "s3:List*" ], "Resource" : [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::amzn-s3-demo-bucket2/*" ] } ] }

步驟 2:呼叫 register 命令

針對此步驟,我們假設您正在從現場部署執行個體本身註冊現場部署執行個體。您也可以從 AWS CLI 安裝並設定 的個別裝置或執行個體註冊現場部署執行個體,如上述步驟所述。

使用 AWS CLI 呼叫註冊命令,指定:

  • 可唯一識別 CodeDeploy 內部部署執行個體的名稱 (使用 --instance-name選項)。

    重要

    為了協助在稍後識別現場部署執行個體,特別是用於偵錯用途,我們強烈建議您使用映射至現場部署執行個體的某些獨特特性名稱 (例如序號或某些唯一的內部資產識別符,如果適用)。如果您為名稱指定 MAC 地址,請注意 MAC 地址包含 CodeDeploy 不允許的字元,例如冒號 (:)。針對允許使用的字元清單,請參閱 CodeDeploy 配額

  • 或者,您想要與此內部部署執行個體建立關聯的現有 IAM 使用者的 ARN (使用 --iam-user-arn選項)。若要取得 IAM 使用者的 ARN,請呼叫 get-user 命令,或在 IAM 主控台的使用者區段中選擇 IAM 使用者名稱,然後在摘要區段中尋找使用者 ARN 值。如果未指定此選項,CodeDeploy 會在您的帳戶中代表您建立 IAM 使用者, AWS 並將其與現場部署執行個體建立關聯。

    重要

    如果您指定 --iam-user-arn 選項,則也必須手動建立現場部署執行個體組態檔案,如步驟 4:將組態檔案新增至現場部署執行個體中所述。

    您只能將一個 IAM 使用者與一個現場部署執行個體建立關聯。嘗試將單一 IAM 使用者與多個內部部署執行個體建立關聯,可能會導致錯誤、這些內部部署執行個體的部署失敗,或這些內部部署執行個體的部署停滯在永久擱置狀態。

  • 或者,CodeDeploy 將用來識別要部署之 Amazon EC2 執行個體集的一組內部部署執行個體標籤 (使用 --tags選項)。使用 Key=tag-key,Value=tag-value 來指定每個標籤 (例如 Key=Name,Value=Beta Key=Name,Value=WestRegion)。如果未指定此選項,則不會註冊任何標籤。若要稍後註冊標籤,請呼叫 add-tags-to-on-premises-instances 命令。

  • 或者,現場部署執行個體將向 CodeDeploy (使用 --region選項) 註冊 AWS 的區域。這必須是 中區域和端點中列出的其中一個支援區域 AWS 一般參考(例如,us-west-2)。如果未指定此選項,則會使用與呼叫 IAM 使用者相關聯的預設 AWS 區域。

例如:

aws deploy register --instance-name AssetTag12010298EX --iam-user-arn arn:aws:iam::444455556666:user/CodeDeployUser-OnPrem --tags Key=Name,Value=CodeDeployDemo-OnPrem --region us-west-2

register 命令會執行以下動作:

  1. 如果未指定現有的 IAM 使用者, 會建立 IAM 使用者、連接所需的許可,並產生對應的私密金鑰和私密存取金鑰。內部部署執行個體將使用此 IAM 使用者及其許可和登入資料來驗證 CodeDeploy 並與之互動。

  2. 向 CodeDeploy 註冊現場部署執行個體。

  3. 如果指定,CodeDeploy 中指定的標籤會與已註冊現場部署執行個體名稱的 --tags選項建立關聯。

  4. 如果已建立 IAM 使用者, 也會在呼叫register命令的相同目錄中建立所需的組態檔案。

如果此命令發生錯誤,會出現錯誤訊息,說明如何手動完成剩下的步驟。否則即會出現成功訊息,說明如何呼叫在下一個步驟中列出的 install 命令。

步驟 3:呼叫 安裝命令

從現場部署執行個體,使用 AWS CLI 呼叫 安裝命令,指定:

  • 組態檔案的路徑 (使用 --config-file 選項)。

  • (選用) 是否取代現場部署執行個體上已存在的組態檔案 (使用 --override-config 選項)。如果未指定,將不會取代現有的組態檔案。

  • 或者,現場部署執行個體將向 CodeDeploy (使用 --region選項) 註冊 AWS 的區域。這必須是 中區域和端點中列出的其中一個支援區域 AWS 一般參考(例如,us-west-2)。如果未指定此選項,則會使用與呼叫 IAM 使用者相關聯的預設 AWS 區域。

  • 或者,從中安裝 CodeDeploy 代理程式的自訂位置 (使用 --agent-installer選項)。此選項適用於安裝 CodeDeploy 未正式支援的 CodeDeploy 代理程式自訂版本 (例如以 GitHub 中的 CodeDeploy 代理程式儲存庫為基礎的自訂版本)。此值必須是 Amazon S3 儲存貯體的路徑,其中包含:

    • CodeDeploy 代理程式安裝指令碼 (適用於 Linux 或 Unix 作業系統,類似於 GitHub 中 CodeDeploy 代理程式儲存庫中的安裝檔案)。

    • CodeDeploy 代理程式安裝程式套件 (.msi) 檔案 (適用於 Windows 作業系統)。

    如果未指定此選項,CodeDeploy 將盡力從自己的位置安裝官方支援的 CodeDeploy 代理程式版本,該版本與現場部署執行個體上的作業系統相容。

例如:

aws deploy install --override-config --config-file /tmp/codedeploy.onpremises.yml --region us-west-2 --agent-installer s3://aws-codedeploy-us-west-2/latest/codedeploy-agent.msi

install 命令會執行以下動作:

  1. 檢查現場部署執行個體是否為 Amazon EC2 執行個體。如果是,則會顯示錯誤訊息。

  2. 將現場部署執行個體組態檔案從執行個體上的指定位置複製到 CodeDeploy 代理程式預期找到該檔案的位置,前提是該檔案尚未在該位置。

    對於 Ubuntu Server 和 Red Hat Enterprise Linux (RHEL)),這是 /etc/codedeploy-agent/conf/codedeploy.onpremises.yml

    對於 Windows Server,這是 C:\ProgramData\Amazon\CodeDeploy\conf.onpremises.yml

    如果 --override-config 選項已指定,則會建立或覆寫該檔案。

  3. 在現場部署執行個體上安裝 CodeDeploy 代理程式,然後啟動它。

步驟 4:將應用程式修訂部署至內部部署執行個體

您現在已準備好將應用程式修訂部署至已註冊和加上標籤的現場部署執行個體。

您部署應用程式修訂到現場部署執行個體的方式類似於將應用程式修訂部署到 Amazon EC2 執行個體。如需說明,請參閱使用 CodeDeploy 建立部署。這些指示會連結至必要條件,包括建立應用程式、建立部署群組和準備應用程式修訂。如果您需要簡單的範例應用程式修訂來部署,您可以建立一個,如教學課程:使用 CodeDeploy 將應用程式部署至內部部署執行個體 (Windows Server、Ubuntu Server 或 Red Hat Enterprise Linux) 中的步驟 2:建立範例應用程式修訂所述。

重要

如果您在建立以內部部署執行個體為目標的部署群組時重複使用現有的 CodeDeploy 服務角色,則必須將 包含在服務角色政策陳述式的 Tag:get* Action部分。如需詳細資訊,請參閱步驟 2:建立 CodeDeploy 的服務角色

步驟 5:追蹤現場部署執行個體的部署

在您將應用程式修訂部署至已註冊和加入標籤的現場部署執行個體後,您可以追蹤部署的進度。

您可以透過類似追蹤 Amazon EC2 執行個體部署的方式,來追蹤現場部署執行個體的部署。如需說明,請參閱檢視 CodeDeploy 部署詳細資訊

如需更多選項,請參閱 在 CodeDeploy 中管理內部部署執行個體操作