View a markdown version of this page

Gunakan variabel dalam dokumen komponen kustom Anda - EC2 Image Builder

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

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

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,, 0-9) A-Z, tanda hubung (-), atau garis bawah (_).

  • 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. Jenis 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 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

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

Aturan untuk nama parameter
  • Nama harus antara 3 dan 128 karakter panjangnya.

  • Nama hanya dapat berisi karakter alfanumerik (a-z,, 0-9) A-Z, tanda hubung (-), atau garis bawah (_).

  • Nama harus unik di dalam dokumen.

  • Nama harus ditentukan sebagai string YAMM.

Sintaksis

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 parameter.

Nilai parameter referensi dalam dokumen

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

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 YAMM 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? dalam AWS Secrets Manager User Guide. Untuk informasi selengkapnya tentang AWS Systems Manager Parameter Store, lihat AWS Systems Manager Parameter Menyimpan di Panduan AWS Systems Manager Pengguna.

Sintaksis

--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 kunci-nilai 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

Anda dapat mereferensikan AWS Systems Manager parameter Parameter Store (parameter SSM) dalam dokumen komponen Anda dengan mengawali variabel dengan. 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 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.

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 tersebut menulis nilai plaintext ke log.

Izin IAM yang diperlukan

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

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

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

menyelesaikan fungsi

resolveFungsi 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.

resolveFungsi ini hanya mendukung resolusi dinamis dari bagian nama parameter SSM.

Sintaksis

dynamic_variableDalam contoh berikut mewakili nama parameter SSM, dan harus menjadi 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

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) }}"

Menggunakan variabel lingkungan

AWSTOE dapat menyelesaikan variabel lingkungan sistem operasi yang disetel pada instance build atau pengujian. Untuk mereferensikan variabel lingkungan, awali nama variabel denganenv:. Misalnya, {{ env:MY_VAR }} menyelesaikan nilai variabel MY_VAR lingkungan pada instance.

AWSTOE sama persis dengan nama variabel lingkungan. Sebuah nama dapat berisi karakter apa pun yang valid untuk sistem operasi, termasuk titik, spasi, dan tanda kurung. Misalnya, {{ env:ProgramFiles(x86) }} adalah referensi yang valid pada Windows.

Contoh berikut menunjukkan bagaimana untuk referensi variabel lingkungan dalam komponen:

name: UseEnvironmentVariable description: This sample component prints out the value of an environment variable. schemaVersion: 1.0 phases: - name: build steps: - name: EchoEnvironmentVariable action: ExecuteBash inputs: commands: - echo "The value of SOME_VAR is {{ env:SOME_VAR }}."

Variabel lingkungan yang disediakan Image Builder

Saat Image Builder menjalankan komponen pada instance build atau pengujian, Image Builder menetapkan variabel lingkungan yang menggambarkan build image saat ini. Komponen Anda membaca nilai-nilai ini dengan awalan AWSTOE env: variabel yang dijelaskan sebelumnya dalam topik ini.

Image Builder menyediakan variabel lingkungan berikut.

Nama

Deskripsi

IMAGE_WORKFLOW_EXECUTION_ID

ID eksekusi alur kerja untuk build image saat ini.

IMAGE_STEP_EXECUTION_ID

ID eksekusi langkah alur kerja yang menjalankan komponen.

IMAGE_BUILD_VERSION_ARN

Amazon Resource Name (ARN) dari versi build image yang dibuat Image Builder.

IMAGE_PIPELINE_ARN

ARN dari pipa gambar. Nilai ini adalah string kosong saat build tidak dijalankan dari pipeline.

IMAGE_PHASE

Tahap pembuatan gambar saat ini: BUILDING selama tahap pembuatan, atau TESTING selama tahap pengujian.

Tahap ini berbeda dari fase dokumen AWSTOE komponen (build,validate, dantest). IMAGE_PHASENilai tidak pernah mengambil nama fase dokumen komponen.

