

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

# Gunakan variabel dalam dokumen komponen kustom Anda
<a name="toe-user-defined-variables"></a>

Variabel menyediakan cara untuk memberi label data dengan nama yang bermakna yang dapat digunakan di seluruh aplikasi. Anda dapat menentukan variabel kustom dengan format sederhana dan mudah dibaca untuk alur kerja yang kompleks, dan mereferensikannya dalam dokumen komponen aplikasi YAMM untuk komponen. AWSTOE 

Bagian ini menyediakan informasi untuk membantu Anda menentukan variabel untuk AWSTOE komponen Anda dalam dokumen komponen aplikasi YAMAL, termasuk sintaks, batasan nama, dan contoh.

## Konstanta
<a name="user-defined-vars-constants"></a>

Konstanta adalah variabel yang tidak dapat diubah yang tidak dapat dimodifikasi atau diganti setelah ditentukan. Konstanta dapat didefinisikan menggunakan nilai-nilai di `constants` bagian AWSTOE dokumen.

**Aturan untuk nama konstan**
+ Nama harus antara 3 dan 128 karakter panjangnya.
+ Nama hanya dapat berisi karakter alfanumerik (a-z, A-Z, 0-9), tanda hubung (-), atau garis bawah (\$1).
+ Nama harus unik di dalam dokumen.
+ Nama harus ditentukan sebagai string YAMM.

**Sintaksis**

```
constants:
  - <name>:
      type: <constant type>
      value: <constant value>
```


| Nama kunci | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|  `name`  |  Ya  | Nama konstanta. Harus unik untuk dokumen (tidak boleh sama dengan nama parameter atau konstanta lainnya). | 
| `value` | Ya | Nilai konstanta. | 
| `type` | Ya | Jenis konstanta. Tipe yang didukung adalahstring. | 

**Referensi nilai konstan dalam dokumen**  
Anda dapat mereferensikan konstanta dalam input langkah atau loop di dalam dokumen YAMM Anda, sebagai berikut:
+ Referensi konstan peka huruf besar/kecil, dan namanya harus sama persis.
+ Nama harus dilampirkan dalam kawat gigi keriting ganda. `{{` *MyConstant* `}}`
+ Spasi diperbolehkan di dalam kurung kurawal, dan secara otomatis dipangkas. Misalnya, semua referensi berikut ini valid:

  `{{ MyConstant }}`, `{{ MyConstant}}`, `{{MyConstant }}`, `{{MyConstant}}`
+ Referensi dalam dokumen YAMAL harus ditentukan sebagai string (terlampir dalam tanda kutip tunggal atau ganda).

  Misalnya: `- {{ MyConstant }}` tidak valid, karena tidak diidentifikasi sebagai string.

  Namun, referensi berikut ini valid: `- '{{ MyConstant }}'` dan`- "{{ MyConstant }}"`.

**Contoh**  
Konstan direferensikan dalam input langkah

```
name: Download AWS CLI version 2
schemaVersion: 1.0
constants:
  - Source:
      type: string
      value: https://awscli.amazonaws.com/AWSCLIV2.msi
phases:
  - name: build
    steps:
      - name: Download
        action: WebDownload
        inputs:
          - source: '{{ Source }}'
            destination: 'C:\Windows\Temp\AWSCLIV2.msi'
```

Konstan direferensikan dalam input loop

```
name: PingHosts
schemaVersion: 1.0
constants:
  - Hosts:
      type: string
      value: 127.0.0.1,amazon.com
phases:
  - name: build
    steps:
      - name: Ping
        action: ExecuteBash
        loop:
          forEach:
            list: '{{ Hosts }}'
            delimiter: ','
        inputs:
          commands:
            - ping -c 4 {{ loop.value }}
```

## Parameter
<a name="user-defined-vars-parameters"></a>

Parameter adalah variabel yang dapat berubah, dengan pengaturan yang dapat disediakan aplikasi pemanggilan saat runtime. Anda dapat menentukan parameter di `Parameters` bagian dokumen YAMB.

**Aturan untuk nama parameter**
+ Nama harus antara 3 dan 128 karakter panjangnya.
+ Nama hanya dapat berisi karakter alfanumerik (a-z, A-Z, 0-9), tanda hubung (-), atau garis bawah (\$1).
+ Nama harus unik di dalam dokumen.
+ Nama harus ditentukan sebagai string YAMM.

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

```
parameters:
  - <name>:
      type: <parameter type>
      default: <parameter value>
      description: <parameter description>
```


| Nama kunci | Diperlukan | Deskripsi | 
| --- | --- | --- | 
| `name` | Ya | Nama parameter. Harus unik untuk dokumen (tidak boleh sama dengan nama parameter atau konstanta lainnya). | 
| `type` | Ya | Tipe data parameter. Jenis yang didukung meliputi:`string`. | 
| `default` | Tidak | Nilai default untuk parameter. | 
| `description` | Tidak | Menjelaskan parameternya. | 

