

# パラメータを使用してモジュール値を指定する
<a name="module-using-params"></a>

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

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

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

独自のモジュールパラメータを持つネストされたモジュールがモジュールに含まれている場合、次のいずれかの操作ができます。
+ ネストされたモジュールのパラメータの値を親モジュールで直接指定します。
+ 親モジュール内の対応するモジュールパラメータを定義して、ネストされたモジュールのパラメータを、親モジュールが含まれているテンプレート (またはモジュール) で設定できるようにします。

## テンプレートパラメータを使用したモジュールパラメータ値の指定
<a name="module-using-params-example-1"></a>

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

`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
```

## 親モジュールから子モジュール内のリソースのプロパティを指定する
<a name="module-using-params-example-2"></a>

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

この最初のモジュール `My::S3::SampleBucketPrivate::MODULE` は、子モジュールになります。これは、`BucketName` と `AccessControl` の 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::MODULE` の `AccessControl` パラメータを `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
```

## モジュールパラメータの制約の指定
<a name="modules-using-parameters-constraints"></a>

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