CloudFormation 템플릿의 모듈 리소스 참조
CloudFormation에서 다른 리소스의 이름이나 속성을 기반으로 한 리소스의 속성을 설정해야 하는 경우가 있습니다. 자세한 내용은 참조 리소스 단원을 참조하십시오.
CloudFormation 템플릿의 모듈에 포함된 리소스를 참조하려면 두 논리명을 결합해야 합니다.
-
템플릿에 모듈을 포함할 때 모듈 자체에 지정한 논리명입니다.
-
해당 모듈 내 특정 리소스의 논리명입니다.
이 두 논리명을 마침표(.)를 사용하거나 사용하지 않고 결합할 수 있습니다. 예를 들어, 모듈의 논리명이 MyModule
이고 리소스의 논리명이 MyBucket
인 경우 해당 리소스를 MyModule.MyBucket
또는 MyModuleMyBucket
으로 참조할 수 있습니다.
모듈 내부 리소스의 논리명을 찾으려면 CloudFormation 레지스트리에서 사용할 수 있는 모듈 스키마를 참조하거나 DescribeType 작업을 사용합니다. 스키마에는 모듈의 일부인 모든 리소스와 해당 논리명이 나열됩니다.
전체 논리명을 알면 GetAtt
및 Ref
와 같은 CloudFormation 함수를 사용하여 모듈 리소스의 속성 값에 액세스할 수 있습니다.
예를 들어, 논리명이 S3Bucket
인 AWS::S3::Bucket
리소스를 포함하는 My::S3::SampleBucket::MODULE
모듈이 있다고 가정해 보겠습니다. Ref
함수를 사용하여 이 버킷의 이름을 참조하려면 템플릿의 모듈 이름(MyBucket
)과 모듈의 리소스 논리명(S3Bucket
)을 결합합니다. 전체 논리명은 MyBucket.S3Bucket
또는 MyBucketS3Bucket
입니다.
예제 템플릿
다음 예 템플릿은 My::S3::SampleBucket::MODULE
모듈을 사용하여 S3 버킷을 생성합니다. 또한 Amazon SQS 대기열을 생성하고 해당 이름을 모듈의 버킷 이름과 동일하게 설정합니다. 생성된 S3 버킷의 Amazon 리소스 이름(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