在 CloudFormation 範本中參考模組資源 - AWS CloudFormation

在 CloudFormation 範本中參考模組資源

在 CloudFormation 範本中,您通常需要根據另一個資源的名稱或屬性,設定某個資源的屬性。如需更多詳細資訊,請參閱 參考資源

若要在 CloudFormation 範本中參考模組內含的資源,您必須合併兩個邏輯名稱:

  • 當您將其引入範本時,為模組本身設定的邏輯名稱。

  • 該模組內特定資源的邏輯名稱。

您可以在這兩個邏輯名稱之間加點 (.) 或不加點,合併形成完整名稱。例如,若模組的邏輯名稱是 MyModule,而資源的邏輯名稱是 MyBucket,您可將該資源稱為 MyModule.MyBucketMyModuleMyBucket

若要查詢模組內資源的邏輯名稱,可以參閱模組的結構描述,該結構描述可在 CloudFormation 登錄檔或使用 DescribeType 操作取得。該結構描述會列出屬於模組的所有資源及其邏輯名稱。

取得完整的邏輯名稱後,您可以使用 GetAttRef 等 CloudFormation 函數,存取模組資源上的屬性值。

例如,您有一個 My::S3::SampleBucket::MODULE 模組,其中包含邏輯名稱為 S3BucketAWS::S3::Bucket 資源。要使用 Ref 函數參考此儲存貯體的名稱,可以將範本 (MyBucket) 中的模組名稱與模組 (S3Bucket) 中的資源邏輯名稱合併。完整邏輯名稱可為 MyBucket.S3BucketMyBucketS3Bucket

範例範本

下列範例範本會使用 My::S3::SampleBucket::MODULE 模組建立一個 S3 儲存貯體。它還會建立 Amazon SQS 佇列,並將其名稱設定為與模組中的儲存貯體名稱相同。此外,該範本會輸出建立的 S3 儲存貯體的 Amazon Resource Name (ARN)。

# Template that uses My::S3::SampleBucket::MODULE Parameters: BucketName: Description: Name for your sample bucket Type: String Resources: MyBucket: Type: My::S3::SampleBucket::MODULE Properties: BucketName: !Ref BucketName exampleQueue: Type: AWS::SQS::Queue Properties: QueueName: !Ref MyBucket.S3Bucket Outputs: BucketArn: Value: !GetAtt MyBucket.S3Bucket.Arn