

# CloudFormation 템플릿의 모듈 리소스 참조
<a name="module-ref-resources"></a>

CloudFormation에서 다른 리소스의 이름이나 속성을 기반으로 한 리소스의 속성을 설정해야 하는 경우가 있습니다. 자세한 내용은 [참조 리소스](resources-section-structure.md#using-cross-resource-references) 섹션을 참조하세요.

CloudFormation 템플릿의 모듈에 포함된 리소스를 참조하려면 두 논리명을 결합해야 합니다.
+ 템플릿에 모듈을 포함할 때 모듈 자체에 지정한 논리명입니다.
+ 해당 모듈 내 특정 리소스의 논리명입니다.

이 두 논리명을 마침표(.)를 사용하거나 사용하지 않고 결합할 수 있습니다. 예를 들어, 모듈의 논리명이 `MyModule`이고 리소스의 논리명이 `MyBucket`인 경우 해당 리소스를 `MyModule.MyBucket` 또는 `MyModuleMyBucket`으로 참조할 수 있습니다.

모듈 내부 리소스의 논리명을 찾으려면 CloudFormation 레지스트리에서 사용할 수 있는 모듈 스키마를 참조하거나 [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeType.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeType.html) 작업을 사용합니다. 스키마에는 모듈의 일부인 모든 리소스와 해당 논리명이 나열됩니다.

전체 논리명을 알면 `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
```