

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# CloudFormation Parameterssintaks template
<a name="parameters-section-structure"></a>

Gunakan bagian `Parameters` untuk menyesuaikan templat Anda. Dengan parameter, Anda dapat memasukkan nilai kustom ke template Anda setiap kali Anda membuat atau memperbarui tumpukan. Dengan menggunakan parameter dalam template Anda, Anda dapat membuat template yang dapat digunakan kembali dan fleksibel yang dapat disesuaikan dengan skenario tertentu. 

Dengan menentukan parameter dari jenis yang sesuai, Anda dapat memilih dari daftar pengidentifikasi sumber daya yang ada saat Anda menggunakan konsol untuk membuat tumpukan Anda. Untuk informasi selengkapnya, lihat [Tentukan sumber daya yang ada saat runtime dengan CloudFormation tipe parameter yang disediakan](cloudformation-supplied-parameter-types.md).

Parameter adalah cara populer untuk menentukan nilai properti sumber daya tumpukan. Namun, mungkin ada pengaturan yang bergantung pada wilayah atau agak rumit bagi pengguna untuk mencari tahu karena kondisi atau dependensi lain. Dalam kasus ini, Anda mungkin ingin menempatkan beberapa logika dalam template itu sendiri sehingga pengguna dapat menentukan nilai yang lebih sederhana (atau tidak sama sekali) untuk mendapatkan hasil yang mereka inginkan, seperti dengan menggunakan pemetaan. Untuk informasi selengkapnya, lihat [CloudFormation Mappingssintaks template](mappings-section-structure.md).

## Sintaksis
<a name="parameters-section-structure-syntax"></a>

Anda mendeklarasikan parameter di `Parameters` bagian template, yang menggunakan sintaks umum berikut:

### JSON
<a name="parameters-section-structure-syntax.json"></a>

```
"Parameters" : {
  "ParameterLogicalID" : {
    "Description": "Information about the parameter",
    "Type" : "DataType",
    "Default" : "value",
    "AllowedValues" : ["value1", "value2"]
  }
}
```

### YAML
<a name="parameters-section-structure-syntax.yaml"></a>

```
Parameters:
  ParameterLogicalID:
    Description: Information about the parameter
    Type: DataType
    Default: value
    AllowedValues:
      - value1
      - value2
```

Parameter berisi daftar atribut yang menentukan nilai dan batasan terhadap nilainya. Satu-satunya atribut yang diperlukan adalah`Type`, yang dapat berupa `String``Number`, atau tipe parameter yang CloudFormation disediakan. Anda juga dapat menambahkan `Description` atribut yang menjelaskan jenis nilai apa yang harus Anda tentukan. Nama dan deskripsi parameter muncul di halaman **Tentukan Parameter** saat Anda menggunakan templat di wizard **Buat Tumpukan**.

**catatan**  
Secara default, CloudFormation konsol mencantumkan parameter input menurut abjad berdasarkan ID logisnya. Untuk mengganti urutan default ini dan mengelompokkan parameter terkait bersama-sama, Anda dapat menggunakan kunci `AWS::CloudFormation::Interface` metadata di template Anda. Untuk informasi selengkapnya, lihat [Mengatur CloudFormation parameter dengan `AWS::CloudFormation::Interface` metadata](aws-cloudformation-interface.md).

Untuk parameter dengan nilai default, CloudFormation gunakan nilai default kecuali pengguna menentukan nilai lain. Jika Anda menghilangkan atribut default, pengguna diminta untuk menentukan nilai untuk parameter tersebut. Namun, mengharuskan pengguna untuk memasukkan nilai tidak memastikan bahwa nilainya valid. Untuk memvalidasi nilai parameter, Anda dapat mendeklarasikan batasan atau menentukan tipe parameter -spesifik. AWS

Untuk parameter tanpa nilai default, pengguna harus menentukan nilai nama kunci pada pembuatan tumpukan. Jika tidak, CloudFormation gagal membuat tumpukan dan melempar pengecualian:

```
Parameters: [KeyName] must have values
```

## Sifat-sifat
<a name="parameters-section-structure-properties"></a>

`AllowedPattern`  
Ekspresi reguler yang mewakili pola untuk memungkinkan `String` atau `CommaDelimitedList` mengetik. Ketika diterapkan pada parameter tipe`String`, pola harus cocok dengan seluruh nilai parameter yang disediakan. Ketika diterapkan ke parameter tipe`CommaDelimitedList`, pola harus cocok dengan setiap nilai dalam daftar.  
*Wajib*: Tidak

