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 |
|---|---|---|
|
|
Ya |
Nama konstanta. Harus unik untuk dokumen (tidak boleh sama dengan nama parameter atau konstanta lainnya). |
|
Ya | Nilai konstanta. |
|
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:
- {{tidak valid, karena tidak diidentifikasi sebagai string.MyConstant}}Namun, referensi berikut ini valid:
- '{{danMyConstant}}'- "{{.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 |
|---|---|---|
|
Ya |
Nama parameter. Harus unik untuk dokumen (tidak boleh sama dengan nama parameter atau konstanta lainnya). |
|
Ya |
Tipe data parameter. Jenis yang didukung meliputi: |
|
Tidak |
Nilai default untuk parameter. |
|
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:
- {{tidak valid, karena tidak diidentifikasi sebagai string.MyParameter}}Namun, referensi berikut ini valid:
- '{{danMyParameter}}'- "{{.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
--parametersname1=value1,name2=value2...
Opsi CLI |
Diperlukan |
Deskripsi |
|---|---|---|
--parameter |
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
--parameteropsi ini tidak valid:--parameters ntp-server= -
Tetapkan satu parameter pasangan kunci-nilai dengan
--parameteropsi di: AWS CLI--parameters ntp-server=ntp-server-windows-qe.us-east1.amazon.com -
Tetapkan beberapa pasangan kunci-nilai parameter dengan
--parameteropsi 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
stringListjenis. -
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:
Untuk mengakses nilai terenkripsi, Anda juga memerlukan izin berikut:
-
Tambahkan
kms:DecryptSecureStringparameter atau AWS Secrets Manager nilai yang dienkripsi dengan pelanggan yang dikelola. AWS KMS key -
Tambahkan
secretsmanager:GetSecretValuejika 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: menyelesaikan nilai variabel MY_VAR }}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 |
|---|---|
|
ID eksekusi alur kerja untuk build image saat ini. |
|
ID eksekusi langkah alur kerja yang menjalankan komponen. |
|
Amazon Resource Name (ARN) dari versi build image yang dibuat Image Builder. |
|
ARN dari pipa gambar. Nilai ini adalah string kosong saat build tidak dijalankan dari pipeline. |
|
Tahap pembuatan gambar saat ini: Tahap ini berbeda dari fase dokumen AWSTOE komponen ( |
|
Versi semantik gambar (misalnya, |
|
Nomor versi build gambar (misalnya, |
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 |
|---|---|
|
ID AWSTOE eksekusi saat ini. |
|
ID AWS akun tempat instance berjalan. |
|
Di Wilayah AWS mana instance berjalan. |
|
Platform sistem operasi dari instance (misalnya, |
|
Nama sistem operasi (misalnya, |
|
Versi sistem operasi (misalnya, |
|
Tanggal saat ini dalam UTC, dalam |
|
Tanggal dan waktu saat ini dalam UTC, dalam format RFC 3339 (misalnya,). |
|
Versi 4 UUID yang dihasilkan secara acak. |
|
Nama host dari instance. |
|
Nama fase yang sedang berjalan. |
|
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 }}."