### Nilai parameter referensi dalam dokumen
<a name="vars-parameters-referencing"></a>

Anda dapat mereferensikan parameter dalam input langkah atau loop di dalam dokumen YAMM Anda, sebagai berikut:
+ Referensi parameter peka huruf besar/kecil, dan namanya harus sama persis.
+ Nama harus dilampirkan dalam kawat gigi keriting ganda. `{{` *MyParameter* `}}`
+ Spasi diperbolehkan di dalam kurung kurawal, dan secara otomatis dipangkas. Misalnya, semua referensi berikut ini valid:

  `{{ MyParameter }}`, `{{ MyParameter}}`, `{{MyParameter }}`, `{{MyParameter}}`
+ Referensi dalam dokumen YAMAL harus ditentukan sebagai string (terlampir dalam tanda kutip tunggal atau ganda).

  Misalnya: `- {{ MyParameter }}` tidak valid, karena tidak diidentifikasi sebagai string.

  Namun, referensi berikut ini valid: `- '{{ MyParameter }}'` dan`- "{{ MyParameter }}"`.

**Contoh**  
Contoh berikut menunjukkan cara menggunakan parameter dalam dokumen YAMM Anda:
+ Lihat parameter dalam input langkah:

  ```
  name: Download AWS CLI version 2
  schemaVersion: 1.0
  parameters:
    - Source:
        type: string
        default: 'https://awscli.amazonaws.com/AWSCLIV2.msi'
        description: The AWS CLI installer source URL.
  phases:
    - name: build
      steps:
        - name: Download
          action: WebDownload
          inputs:
            - source: '{{ Source }}'
              destination: 'C:\Windows\Temp\AWSCLIV2.msi'
  ```
+ Lihat parameter dalam input loop:

  ```
  name: PingHosts
  schemaVersion: 1.0
  parameters:
    - Hosts:
        type: string
        default: 127.0.0.1,amazon.com
        description: A comma separated list of hosts to ping.
  phases:
    - name: build
      steps:
        - name: Ping
          action: ExecuteBash
          loop:
            forEach:
              list: '{{ Hosts }}'
              delimiter: ','
          inputs:
            commands:
              - ping -c 4 {{ loop.value }}
  ```

### Ganti parameter saat runtime
<a name="vars-parameters-set-at-runtime"></a>

Anda dapat menggunakan `--parameters` opsi dari AWS CLI with a key-value pair untuk menetapkan nilai parameter saat runtime.
+ <name><value>Tentukan pasangan kunci-nilai parameter sebagai nama dan nilai, dipisahkan oleh tanda sama dengan (=).
+ Beberapa parameter harus dipisahkan dengan koma.
+ Nama parameter yang tidak ditemukan dalam dokumen komponen YAMB diabaikan.
+ Nama parameter dan nilai keduanya diperlukan.

**penting**  
Parameter komponen adalah nilai teks biasa, dan masuk AWS CloudTrail. Kami menyarankan Anda menggunakan AWS Secrets Manager atau AWS Systems Manager Parameter Store untuk menyimpan rahasia Anda. Untuk informasi selengkapnya tentang Secrets Manager, lihat [Apa itu Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) dalam *AWS Secrets Manager User Guide*. Untuk informasi selengkapnya tentang AWS Systems Manager Parameter Store, lihat [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) di *Panduan AWS Systems Manager Pengguna*.

#### Sintaksis
<a name="vars-runtime-parameters-syntax"></a>

```
--parameters name1=value1,name2=value2...
```


| Opsi CLI | Diperlukan | Deskripsi | 
| --- | --- | --- | 
| --parameter *name* =*value*,... | Tidak | Opsi ini mengambil daftar pasangan kunci-nilai, dengan nama parameter sebagai kunci. | 

**Contoh**  
Contoh berikut menunjukkan cara menggunakan parameter dalam dokumen YAMM Anda:
+ Pasangan nilai kunci parameter yang ditentukan dalam `--parameter` opsi ini tidak valid:

  ```
  --parameters ntp-server=
  ```
+ Tetapkan satu parameter pasangan kunci-nilai dengan `--parameter` opsi di: AWS CLI

  ```
  --parameters ntp-server=ntp-server-windows-qe.us-east1.amazon.com
  ```
+ Tetapkan beberapa pasangan nilai kunci parameter dengan `--parameter` opsi di: AWS CLI

  ```
  --parameters ntp-server=ntp-server.amazon.com,http-url=https://internal-us-east1.amazon.com
  ```

## Gunakan parameter Systems Manager Parameter Store
<a name="toe-ssm-parameters"></a>