IMAGE_VERSION

Versi semantik gambar (misalnya,2.1.1).

IMAGE_BUILD_VERSION

Nomor versi build gambar (misalnya,1).

Contoh berikut menunjukkan cara membaca variabel lingkungan Image Builder dalam komponen:

name: UseImageBuilderEnvironmentVariables description: This sample component prints out Image Builder environment variable values. schemaVersion: 1.0 phases: - name: build steps: - name: EchoImageBuildValues action: ExecuteBash inputs: commands: - echo "Image phase: {{ env:IMAGE_PHASE }}." - echo "Image build version ARN: {{ env:IMAGE_BUILD_VERSION_ARN }}."

Gunakan variabel metadata instance (IMDS)

AWSTOE dapat menyelesaikan nilai dari Amazon EC2 Instance Metadata Service (IMDS) pada instance build atau pengujian. Untuk mereferensikan nilai metadata, awali jalur metadata dengan. aws:imds: Path relatif terhadap kategori metadata meta-data/ instance. Misalnya, {{ aws:imds:instance-id }} menyelesaikan ID instance. Referensi {{ aws:imds:placement/region }} menyelesaikan ke. Wilayah AWS

Jalur metadata yang tidak didukung

AWSTOE tidak mendukung jalur iam/ dan identity-credentials/ metadata. Jalur ini mengembalikan data kredensi sensitif. AWSTOE menolak referensi ke mereka ketika memvalidasi dokumen komponen.

Untuk informasi selengkapnya tentang metadata instans, lihat Menggunakan metadata instans untuk mengelola instans EC2 Anda di Panduan Pengguna Amazon EC2.

Contoh berikut menunjukkan bagaimana untuk referensi nilai IMDS dalam komponen:

name: UseInstanceMetadataVariable description: This sample component prints out the instance ID from IMDS. schemaVersion: 1.0 phases: - name: build steps: - name: EchoInstanceId action: ExecuteBash inputs: commands: - echo "The instance ID is {{ aws:imds:instance-id }}."

Gunakan variabel konteks

AWSTOE menyediakan variabel konteks yang menggambarkan eksekusi dan instance saat ini. Untuk mereferensikan variabel konteks, awali kunci dengancontext:. Misalnya, {{ context:accountId }} menyelesaikan ke ID AWS akun.

AWSTOE menyediakan variabel konteks berikut.

Key

Deskripsi

executionId

ID AWSTOE eksekusi saat ini.

accountId

ID AWS akun tempat instance berjalan.

region

Di Wilayah AWS mana instance berjalan.

osPlatform

Platform sistem operasi dari instance (misalnya, linux atauwindows).

osName

Nama sistem operasi (misalnya, Amazon Linux atauUbuntu). Di Linux, AWSTOE baca nilai ini dari/etc/os-release.

osVersion

Versi sistem operasi (misalnya,2023). Di Linux, AWSTOE baca nilai ini dari/etc/os-release. Di Windows dan macOS, nilai ini adalah string kosong.

date

Tanggal saat ini dalam UTC, dalam YYYY-MM-DD format (misalnya,2026-06-15).

dateTime

Tanggal dan waktu saat ini dalam UTC, dalam format RFC 3339 (misalnya,). 2026-06-15T10:30:00Z

uuid

Versi 4 UUID yang dihasilkan secara acak.

hostname

Nama host dari instance.

phase

Nama fase yang sedang berjalan.

step

Nama langkah yang sedang berjalan.

catatan

Untuk mendapatkan ID instance, gunakan variabel IMDS {{ aws:imds:instance-id }} daripada variabel konteks.

Contoh berikut menunjukkan bagaimana untuk referensi variabel konteks dalam komponen:

name: UseContextVariables description: This sample component prints out context variable values. schemaVersion: 1.0 phases: - name: build steps: - name: EchoContextValues action: ExecuteBash inputs: commands: - echo "Account: {{ context:accountId }}, OS: {{ context:osName }}."