AWS::Include 轉換程序 - AWS CloudFormation

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

AWS::Include 轉換程序

使用 AWS::Include 轉換 (由 AWS CloudFormation託管的巨集) 將樣板式內容插入您的範本中。AWS::Include 轉換可讓您對 Amazon S3 儲存貯體中的範本程式碼片段建立參考。當建立變更集透過變更集更新堆疊和範本參考時AWS::Include,會在範本中的轉換位置 AWS CloudFormation 插入指定檔案的內容。AWS::Include 函數的行為與程式設計語言中的 includecopyimport 指令類似。

例如,您在一個或多個 AWS CloudFormation 範本中可能有想要重複使用的 Lambda 函數。

用量

您可以在 AWS CloudFormation 範本內的任意處使用 AWS::Include 轉換,但範本參數區段或範本版本欄位除外。舉例來說,您可以在映射區段中使用 AWS::Include

範本最上層的語法

若要在範本的最上層包含 AWS::Include 轉換,請在 Transform 區段中使用下列語法。

JSON

{ "Transform" : { "Name" : "AWS::Include", "Parameters" : { "Location" : "s3://DOC-EXAMPLE-BUCKET/MyFileName.json" } } }

YAML

Transform: Name: 'AWS::Include' Parameters: Location: 's3://DOC-EXAMPLE-BUCKET/MyFileName.yaml'

轉換程序內嵌於範本區段時的語法

若要包含內嵌於區段的轉換,請使用 Fn::Transform 內部函數和下列語法。

JSON

{ "Fn::Transform" : { "Name" : "AWS::Include", "Parameters" : { "Location": "s3://DOC-EXAMPLE-BUCKET/MyFileName.json" } } }

YAML

'Fn::Transform': Name: 'AWS::Include' Parameters: Location: s3://DOC-EXAMPLE-BUCKET/MyFileName.yaml

參數

位置

該位置會以 Amazon S3 URI 呈現,其將包含 S3 儲存貯體中的特定檔案名稱;例如 s3://MyBucketName/MyFile.yaml

備註

使用 AWS::Include 時,請謹記下列考量。如需有關使用巨集的一般考量,請參閱建立 AWS CloudFormation 巨集定義時的考量

  • 我們目前支援 Amazon S3 URI,不支援其他 Amazon S3 格式 (例如 Amazon S3 ARN)。它必須是一個 Amazon S3 存儲桶,而不是類似 GitHub 存儲庫的東西。

  • 具備 Amazon S3 URL 存取權的所有人皆能在範本中加入該程式碼片段。

  • 您的範本程式碼片段均必須是有效的 JSON。

  • 您的範本程式碼片段必須是有效的索引鍵–值物件,例如 "KeyName": "keyValue"

  • 您無法用 AWS::Include 來參考也使用 AWS::Include 的範本程式碼片段。

  • 若您變更程式碼片段,堆疊並不會自動取得這些變更。如需取得這些變更,請使用更新後的程式碼片段來更新堆疊。更新堆疊時,務必確認加入的程式碼片段不會在您不知悉的情況下有所變更。請查看變更集,即可在更新堆疊前進行驗證。

  • 建立範本與程式碼片段時,可以將 YAML 和 JSON 範本語言混合使用。

  • YAML 程式碼片段目前不支援使用速記表示法。

  • 您可以使用 AWS::Include 來提供跨區域複寫 Amazon S3 URI。存取跨區域複寫物件時,請務必檢查 Amazon S3 儲存貯體的名稱。如需詳細資訊,請參閱跨區域複寫

範例

以下範例會說明如何使用 AWS::Include 轉換程序來執行等待條件控點。

JSON 與 YAML 版本皆會使用下列等待條件程式碼片段。將文件另存為single_wait_condition.yaml,並將其存儲在與文檔示例存儲桶相同名稱的 S3 存儲桶中。

WebServerWaitHandle: Type: 'AWS::CloudFormation::WaitConditionHandle'

JSON

{ "Resources": { "MyWaitHandle": { "Type": "AWS::CloudFormation::WaitConditionHandle" }, "Fn::Transform": { "Name": "AWS::Include", "Parameters": { "Location": "s3://DOC-EXAMPLE-BUCKET/single_wait_condition.yaml" } } } }

YAML

Resources: MyWaitHandle: Type: 'AWS::CloudFormation::WaitConditionHandle' 'Fn::Transform': Name: 'AWS::Include' Parameters: Location: "s3://DOC-EXAMPLE-BUCKET/single_wait_condition.yaml"