`AllowedValues`  
Array yang berisi daftar nilai yang diizinkan untuk parameter. Ketika diterapkan ke parameter tipe`String`, nilai parameter harus menjadi salah satu nilai yang diizinkan. Ketika diterapkan ke parameter tipe`CommaDelimitedList`, setiap nilai dalam daftar harus menjadi salah satu nilai yang diizinkan yang ditentukan.  
*Wajib*: Tidak  
Jika Anda menggunakan YAMAL dan ingin menggunakan `Yes` dan `No` string untuk`AllowedValues`, gunakan tanda kutip tunggal untuk mencegah parser YAMAL mempertimbangkan nilai boolean ini.

`ConstraintDescription`  
Suatu string yang menjelaskan kendala ketika ia dilanggar. Sebagai contoh, tanpa deskripsi kendala, parameter yang memiliki pola yang diizinkan `[A-Za-z0-9]+` menampilkan pesan kesalahan berikut ketika pengguna menentukan nilai yang tidak valid:  
`Malformed input-Parameter MyParameter must match pattern [A-Za-z0-9]+`  
Dengan menambahkan deskripsi kendala, seperti * hanya boleh berisi huruf (huruf besar dan huruf kecil) dan angka*, Anda dapat menampilkan pesan kesalahan yang disesuaikan berikut:  
`Malformed input-Parameter MyParameter must only contain uppercase and lowercase letters and numbers`  
*Wajib*: Tidak

`Default`  
Nilai tipe yang sesuai untuk templat untuk digunakan jika tidak ada nilai yang ditentukan ketika tumpukan dibuat. Jika Anda menentukan kendala untuk parameter, Anda harus menentukan nilai yang mematuhi kendala tersebut.  
*Wajib*: Tidak

`Description`  
String hingga 4000 karakter yang menggambarkan parameter.  
*Wajib*: Tidak

`MaxLength`  
Nilai integer yang menentukan jumlah karakter terbesar dengan `String` tipe yang Anda izinkan.  
*Wajib*: Tidak

`MaxValue`  
Nilai numerik yang menentukan nilai numerik terbesar dengan `Number` tipe yang ingin Anda izinkan.  
*Wajib*: Tidak

`MinLength`  
Nilai integer yang menentukan jumlah karakter terbesar dengan `String` tipe yang ingin Anda izinkan.  
*Wajib*: Tidak

`MinValue`  
Nilai numerik yang menentukan nilai numerik terkecil dengan `Number` tipe yang ingin Anda izinkan.  
*Wajib*: Tidak