Anda dapat mereferensikan AWS Systems Manager parameter Parameter Store (parameter SSM) dalam dokumen komponen Anda dengan awalan variabel. `aws:ssm` Misalnya, 

`{{ aws:ssm:/my/param }}`menyelesaikan ke nilai parameter SSM. `/my/param`

Fitur ini mendukung jenis parameter SSM berikut:
+ String - Peta ke tipe AWSTOE string.
+ StringList — Peta ke AWSTOE `stringList` jenis.
+ SecureString — Peta ke tipe AWSTOE string.

Untuk informasi selengkapnya tentang Parameter Store lihat [AWS Systems Manager Parameter Menyimpan](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) di *Panduan AWS Systems Manager Pengguna*.

Anda juga dapat mereferensikan AWS Secrets Manager rahasia menggunakan parameter `SecureString` SSM. Sebagai contoh: `{{ aws:ssm:/aws/reference/secretsmanager/test/test-secret }}`. Untuk informasi selengkapnya, lihat [Mereferensikan AWS Secrets Manager rahasia dari parameter Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/integration-ps-secretsmanager.html).

**penting**  
Image Builder mengecualikan resolusi `SecureString` parameter dari lognya. Namun, Anda juga bertanggung jawab untuk memastikan bahwa informasi sensitif tidak dicatat melalui perintah yang dikeluarkan dalam dokumen komponen. Misalnya, jika Anda menggunakan `echo` perintah dengan string aman, perintah menulis nilai plaintext ke log.

### Izin IAM yang diperlukan
<a name="toe-ssm-parameters-permissions"></a>

Untuk menggunakan parameter Systems Manager di komponen Anda, peran instans Anda harus memiliki `ssm:GetParameter` izin untuk ARN sumber daya parameter. Contoh:

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": "ssm:GetParameter",
			"Resource": "arn:aws:ssm:*:111122223333:parameter/ImageBuilder-*"
		}
	]
}
```

------

Untuk mengakses nilai terenkripsi, Anda juga memerlukan izin berikut:
+ Tambahkan `kms:Decrypt` `SecureString` parameter atau AWS Secrets Manager nilai yang dienkripsi dengan pelanggan yang dikelola. AWS KMS key
+ Tambahkan `secretsmanager:GetSecretValue` jika Anda mereferensikan rahasia Secrets Manager.

### Referensi parameter SSM dalam dokumen komponen
<a name="toe-ssm-parameters-example"></a>

Contoh berikut menunjukkan cara mereferensikan parameter Systems Manager Parameter Store parameter Systems Manager dalam komponen:

```
name: UseSSMParameterVariable
description: This is a sample component document that prints out the value of an SSM Parameter. Never do this for a SecureString parameter.
schemaVersion: 1.0

phases:
  - name: verify
    steps:
      - name: EchoParameterValue
        action: ExecuteBash
        inputs:
          commands:
            - echo "Log SSM parameter name: /my/test/param, value {{ aws:ssm:/my/test/param }}."
```

### Resolusi variabel runtime dinamis untuk parameter SSM
<a name="toe-dynamic-vars"></a>

AWSTOE menyediakan fungsi bawaan berikut yang dapat Anda gunakan dalam referensi variabel untuk memanipulasi atau mengubah nilai saat runtime.

#### menyelesaikan fungsi
<a name="toe-function-resolve"></a>

`resolve`Fungsi ini menyelesaikan referensi variabel di dalam referensi variabel lain, memungkinkan untuk referensi nama variabel dinamis. Ini berguna saat bekerja dengan parameter SSM di mana bagian dari jalur parameter dapat bervariasi dan diteruskan sebagai parameter dokumen.

`resolve`Fungsi ini hanya mendukung resolusi dinamis dari bagian nama parameter SSM.

##### Sintaksis
<a name="toe-function-resolve-syntax"></a>

`dynamic_variable`Dalam contoh berikut mewakili nama parameter SSM, dan harus salah satu dari berikut ini:
+ Referensi parameter SSM (misalnya,`aws:ssm:/my/param`)
+ Referensi parameter dokumen komponen (misalnya,`parameter-name`)

```
{{ aws:ssm:resolve(dynamic_variable) }}
```

##### Contoh: Menyelesaikan parameter SSM saat runtime
<a name="toe-function-resolve-examples"></a>

Contoh berikut menunjukkan cara menggunakan `resolve` fungsi dalam dokumen komponen YAMM:

```
name: SsmParameterTest
description: This component verifies an SSM parameter variable reference with the echo command.
schemaVersion: 1.0

parameters:
  - parameter-name:
      type: string
      description: "test"

phases:
  - name: validate
    steps:
      - name: PrintDynamicVariable
        action: ExecuteBash
        inputs:
          commands:
            - echo "{{ aws:ssm:resolve(parameter-name) }}"
```