使用私有擴充功能 CloudFormation - AWS CloudFormation

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

使用私有擴充功能 CloudFormation

私有擴充功能是您明確允許用於 AWS 帳戶的擴充功能。

有兩種私有擴充功能:

  • 已啟用的私有擴充功能 – 您為帳戶和區域啟用的第三方擴充功能之本機複本。當您啟用第三方公開擴充功能時, CloudFormation 會在帳戶登錄中建立該擴充功能的本機副本。

  • 已註冊的私有擴充功能 — 也可以啟用公用登 CloudFormation 錄中未列出的私人擴充功能。這些可以是您自行建立的擴充功能,也可以是組織或其他第三方與您共用的擴充功能。若要在帳戶中使用這種私有擴充功能,您必須先註冊該擴充功能。註冊擴充功能會將其副本上傳到您帳戶中的註冊 CloudFormation 表並啟用。

在帳戶中使用任何私有擴充功能都類似於在沙盒環境中使用該擴充功能。這是因為擴充功能受版本控制,而佈建行為特定於版本,這意味著私有擴充功能變為公有時其行為相同。

注意

私有擴充功能和來自第三方發佈者之已啟用公有擴充功能可實作在建立、讀取、更新、列出和刪除操作期間執行的事件處理常式。因此,在 CloudFormation 堆疊中使用這些擴充功能會向您的帳戶產生費用。這是在因建立資源所產生任何費用之外的額外費用。如需詳細資訊,請參閱 AWS CloudFormation 定價

若要取得有關開發自己專用擴充功能的資訊,請參閱《CloudFormation 命令列介面使用者指南》

註冊私有擴充功能

要使用註冊 CloudFormation 表中未列出的私有擴展程序-無論是您自己開發的擴展程序,還是與您共享的擴展程序-您必須先在您要使用 CloudFormation它們的帳戶和地區中註冊它們。註冊擴充功能會將其副本上傳到您帳戶中的註冊 CloudFormation 表,並啟用該擴充功能。註冊私人擴充套件後,該擴充套件就會出現在該帳戶和地區的登 CloudFormation 錄中,您可以在堆疊範本中使用該擴充套件。

您可以使用的註冊類型命令或使用 CLI 的 AWS CLI指令來註冊擴充功能。submit CloudFormation

若要使用 CLI 註冊私人擴充功能,請參閱 CloudFormation CLI 使用者指南中的CloudFormation 註冊擴充功能

註冊私有擴充功能的 IAM 許可

作為註冊私有擴充功能的一部分,您需要指定一個包含擴充功能專案套件的 Amazon S3 儲存貯體。此套件包含要註冊的擴充功能所需之任何來源檔案。註冊擴充功能的使用者必須能夠存取 Amazon S3 儲存貯體中的專案套件。也就是說,使用者需要擁有擴充功能套件的GetObject權限。

無論您是使用的註冊類型命令,還是 CLI 的命submit令 AWS CLI,都是如此。 CloudFormation

如需詳細資訊,請參閱《AWS Identity and Access Management 使用者指南》中的適用於 Amazon S3的動作、資源和條件索引鍵

註冊擴充功能

在登 AWS CloudFormation 錄中註冊您的擴充功能,以便可供使用。

若要使用註冊掛接 AWS CLI

註冊您的鉤子 CloudFormation,以便在註 AWS CloudFormation 冊表中使用。

  1. (選擇性) 透過提交configure作業us-west-2,將您的預設 AWS 區域 名稱設定為。

    aws configure AWS Access Key ID [None]: <Your Access Key ID> AWS Secret Access Key [None]: <Your Secret Key> Default region name [None]: us-west-2 Default output format [None]: json
  2. (選用) 以下命令可在不註冊的情況下建置並封裝掛鉤專案。

    $ cfn submit --dry-run
  3. 使用 CloudFormation CLI 註冊您的掛接cfn submit

    cfn submit --set-default

    該命令會傳回下列命令。

    {‘ProgressStatus’: ‘COMPLETE’}

    結果:您已成功註冊掛鉤。

若要使用註冊資源類型 AWS CLI

使用註冊您的資源類型 CloudFormation,以便在 AWS CloudFormation 登錄中使用。

  1. 針對您要在帳戶中註冊的私有擴充功能,找出包含專案套件的 Amazon S3 值區。

  2. 使用 register-type 命令在帳戶中註冊擴充功能:

    RegisterType 是一種非同步操作,會傳回您可以用來追蹤註冊請求進度的註冊權杖。

    注意

    如果您的擴充功能會呼叫 AWS API 作為其功能的一部分,您必須建立 IAM 執行角色,其中包含呼叫這些 AWS API 的必要許可,並在您的帳戶中佈建該執行角色。然後,您可以使用--execution-role-arn參數指定此執行角色。 CloudFormation 然後假設該執行角色為您的資源類型提供適當的認證。

    例如,以下命令會在目前的 AWS 帳戶中註冊 My::Resource::Example 資源類型:

    aws cloudformation register-type --type-name My::Resource::Example --schema-handler-package [s3 object path] --type RESOURCE { "RegistrationToken": "f5525280-104e-4d35-bef5-8f1fexample" }
  3. 選用:搭配 describe-type-registration 命令使用註冊字符,追蹤您註冊請求的進度。

    CloudFormation 完成註冊請求後,它會將請求的進度狀態設置為COMPLETE

    以下範例會使用以上 describe-type-registration 命令傳回的註冊權杖來傳回註冊狀態資訊。

    aws cloudformation describe-type-registration --registration-token f5525280-104e-4d35-bef5-8f1fexample { "ProgressStatus": "COMPLETE", "TypeArn": "arn:aws:cloudformation:us-east-1:012345678910:type/resource/My-Resource-Example", "Description": "Deployment is currently in DEPLOY_STAGE of status COMPLETED; ", "TypeVersionArn": "arn:aws:cloudformation:us-east-1:111122223333:type/resource/My-Resource-Example/00000001" }

