CloudFormation テンプレートのリファレンスモジュールリソース
CloudFormation テンプレートでは、別のリソースの名前またはプロパティに基づいて、あるリソースのプロパティを設定しなければならないことがよくあります。詳細については、「リソースの参照」を参照してください。
CloudFormation テンプレートのモジュール内に含まれるリソースを参照するには、次の 2 つの論理名を組み合わせる必要があります。
-
テンプレートにモジュールを含めたときにそのモジュール自体に付けた論理名。
-
そのモジュール内にある特定リソースの論理名。
これらの 2 つの論理名は、それらの間にピリオド (.) を使用するか、使用せずに組み合わせることができます。たとえば、モジュールの論理名が「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