CloudFormation テンプレートのリファレンスモジュールリソース - AWS CloudFormation

CloudFormation テンプレートのリファレンスモジュールリソース

CloudFormation テンプレートでは、別のリソースの名前またはプロパティに基づいて、あるリソースのプロパティを設定しなければならないことがよくあります。詳細については、「リソースの参照」を参照してください。

CloudFormation テンプレートのモジュール内に含まれるリソースを参照するには、次の 2 つの論理名を組み合わせる必要があります。

  • テンプレートにモジュールを含めたときにそのモジュール自体に付けた論理名。

  • そのモジュール内にある特定リソースの論理名。

これらの 2 つの論理名は、それらの間にピリオド (.) を使用するか、使用せずに組み合わせることができます。たとえば、モジュールの論理名が「MyModule」でリソースの論理名が「MyBucket」の場合、「MyModule.MyBucket」または「MyModuleMyBucket」とすることで、そのリソースを参照できます。

モジュール内のリソースの論理名を確認するには、CloudFormation レジストリまたは「DescribeType」操作を使用することにより、モジュールのスキーマを参照できます。スキーマリストには、モジュールの一部であるすべてのリソースおよびその論理名が一覧表示されます。

完全な論理名を取得したら、GetAttRef などの 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