在帳戶層級設定擴充功能

擴充功能可以包含旨在套用至指定帳戶和區域擴充功能之所有執行個體的組態屬性。擴充功能作者會在擴充功能的定義組態中定義這些內容。如果擴充功能組態定義中有任何所需屬性,您必須指定這些屬性,才能在帳戶和區域中使用擴充功能。

注意

如果您的型別組態包含對 AWS Systems Manager 或中儲存之值的動態參考 AWS Secrets Manager,則用來佈建類型的任何角色 (例如,建立或更新堆疊時) 都必須具備擷取該值的適當權限。具體而言:

  • 如果類型組態包含儲存在參數存放區中的 AWS Systems Manager 參數,用於佈建該類型的使用者或角色必須具有呼叫的權限GetParameter

  • 如果類型組態包含儲存在中的秘密 AWS Secrets Manager,用於佈建類型的使用者或角色必須具有呼叫的權限GetSecretValue

如需有關動態參考的詳細資訊,請參閱使用動態參考來指定範本值

如需有關開發擴充功能時如何定義組態定義的詳細資訊,請參閱擴充功能開發CloudFormation 使用者指南中的定義擴充功能的帳戶層級組態

若要在 CloudFormation 主控台中檢視擴充功能的目前組態資料
  1. 使用 CloudFormation 登錄來尋找擴充功能。

  2. 選擇擴充功能以檢視擴充功能詳細資訊。

  3. 在擴充功能詳細資訊頁面上,選擇 Configuration (組態) 索引標籤。

  4. 展開 Configuration schema (組態結構描述) 索引標籤,以查看為擴充功能定義的組態結構描述。

  5. 展開 Configuration (組態) 索引標籤,以查看您為此擴充功能設定的目前組態。

若要檢視擴充功能的目前組態資料 AWS CLI
  • 使用 describe-type 命令傳回有關擴充功能的詳細資訊。該輸出的 ConfigurationSchema 元素包含指定區域中擴充功能的目前組態定義。

    或者,使用 batch-describe-type-configurations 命令傳回有關多個擴充功能的組態資料。

指定擴充功能類型的組態屬性

使用 CloudFormation主控台指定擴充功能的組態特性

  1. 使用 CloudFormation 登錄在您帳戶啟用的擴充功能中尋找擴充功能。

  2. 選取擴充功能以檢視擴充功能詳細資訊。

  3. 在擴充功能詳細資訊頁面上,從 Configuration (組態) 索引標籤中,選取 Edit configuration (編輯組態)。

    或者,從 Actions (動作) 中,選取 Edit (編輯),然後選取 Edit configuration (編輯組態)。

    CloudFormation 顯示 [設定擴充功能] 頁面。確保已開啟 View configuration schema (檢視組態結構描述) 以查看擴充功能目前的組態定義結構描述。

  4. Configuration JSON (組態 JSON) 文字方塊中,輸入 JSON 字串,代表您要為此擴充功能設定的組態結構描述。此字串必須根據 Configuration schema (組態結構描述) 中定義的結構描述進行驗證。

  5. 選取 Configure extension (設定擴充功能)。

使用指定擴充功能的組態特性 AWS CLI

  • 使用 set-type-configuration 命令指定要與帳戶和區域中的擴充功能搭配使用之組態。

    您為 --configuration 傳遞的 JSON 必須根據擴充功能的組態定義結構描述進行驗證。以下是指定組態的 set-type-configuration 命令範例。

    aws cloudformation set-type-configuration \ --region us-west-2 \ --type RESOURCE \ --type-name My::Resource::Example \ --configuration-alias default \ --configuration "{"CredentialKey": "testUserCredential"}"

指定要使用的私人擴充功能版本 AWS CLI

隨著時間的推移,您可能會註冊相同擴充功能的多個版本。您可以指定要用於 CloudFormation作業的擴充功能版本。

指定擴充功能版本

使用命set-type-default-version令可指定要用於帳戶中 CloudFormation 作業的擴充功能版本。

例如,以下命令會針對目前帳戶,將 My::Resource::Example 資源類型的預設版本設為 00000003

aws cloudformation set-type-default-version \ --type RESOURCE \ --type-name My::Resource::Example \ --version-id 00000003

指定預設掛鉤版本

若要在帳戶中指定掛鉤的預設版本,請使用 set-type-default-version 命令並指定類型、類型名稱和版本 ID。

aws cloudformation set-type-default-version \ --type HOOK \ --type-name MyCompany::Testing::MyTestHook \ --version-id 00000003