

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

# Tentukan sumber daya yang ada saat runtime dengan CloudFormation tipe parameter yang disediakan
<a name="cloudformation-supplied-parameter-types"></a>

Saat membuat templat, Anda dapat membuat parameter yang mengharuskan pengguna memasukkan pengenal AWS sumber daya yang ada atau parameter Systems Manager dengan menggunakan tipe parameter khusus yang disediakan oleh CloudFormation. 

**Topics**
+ [Ikhtisar](#cloudformation-supplied-parameter-types-overview)
+ [Contoh](#cloudformation-supplied-parameter-types-example)
+ [Pertimbangan-pertimbangan](#cloudformation-supplied-parameter-types-considerations)
+ [Jenis parameter AWS spesifik yang didukung](#aws-specific-parameter-types-supported)
+ [Jenis parameter Systems Manager yang Didukung](#systems-manager-parameter-types-supported)
+ [Tipe parameter Systems Manager yang tidak didukung](#systems-manager-parameter-types-unsupported)

## Ikhtisar
<a name="cloudformation-supplied-parameter-types-overview"></a>

Di CloudFormation, Anda dapat menggunakan parameter untuk menyesuaikan tumpukan Anda dengan memberikan nilai input selama pembuatan atau pembaruan tumpukan. Fitur ini membuat template Anda dapat digunakan kembali dan fleksibel di berbagai skenario. 

Parameter didefinisikan di `Parameters` bagian CloudFormation template. Setiap parameter memiliki nama dan tipe, dan dapat memiliki pengaturan tambahan seperti nilai default dan nilai yang diizinkan. Untuk informasi selengkapnya, lihat [CloudFormation Parameterssintaks template](parameters-section-structure.md). 

Jenis parameter menentukan jenis nilai input yang dapat diterima parameter. Misalnya, `Number` hanya menerima nilai numerik, sementara `String` menerima input teks. 

CloudFormation menyediakan beberapa jenis parameter tambahan yang dapat Anda gunakan dalam template Anda untuk mereferensikan AWS sumber daya yang ada dan parameter Systems Manager. 

Jenis parameter ini terbagi dalam dua kategori:
+ **AWS Jenis parameter spesifik** - CloudFormation menyediakan satu set tipe parameter yang membantu catch nilai yang tidak valid saat membuat atau memperbarui tumpukan. Saat Anda menggunakan tipe parameter ini, siapa pun yang menggunakan template Anda harus menentukan nilai yang valid dari Akun AWS dan Wilayah tempat mereka membuat tumpukan.

  Jika mereka menggunakan Konsol Manajemen AWS, CloudFormation berikan daftar nilai yang ada yang sudah terisi sebelumnya dari akun dan Wilayah mereka. Dengan cara ini, pengguna tidak perlu mengingat dan mengetikkan nama atau ID tertentu dengan benar. Sebaliknya, mereka hanya memilih nilai dari daftar drop-down. Dalam beberapa kasus, mereka bahkan dapat mencari nilai berdasarkan ID, nama, atau nilai `Name` tag.
+ **Jenis parameter Systems Manager** — CloudFormation juga menyediakan tipe parameter yang sesuai dengan parameter yang ada di Systems Manager Parameter Store. Bila Anda menggunakan tipe parameter ini, siapa pun yang menggunakan template Anda harus menentukan kunci Parameter Store sebagai nilai dari tipe parameter Systems Manager, dan CloudFormation kemudian mengambil nilai terbaru dari Parameter Store untuk digunakan dalam tumpukan mereka. Ini dapat berguna ketika Anda perlu sering memperbarui aplikasi dengan nilai properti baru, seperti Amazon Machine Image (AMI) baru IDs. Untuk informasi tentang Parameter Store, lihat [Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html).

Setelah parameter Anda ditentukan di `Parameters` bagian, Anda dapat mereferensikan nilai parameter di seluruh CloudFormation template Anda menggunakan `Ref` fungsi.

## Contoh
<a name="cloudformation-supplied-parameter-types-example"></a>

Contoh berikut menunjukkan template yang menggunakan jenis parameter berikut. 
+ `AWS::EC2::VPC::Id`
+ `AWS::EC2::Subnet::Id`
+ `AWS::EC2::KeyPair::KeyName`
+ `AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>`

Untuk membuat tumpukan dari template ini, Anda harus menentukan ID VPC, ID subnet, dan nama key pair yang ada dari akun Anda. Anda juga dapat menentukan kunci Parameter Store yang ada yang mereferensikan ID AMI yang diinginkan atau mempertahankan nilai default`/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2`. Parameter publik ini adalah alias untuk ID AMI regional untuk AMI Amazon Linux 2 terbaru. Untuk informasi selengkapnya tentang parameter publik, lihat [Menemukan parameter publik di Penyimpanan Parameter](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-finding-public-parameters.html) di *Panduan AWS Systems Manager Pengguna*.

### JSON
<a name="cloudformation-supplied-parameter-types-example.json"></a>

```
{
    "Parameters": {
        "VpcId": {
            "Description": "ID of an existing Virtual Private Cloud (VPC).",
            "Type": "AWS::EC2::VPC::Id"
        },
        "PublicSubnetId": {
            "Description": "ID of an existing public subnet within the specified VPC.",
            "Type": "AWS::EC2::Subnet::Id"
        },
        "KeyName": {
            "Description": "Name of an existing EC2 key pair to enable SSH access to the instance.",
            "Type": "AWS::EC2::KeyPair::KeyName"
        },
        "AMIId": {
            "Description": "Name of a Parameter Store parameter that stores the ID of the Amazon Machine Image (AMI).",
            "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>",
            "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2"
        }
    },
    "Resources": {
        "InstanceSecurityGroup": {
            "Type": "AWS::EC2::SecurityGroup",
            "Properties": {
                "GroupDescription": "Enable SSH access via port 22",
                "VpcId": { "Ref": "VpcId" },
                "SecurityGroupIngress": [
                    {
                        "IpProtocol": "tcp",
                        "FromPort": 22,
                        "ToPort": 22,
                        "CidrIp": "0.0.0.0/0"
                    }
                ]
            }
        },
        "Ec2Instance": {
            "Type": "AWS::EC2::Instance",
            "Properties": {
                "KeyName": { "Ref": "KeyName" },
                "ImageId": { "Ref": "AMIId" },
                "NetworkInterfaces": [
                    {
                        "AssociatePublicIpAddress": "true",
                        "DeviceIndex": "0",
                        "SubnetId": { "Ref": "PublicSubnetId" },
                        "GroupSet": [{ "Ref": "InstanceSecurityGroup" }]
                    }
                ]
            }
        }
    },
    "Outputs": {
        "InstanceId": {
            "Value": { "Ref": "Ec2Instance" }
        }
    }
}
```

### YAML
<a name="cloudformation-supplied-parameter-types-example.yaml"></a>

```
Parameters:
  VpcId:
    Description: ID of an existing Virtual Private Cloud (VPC).
    Type: AWS::EC2::VPC::Id
  PublicSubnetId:
    Description: ID of an existing public subnet within the specified VPC.
    Type: AWS::EC2::Subnet::Id
  KeyName:
    Description: Name of an existing EC2 KeyPair to enable SSH access to the instance.
    Type: AWS::EC2::KeyPair::KeyName
  AMIId:
    Description: Name of a Parameter Store parameter that stores the ID of the Amazon Machine Image (AMI).
    Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
    Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
Resources:
  InstanceSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Enable SSH access via port 22
      VpcId: !Ref VpcId
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          CidrIp: 0.0.0.0/0
  Ec2Instance:
    Type: AWS::EC2::Instance
    Properties:
      KeyName: !Ref KeyName
      ImageId: !Ref AMIId
      NetworkInterfaces:
        - AssociatePublicIpAddress: "true"
          DeviceIndex: "0"
          SubnetId: !Ref PublicSubnetId
          GroupSet:
            - !Ref InstanceSecurityGroup
Outputs:
  InstanceId:
    Value: !Ref Ec2Instance
```

### AWS CLI perintah untuk membuat tumpukan
<a name="cloudformation-supplied-parameter-types-cli-command"></a>

[https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html)Perintah berikut membuat tumpukan berdasarkan contoh template. 

```
aws cloudformation create-stack --stack-name MyStack \
  --template-body file://sampletemplate.json \
  --parameters \
ParameterKey="VpcId",ParameterValue="vpc-a123baa3" \
ParameterKey="PublicSubnetId",ParameterValue="subnet-123a351e" \
ParameterKey="KeyName",ParameterValue="MyKeyName" \
ParameterKey="AMIId",ParameterValue="MyParameterKey"
```

Untuk menggunakan tipe parameter yang menerima daftar string, seperti`List<AWS::EC2::Subnet::Id>`, Anda harus keluar dari koma di dalam `ParameterValue` dengan garis miring terbalik ganda, seperti yang ditunjukkan pada contoh berikut.

```
--parameters ParameterKey="SubnetIDs",ParameterValue="subnet-5ea0c127\\,subnet-6194ea3b\\,subnet-c87f2be0"
```

## Pertimbangan-pertimbangan
<a name="cloudformation-supplied-parameter-types-considerations"></a>

Sangat disarankan agar Anda menggunakan referensi dinamis untuk membatasi akses ke definisi konfigurasi sensitif, seperti kredensi pihak ketiga. Untuk informasi selengkapnya, lihat [Dapatkan nilai yang disimpan di layanan lain menggunakan referensi dinamis](dynamic-references.md).

Jika Anda ingin mengizinkan pengguna template untuk menentukan nilai dari yang berbeda Akun AWS, jangan gunakan tipe parameter AWS-specific. Sebaliknya, tentukan parameter tipe `String` atau`CommaDelimitedList`. 

Ada beberapa hal yang perlu diingat dengan tipe parameter Systems Manager:
+ Anda dapat melihat nilai parameter yang diselesaikan pada tab **Parameter** tumpukan di konsol, atau dengan menjalankan [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stacks.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stacks.html)atau [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-change-set.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-change-set.html). Ingat, nilai-nilai ini ditetapkan ketika tumpukan dibuat atau diperbarui, sehingga mereka mungkin berbeda dari nilai terbaru di Parameter Store.
+ Untuk pembaruan tumpukan, saat Anda menggunakan opsi **Use existing value** (atau disetel `UsePreviousValue` ke true), ini berarti Anda ingin tetap menggunakan kunci Parameter Store yang sama, bukan nilainya. CloudFormation selalu mengambil nilai terbaru.
+ Jika Anda menentukan nilai yang diizinkan atau kendala lainnya, CloudFormation validasi terhadap kunci parameter yang Anda tentukan, tetapi bukan nilainya. Anda harus memvalidasi nilai di Parameter Store itu sendiri.
+ Saat Anda membuat atau memperbarui tumpukan dan membuat set perubahan, CloudFormation gunakan nilai apa pun yang ada di Parameter Store pada saat itu. Jika parameter tertentu tidak ada di Parameter Store di bawah pemanggil Akun AWS, CloudFormation mengembalikan kesalahan validasi.
+ Ketika Anda menjalankan set perubahan, CloudFormation menggunakan nilai-nilai yang ditentukan dalam set perubahan. Anda harus meninjau nilai-nilai ini sebelum mengeksekusi perubahan yang ditetapkan karena mereka mungkin berubah dalam Penyimpanan Parameter antara waktu saat Anda membuat perubahan set dan menjalankannya.
+ Untuk parameter Parameter Store yang disimpan dalam hal yang sama Akun AWS, Anda harus memberikan nama parameter. Untuk parameter Parameter Store yang dibagikan oleh yang lain Akun AWS, Anda harus memberikan parameter ARN lengkap.

## Jenis parameter AWS spesifik yang didukung
<a name="aws-specific-parameter-types-supported"></a>

CloudFormation mendukung jenis AWS-spesifik berikut:

`AWS::EC2::AvailabilityZone::Name`  
Availability Zone, seperti `us-west-2a`.

`AWS::EC2::Image::Id`  
ID gambar Amazon EC2, seperti. `ami-0ff8a91507f77f867` Perhatikan bahwa CloudFormation konsol tidak menampilkan daftar drop-down nilai untuk jenis parameter ini.

`AWS::EC2::Instance::Id`  
ID instans Amazon EC2, seperti. `i-1e731a32`

`AWS::EC2::KeyPair::KeyName`  
Nama key pair Amazon EC2.

`AWS::EC2::SecurityGroup::GroupName`  
Nama grup keamanan VPC default, seperti. `my-sg-abc`

`AWS::EC2::SecurityGroup::Id`  
ID grup keamanan, seperti `sg-a123fd85`.

`AWS::EC2::Subnet::Id`  
ID subnet, seperti `subnet-123a351e`.

`AWS::EC2::Volume::Id`  
ID volume Amazon EBS, seperti`vol-3cdd3f56`.

`AWS::EC2::VPC::Id`  
ID VPC, seperti `vpc-a123baa3`.

`AWS::Route53::HostedZone::Id`  
ID zona yang dihosting Amazon Route 53, seperti`Z23YXV4OVPL04A`.

`List<AWS::EC2::AvailabilityZone::Name>`  
Susunan Availability Zone untuk suatu wilayah, seperti `us-west-2a, us-west-2b`.

`List<AWS::EC2::Image::Id>`  
Array gambar Amazon EC2 IDs, seperti. `ami-0ff8a91507f77f867, ami-0a584ac55a7631c0c` Perhatikan bahwa CloudFormation konsol tidak menampilkan daftar drop-down nilai untuk jenis parameter ini.

`List<AWS::EC2::Instance::Id>`  
Array instans Amazon EC2 IDs, seperti. `i-1e731a32, i-1e731a34`

`List<AWS::EC2::SecurityGroup::GroupName>`  
Array nama grup keamanan VPC default, seperti. `my-sg-abc, my-sg-def`

`List<AWS::EC2::SecurityGroup::Id>`  
Sebuah array dari kelompok keamanan IDs, seperti `sg-a123fd85, sg-b456fd85`

`List<AWS::EC2::Subnet::Id>`  
Sebuah array dari subnet IDs, seperti `subnet-123a351e, subnet-456b351e`

`List<AWS::EC2::Volume::Id>`  
Array volume Amazon EBS IDs, seperti`vol-3cdd3f56, vol-4cdd3f56`.

`List<AWS::EC2::VPC::Id>`  
Array VPC IDs, seperti `vpc-a123baa3, vpc-b456baa3`

`List<AWS::Route53::HostedZone::Id>`  
Array zona yang dihosting Amazon Route 53 IDs, seperti`Z23YXV4OVPL04A, Z23YXV4OVPL04B`.

## Jenis parameter Systems Manager yang Didukung
<a name="systems-manager-parameter-types-supported"></a>

CloudFormation mendukung jenis parameter Systems Manager berikut:

`AWS::SSM::Parameter::Name`  
Nama kunci parameter Systems Manager. Gunakan jenis parameter ini hanya untuk memeriksa apakah ada parameter yang diperlukan. CloudFormation tidak akan mengambil nilai aktual yang terkait dengan parameter. 

`AWS::SSM::Parameter::Value<String>`  
Parameter Systems Manager yang nilainya adalah string. Hal ini sesuai dengan `String` tipe parameter di Penyimpanan Parameter.

`AWS::SSM::Parameter::Value<List<String>>` atau `AWS::SSM::Parameter::Value<CommaDelimitedList>`  
Parameter Systems Manager yang nilainya adalah daftar string. Hal ini sesuai dengan `StringList` tipe parameter di Penyimpanan Parameter.

`AWS::SSM::Parameter::Value<AWS-specific parameter type>`  
Parameter Systems Manager yang nilainya adalah tipe parameter AWS-spesifik.   
Sebagai contoh, berikut menentukan `AWS::EC2::KeyPair::KeyName` tipe:  
+ `AWS::SSM::Parameter::Value<AWS::EC2::KeyPair::KeyName>`

`AWS::SSM::Parameter::Value<List<AWS-specific parameter type>>`  
Parameter Systems Manager yang nilainya adalah daftar tipe parameter AWS-spesifik.   
Sebagai contoh, berikut menentukan daftar `AWS::EC2::KeyPair::KeyName` tipe:  
+ `AWS::SSM::Parameter::Value<List<AWS::EC2::KeyPair::KeyName>>`

## Tipe parameter Systems Manager yang tidak didukung
<a name="systems-manager-parameter-types-unsupported"></a>

CloudFormation tidak mendukung tipe parameter Systems Manager berikut:
+ Daftar tipe parameter Systems Manager — misalnya: `List<AWS::SSM::Parameter::Value<String>>`

Selain itu, CloudFormation tidak mendukung mendefinisikan parameter template sebagai tipe parameter `SecureString` Systems Manager. Namun, Anda dapat menentukan string aman sebagai *nilai* parameter untuk sumber daya tertentu. Lihat informasi yang lebih lengkap di [Dapatkan nilai yang disimpan di layanan lain menggunakan referensi dinamis](dynamic-references.md).