パラメータを使用してモジュール値を指定する - AWS CloudFormation

パラメータを使用してモジュール値を指定する

CloudFormation では、スタックの作成時または更新中に入力値を指定することにより、テンプレートパラメータを使用してスタックをカスタマイズできます。これらのパラメータにより、必要に応じてスタックの特定の特徴を変更できます。テンプレートのパラメータの定義に関する詳細は、「CloudFormation テンプレートの Parameters 構文」を参照してください。

同様に、モジュールにパラメータを含めることもできます。これらのモジュールパラメータにより、使用しているテンプレート (または別のモジュール) からモジュールにカスタム値を入力できます。モジュールはこれらのカスタム値を使用し、プロパティ値が含まれるリソースにそのプロパティ値を設定できます。

スタック操作時にモジュールに渡される値を入力できるように、モジュールプロパティを設定するテンプレートパラメータを定義することもできます。

独自のモジュールパラメータを持つネストされたモジュールがモジュールに含まれている場合、次のいずれかの操作ができます。

  • ネストされたモジュールのパラメータの値を親モジュールで直接指定します。

  • 親モジュール内の対応するモジュールパラメータを定義して、ネストされたモジュールのパラメータを、親モジュールが含まれているテンプレート (またはモジュール) で設定できるようにします。

テンプレートパラメータを使用したモジュールパラメータ値の指定

次の例は、モジュールに値を渡すテンプレートパラメータを定義する方法を示しています。

My::S3::SampleBucket::MODULE を含むこのテンプレートは、スタック操作時にユーザーが S3 バケット名を指定できるようにするテンプレートパラメータの BucketName を定義します。

# Template containing 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

親モジュールから子モジュール内のリソースのプロパティを指定する

次の例は、別のモジュール内にネストされているモジュールでパラメータ値を指定する方法を示しています。

この最初のモジュール My::S3::SampleBucketPrivate::MODULE は、子モジュールになります。これは、BucketNameAccessControl の 2 つのパラメータを定義します。これらのパラメータに指定された値は、モジュールに含まれる AWS::S3::Bucket リソースの BucketName およびAccessControl プロパティを指定するために使用されます。以下は My::S3::SampleBucketPrivate::MODULE のテンプレートフラグメントです。

# My::S3::SampleBucketPrivate::MODULE AWSTemplateFormatVersion: 2010-09-09 Description: A sample S3 Bucket with Versioning and DeletionPolicy. Parameters: BucketName: Description: Name for the bucket Type: String AccessControl: Description: AccessControl for the bucket Type: String Resources: S3Bucket: Type: 'AWS::S3::Bucket' Properties: BucketName: !Ref BucketName AccessControl: !Ref AccessControl DeletionPolicy: Retain VersioningConfiguration: Status: Enabled

次に、前のモジュールは親モジュール My::S3::SampleBucket::MODULE 内にネストされます。親モジュール My::S3::SampleBucket::MODULE は、次の方法で子モジュールのパラメータを設定します。

  • My::S3::SampleBucketPrivate::MODULEAccessControl パラメータを Private に設定します。

  • BucketName では 、モジュールパラメータを定義します。これにより、My::S3::SampleBucket::MODULE を含むテンプレート (またはモジュール) でバケット名を指定できます 。

# My::S3::SampleBucket::MODULE AWSTemplateFormatVersion: 2010-09-09 Description: A sample S3 Bucket. With Private AccessControl. Parameters: BucketName: Description: Name for your sample bucket Type: String Resources: MyBucket: Type: 'My::S3::SampleBucketPrivate::MODULE' Properties: BucketName: !Ref BucketName AccessControl: Private

モジュールパラメータの制約の指定

モジュールパラメータは、制約の適用をサポートしていません。モジュールパラメータに対して制約チェックを実行するには、必要な制約を持つテンプレートパラメータを作成します。その後、モジュールパラメータでそのテンプレートパラメータを参照します。テンプレートのパラメータの定義に関する詳細は、「CloudFormation テンプレートの Parameters 構文」を参照してください。