

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

# 在 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 函數，存取模組資源上的屬性值。

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

**範例 範本**  
下列範例範本會使用 `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
```