`NoEcho`  
Apakah akan menutupi nilai parameter untuk mencegahnya ditampilkan di konsol, alat baris perintah, atau API. Jika Anda menyetel `NoEcho` atribut ke`true`, CloudFormation mengembalikan nilai parameter yang disamarkan sebagai tanda bintang (\$1\$1\$1\$1\$1) untuk setiap panggilan yang menggambarkan peristiwa tumpukan atau tumpukan, kecuali untuk informasi yang disimpan di lokasi yang ditentukan di bawah ini.  
*Wajib*: Tidak  
Menggunakan `NoEcho` atribut tidak menutupi informasi apa pun yang disimpan sebagai berikut:  
+ Bagian `Metadata` template. CloudFormation tidak mengubah, memodifikasi, atau menyunting informasi apa pun yang Anda sertakan di `Metadata` bagian ini. Untuk informasi selengkapnya, lihat [Metadata](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html).
+ Bagian `Outputs` template. Untuk informasi lebih lanjut, lihat [Output](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html).
+ `Metadata`Atribut definisi sumber daya. Untuk informasi lebih lanjut, lihat [Atribut `Metadata`](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-metadata.html).
Kami sangat menyarankan Anda untuk tidak menggunakan mekanisme ini untuk memasukkan informasi sensitif, seperti kata sandi atau rahasia.
Daripada menyematkan informasi sensitif secara langsung di CloudFormation template Anda, kami sarankan Anda menggunakan parameter dinamis dalam template tumpukan untuk mereferensikan informasi sensitif yang disimpan dan dikelola di luar CloudFormation, seperti di AWS Systems Manager Parameter Store atau AWS Secrets Manager.  
Untuk informasi selengkapnya, lihat Do [not embed credentials in your templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/security-best-practices.html#creds) best practice.
Kami sangat menyarankan agar tidak termasuk `NoEcho` parameter, atau data sensitif apa pun, di properti sumber daya yang merupakan bagian dari pengenal utama sumber daya.  
Ketika `NoEcho` parameter disertakan dalam properti yang membentuk pengenal sumber daya utama, CloudFormation dapat menggunakan *nilai plaintext aktual* dalam pengidentifikasi sumber daya utama. ID sumber daya ini mungkin muncul dalam output turunan atau tujuan.  
Untuk menentukan properti sumber daya mana yang terdiri dari pengidentifikasi utama tipe sumber daya, lihat dokumentasi referensi sumber daya untuk sumber daya tersebut dalam referensi [tipe AWS sumber daya dan properti](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-template-resource-type-ref.html). Di bagian **Kembalikan nilai**, nilai `Ref` pengembalian fungsi mewakili properti sumber daya yang terdiri dari tipe pengidentifikasi utama sumber daya.

`Type`  <a name="parameters-section-structure-properties-type"></a>
Tipe data untuk parameter (`DataType`).  
*Wajib*: Ya  
CloudFormation mendukung jenis parameter berikut:    
`String`  
Sebuah string literal. Anda dapat menggunakan atribut berikut untuk mendeklarasikan batasan:`MinLength`,,,, `MaxLength` dan. `Default` `AllowedValues` `AllowedPattern`   
Misalnya, pengguna dapat menentukan `"MyUserName"`.  
`Number`  
Sebuah integer atau float. CloudFormation memvalidasi nilai parameter sebagai angka; Namun, ketika Anda menggunakan parameter di tempat lain di template Anda (misalnya, dengan menggunakan fungsi `Ref` intrinsik), nilai parameter menjadi string.  
Anda dapat menggunakan atribut berikut untuk mendeklarasikan batasan:`MinValue`,,, dan. `MaxValue` `Default` `AllowedValues`  
Misalnya, pengguna dapat menentukan `"8888"`.  
`List<Number>`  
Array integer atau float yang dipisahkan oleh koma. CloudFormation memvalidasi nilai parameter sebagai angka; namun, ketika Anda menggunakan parameter di tempat lain dalam templat Anda (misalnya, dengan menggunakan `Ref` fungsi intrinsik), nilai parameter menjadi daftar string.  
Misalnya, pengguna dapat menentukan `"80,20"`, dan `Ref` akan menghasilkan `["80","20"]`.  
`CommaDelimitedList`  
Array string literal yang dipisahkan dengan koma. Jumlah total string harus satu lebih dari jumlah koma. Juga, setiap string anggota dipangkas ruang.  
Misalnya, pengguna dapat menentukan `"test,dev,prod"`, dan `Ref` akan menghasilkan `["test","dev","prod"]`.  
AWS-jenis parameter tertentu  
AWS nilai-nilai seperti nama key pair Amazon EC2 dan VPC. IDs Untuk informasi selengkapnya, lihat [Tentukan sumber daya yang ada saat runtime](cloudformation-supplied-parameter-types.md).  
Jenis parameter Systems Manager  
Parameter yang sesuai dengan parameter yang ada di Systems Manager Parameter Store. Anda menentukan kunci parameter Systems Manager sebagai nilai tipe parameter Systems Manager, dan CloudFormation mengambil nilai terbaru dari Parameter Store yang akan digunakan untuk tumpukan. Untuk informasi selengkapnya, lihat [Tentukan sumber daya yang ada saat runtime](cloudformation-supplied-parameter-types.md).

## Persyaratan umum untuk parameter
<a name="parameters-section-structure-requirements"></a>

Persyaratan berikut berlaku saat menggunakan parameter:
+ Anda dapat memiliki maksimum 200 parameter dalam CloudFormation template.
+ Setiap parameter harus diberi nama logis (juga disebut ID logis) yang harus alfanumerik dan unik di antara semua nama logis dalam template.
+ Setiap parameter harus diberi tipe parameter yang didukung oleh CloudFormation. Untuk informasi lebih lanjut, lihat [Tipe](#parameters-section-structure-properties-type).
+ Setiap parameter harus diberi nilai saat runtime CloudFormation agar berhasil menyediakan tumpukan. Anda dapat secara opsional menentukan nilai default CloudFormation untuk digunakan kecuali nilai lain disediakan.
+ Parameter harus dinyatakan dan direferensikan dari dalam templat yang sama. Anda dapat mereferensikan parameter dari bagian `Resources` dan `Outputs` templat tersebut.

## Contoh
<a name="parameters-section-examples"></a>

**Topics**
+ [Parameter string sederhana](#parameters-section-structure-example-1)
+ [Parameter kata sandi](#parameters-section-structure-example-2)
+ [Parameter referensi](#parameters-section-structure-example-3)
+ [Parameter daftar yang dibatasi koma](#parameters-section-structure-example-4)
+ [Kembalikan nilai dari parameter daftar yang dipisahkan koma](#parameters-section-structure-example-5)

### Parameter string sederhana
<a name="parameters-section-structure-example-1"></a>

Contoh berikut mendeklarasikan parameter bernama `InstanceTypeParameter` tipe`String`. Parameter ini memungkinkan Anda menentukan jenis instans Amazon EC2 untuk tumpukan. Jika tidak ada nilai yang diberikan selama pembuatan atau pembaruan tumpukan, CloudFormation gunakan nilai default`t2.micro`.

#### JSON
<a name="parameters-section-structure-example-1.json"></a>

```
"Parameters" : {
  "InstanceTypeParameter" : {
    "Description" : "Enter t2.micro, m1.small, or m1.large. Default is t2.micro.",
    "Type" : "String",
    "Default" : "t2.micro",
    "AllowedValues" : ["t2.micro", "m1.small", "m1.large"]
  }
}
```

#### YAML
<a name="parameters-section-structure-example-1.yaml"></a>

```
Parameters:
  InstanceTypeParameter:
    Description: Enter t2.micro, m1.small, or m1.large. Default is t2.micro.
    Type: String
    Default: t2.micro
    AllowedValues:
      - t2.micro
      - m1.small
      - m1.large
```

### Parameter kata sandi
<a name="parameters-section-structure-example-2"></a>

Contoh berikut mendeklarasikan parameter bernama `DBPwd` tipe `String` tanpa nilai default. `NoEcho`Properti diatur `true` untuk mencegah nilai parameter ditampilkan dalam deskripsi tumpukan. Nilai minimum yang dapat ditentukan adalah `1`, dan panjang maksimum yang dapat ditentukan adalah `41`. Pola ini memungkinkan huruf kecil dan huruf besar karakter abjad dan angka. Contoh ini juga menggambarkan penggunaan ekspresi reguler untuk `AllowedPattern` properti.

#### JSON
<a name="parameters-section-structure-example-2.json"></a>

```
"Parameters" : {
  "DBPwd" : {
    "NoEcho" : "true",
    "Description" : "The database admin account password",
    "Type" : "String",
    "MinLength" : "1",
    "MaxLength" : "41",
    "AllowedPattern" : "^[a-zA-Z0-9]*$"
  }
}
```

#### YAML
<a name="parameters-section-structure-example-2.yaml"></a>

```
Parameters: 
  DBPwd: 
    NoEcho: true
    Description: The database admin account password
    Type: String
    MinLength: 1
    MaxLength: 41
    AllowedPattern: ^[a-zA-Z0-9]*$
```

### Parameter referensi
<a name="parameters-section-structure-example-3"></a>

Anda menggunakan `Ref` fungsi intrinsik untuk referensi parameter, dan CloudFormation menggunakan nilai parameter untuk penyediaan tumpukan. Anda dapat mereferensikan parameter dari bagian `Resources` dan `Outputs` dari templat yang sama.

Pada contoh berikut, `InstanceType` properti referensi sumber daya Instans EC2 `InstanceTypeParameter` nilai parameter:

#### JSON
<a name="parameters-section-structure-example-3.json"></a>

```
"Ec2Instance" : {
  "Type" : "AWS::EC2::Instance",
  "Properties" : {
    "InstanceType" : { "Ref" : "InstanceTypeParameter" },
    "ImageId" : "ami-0ff8a91507f77f867"
  }
}
```

#### YAML
<a name="parameters-section-structure-example-3.yaml"></a>

```
Ec2Instance:
  Type: AWS::EC2::Instance
  Properties:
    InstanceType:
      Ref: InstanceTypeParameter
    ImageId: ami-0ff8a91507f77f867
```

### Parameter daftar yang dibatasi koma
<a name="parameters-section-structure-example-4"></a>

Jenis `CommaDelimitedList` parameter dapat berguna ketika Anda perlu memberikan beberapa nilai untuk satu properti. Contoh berikut mendeklarasikan parameter bernama `DbSubnetIpBlocks` dengan nilai default dari tiga blok CIDR dipisahkan dengan koma.

#### JSON
<a name="parameters-section-structure-example-4.json"></a>

```
"Parameters" : {
  "DbSubnetIpBlocks": {
    "Description": "Comma-delimited list of three CIDR blocks",
    "Type": "CommaDelimitedList",
    "Default": "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24"
  }
}
```

#### YAML
<a name="parameters-section-structure-example-4.yaml"></a>

```
Parameters: 
  DbSubnetIpBlocks: 
    Description: "Comma-delimited list of three CIDR blocks"
    Type: CommaDelimitedList
    Default: "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24"
```

### Kembalikan nilai dari parameter daftar yang dipisahkan koma
<a name="parameters-section-structure-example-5"></a>

Untuk merujuk ke nilai tertentu dalam daftar parameter yang dibatasi koma, gunakan fungsi `Fn::Select` intrinsik di bagian templat Anda. `Resources` Lulus nilai indeks objek yang Anda inginkan dan daftar objek, seperti yang ditunjukkan pada contoh berikut.

#### JSON
<a name="parameters-section-structure-example-5.json"></a>

```
{
    "Parameters": {
        "VPC": {
            "Type": "String",
            "Default": "vpc-123456"
        },
        "VpcAzs": {
            "Type": "CommaDelimitedList",
            "Default": "us-west-2a, us-west-2b, us-west-2c"
        },
        "DbSubnetIpBlocks": {
            "Type": "CommaDelimitedList",
            "Default": "172.16.0.0/26, 172.16.0.64/26, 172.16.0.128/26"
        }
    },
    "Resources": {
        "DbSubnet1": {
            "Type": "AWS::EC2::Subnet",
            "Properties": {
                "AvailabilityZone": {
                    "Fn::Select": [
                      0,
                      { 
                        "Ref": "VpcAzs" 
                      }
                   ]
                },
                "VpcId": {
                    "Ref": "VPC"
                },
                "CidrBlock": {
                    "Fn::Select": [
                        0,
                        { "Ref": "DbSubnetIpBlocks" }
                    ]
                }
            }
        },
        "DbSubnet2": {
            "Type": "AWS::EC2::Subnet",
            "Properties": {
                "AvailabilityZone": {
                    "Fn::Sub": [
                        "${AWS::Region}${AZ}",
                        {
                            "AZ": {
                                "Fn::Select": [
                                    1,
                                    { "Ref": "VpcAzs" }
                                ]
                            }
                        }
                    ]
                },
                "VpcId": {
                    "Ref": "VPC"
                },
                "CidrBlock": {
                    "Fn::Select": [
                        1,
                        { "Ref": "DbSubnetIpBlocks" }
                    ]
                }
            }
        },
        "DbSubnet3": {
            "Type": "AWS::EC2::Subnet",
            "Properties": {
                "AvailabilityZone": {
                    "Fn::Sub": [
                        "${AWS::Region}${AZ}",
                        {
                            "AZ": {
                                "Fn::Select": [
                                    2,
                                    { "Ref": "VpcAzs" }
                                ]
                            }
                        }
                    ]
                },
                "VpcId": {
                    "Ref": "VPC"
                },
                "CidrBlock": {
                    "Fn::Select": [
                        2,
                        { "Ref": "DbSubnetIpBlocks" }
                    ]
                }
            }
        }
    }
}
```

#### YAML
<a name="parameters-section-structure-example-5.yaml"></a>

```
Parameters:
  VPC:
    Type: String
    Default: vpc-123456
  VpcAzs:
    Type: CommaDelimitedList
    Default: us-west-2a, us-west-2b, us-west-2c
  DbSubnetIpBlocks:
    Type: CommaDelimitedList
    Default: 172.16.0.0/26, 172.16.0.64/26, 172.16.0.128/26
Resources:
  DbSubnet1:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: !Select
        - 0 
        - !Ref VpcAzs
      VpcId: !Ref VPC
      CidrBlock: !Select
        - 0
        - !Ref DbSubnetIpBlocks
  DbSubnet2:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: !Sub
        - ${AWS::Region}${AZ}
        - AZ: !Select
            - 1
            - !Ref VpcAzs
      VpcId: !Ref VPC
      CidrBlock: !Select
        - 1
        - !Ref DbSubnetIpBlocks
  DbSubnet3:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: !Sub
        - ${AWS::Region}${AZ}
        - AZ: !Select
            - 2
            - !Ref VpcAzs
      VpcId: !Ref VPC
      CidrBlock: !Select
        - 2
        - !Ref DbSubnetIpBlocks
```

## Sumber daya terkait
<a name="parameters-section-structure-related-resources"></a>

CloudFormation juga mendukung penggunaan referensi dinamis untuk menentukan nilai properti secara dinamis. Misalnya, Anda mungkin perlu mereferensikan string aman yang disimpan di Systems Manager Parameter Store. Untuk informasi selengkapnya, lihat [Dapatkan nilai yang disimpan di layanan lain menggunakan referensi dinamis](dynamic-references.md).

Anda juga dapat menggunakan parameter semu dalam fungsi `Ref` atau `Sub` fungsi untuk mengisi nilai secara dinamis. Lihat informasi yang lebih lengkap di [Dapatkan AWS nilai menggunakan parameter semu](pseudo-parameter-reference.md). 