

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

# 使用參數來指定模組值
<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` 的範本會定義範本參數 `BucketName`，該參數可讓使用者在堆疊操作過程中指定 S3 儲存貯體名稱。

```
# 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`。為這些參數指定的值會用來指定此模組包含之 `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)。