

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

# Gunakan komponen untuk menyesuaikan image Image Builder
<a name="manage-components"></a>

Image Builder menggunakan aplikasi manajemen komponen AWS Task Orchestrator and Executor (AWSTOE) untuk mengatur alur kerja yang kompleks. Membangun dan menguji komponen yang bekerja dengan AWSTOE aplikasi didasarkan pada dokumen YAMAL yang menentukan skrip untuk menyesuaikan atau menguji gambar Anda. Untuk image AMI, Image Builder menginstal komponen dan aplikasi manajemen AWSTOE komponen pada instans build dan pengujian Amazon EC2. Untuk gambar kontainer, AWSTOE komponen dan aplikasi manajemen komponen dipasang di dalam wadah yang sedang berjalan. 

Image Builder menggunakan AWSTOE untuk melakukan semua aktivitas on-instance. Tidak ada pengaturan tambahan yang diperlukan untuk berinteraksi AWSTOE saat Anda menjalankan perintah Image Builder atau menggunakan konsol Image Builder.

**catatan**  
Ketika komponen yang dikelola oleh Amazon mencapai akhir masa dukungannya, komponen tersebut tidak lagi dipertahankan. Sekitar empat minggu sebelum ini terjadi, setiap akun yang menggunakan komponen menerima pemberitahuan, dan daftar resep yang terpengaruh di akun mereka dari mereka Dasbor AWS Health. Untuk mempelajari selengkapnya AWS Health, lihat [Panduan AWS Health Pengguna](https://docs.aws.amazon.com/health/latest/ug/).

**Tahapan alur kerja untuk membangun gambar baru**  
Alur kerja Image Builder untuk membuat gambar baru mencakup dua tahapan berbeda berikut.

1. **Tahap build** (pre-snapshot) — Selama tahap build, Anda membuat perubahan pada instance build Amazon EC2 yang menjalankan image dasar, untuk membuat baseline untuk image baru Anda. Misalnya, resep Anda dapat menyertakan komponen yang menginstal aplikasi atau memodifikasi pengaturan firewall sistem operasi.

   Fase berikut dari dokumen komponen Anda berjalan selama tahap pembuatan:
   + build
   + validasi

   Setelah tahap ini selesai dengan sukses, Image Builder membuat snapshot atau image kontainer yang digunakan untuk tahap pengujian dan seterusnya.

1. **Tahap pengujian** (post-snapshot) — Selama tahap pengujian, ada beberapa perbedaan antara gambar yang membuat AMI dan gambar kontainer. Untuk alur kerja AMI, Image Builder meluncurkan instans EC2 dari snapshot yang dibuatnya sebagai langkah terakhir dari tahap pembuatan. Pengujian dijalankan pada instance baru untuk memvalidasi pengaturan dan memastikan bahwa instance berfungsi seperti yang diharapkan. Untuk alur kerja kontainer, pengujian dijalankan pada instance yang sama yang digunakan untuk membangun.

   Fase berikut dari dokumen komponen Anda berjalan untuk setiap komponen yang disertakan dalam resep selama tahap pengujian build gambar: 
   + pengujian

   Fase komponen ini berlaku untuk tipe komponen Build dan Test. Setelah tahap ini selesai dengan sukses, Image Builder dapat membuat dan mendistribusikan gambar akhir Anda dari snapshot atau gambar kontainer.

**catatan**  
Sementara kerangka AWSTOE aplikasi memungkinkan Anda untuk menentukan banyak fase dalam dokumen komponen, Image Builder memiliki aturan ketat tentang fase apa yang dijalankannya, dan selama tahapan mana ia menjalankannya. Agar komponen dapat berjalan selama tahap pembuatan gambar, dokumen komponen harus mendefinisikan setidaknya satu dari fase ini: `build` atau`validate`. Agar komponen dapat berjalan selama tahap pengujian gambar, dokumen komponen harus menentukan `test` fase, dan tidak ada fase lainnya.  
Karena Image Builder menjalankan tahapan secara independen, referensi rantai dalam dokumen komponen tidak dapat melewati batas tahap. Anda tidak dapat merantai nilai dari fase yang berjalan di tahap build ke fase yang berjalan di tahap pengujian. Namun, Anda dapat menentukan parameter input ke target yang dimaksud, dan meneruskan nilai melalui baris perintah. Untuk informasi selengkapnya tentang menyetel parameter komponen dalam resep Image Builder, lihat[Tutorial: Buat komponen kustom dengan parameter input](tutorial-component-parameters.md).

Untuk membantu pemecahan masalah pada AWSTOE instance build atau pengujian Anda, buat folder log yang berisi dokumen input dan file log untuk melacak apa yang terjadi setiap kali komponen berjalan. Jika Anda mengonfigurasi bucket Amazon S3 dalam konfigurasi pipeline, log juga ditulis di sana. Untuk informasi selengkapnya tentang dokumen YAMAL dan keluaran log, lihat[Gunakan kerangka dokumen AWSTOE komponen untuk komponen kustom](toe-use-documents.md).

**Tip**  
Bila Anda memiliki banyak komponen untuk dilacak, penandaan membantu Anda mengidentifikasi komponen atau versi tertentu berdasarkan tag yang telah Anda tetapkan padanya. Untuk informasi selengkapnya tentang menandai sumber daya Anda menggunakan perintah Image Builder di AWS CLI, lihat [Memberi tanda pada sumber daya](tag-resources.md) bagian panduan ini.

Bagian ini mencakup cara membuat daftar, melihat, membuat, dan mengimpor komponen, menggunakan konsol Image Builder atau perintah di AWS CLI.

**Topics**
+ [Daftar dan lihat detail komponen](component-details.md)
+ [Gunakan AWS Marketplace komponen untuk menyesuaikan gambar Anda](use-marketplace-components.md)
+ [Menggunakan komponen terkelola untuk menyesuaikan image Image Builder](use-managed-components.md)
+ [Mengembangkan komponen kustom untuk image Image Builder](create-custom-components.md)
+ [Bagaimana Image Builder menggunakan AWS Task Orchestrator and Executor aplikasi untuk mengelola komponen](toe-component-manager.md)

# Daftar dan lihat detail komponen
<a name="component-details"></a>

Bagian ini menjelaskan bagaimana Anda dapat menemukan informasi dan melihat detail untuk komponen yang Anda gunakan dalam resep EC2 Image Builder Anda.

**Topics**
+ [Daftar komponen Image Builder](#list-components)
+ [Daftar versi pembuatan komponen dari AWS CLI](#cli-list-component-versions)
+ [Dapatkan detail komponen dari AWS CLI](#cli-get-component)
+ [Dapatkan detail kebijakan komponen dari AWS CLI](#cli-get-component-policy)

## Daftar komponen Image Builder
<a name="list-components"></a>

Anda dapat menggunakan salah satu metode berikut untuk membuat daftar dan memfilter komponen Image Builder.

------
#### [ Konsol Manajemen AWS ]

Untuk menampilkan daftar komponen di Konsol Manajemen AWS, ikuti langkah-langkah berikut:

1. Buka konsol [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/)EC2 Image Builder di.

1. Pilih **Komponen** dari panel navigasi. Secara default, Image Builder menampilkan daftar komponen yang dimiliki akun Anda.

1. Anda dapat memfilter kepemilikan komponen secara opsional. Untuk melihat komponen yang tidak Anda miliki, tetapi memiliki akses, perluas daftar dropdown tipe pemilik dan pilih salah satu nilainya. Daftar jenis pemilik terletak di bilah pencarian, di sebelah kotak teks pencarian. Anda dapat memilih dari nilai-nilai berikut:
   + **AWS Marketplace**— Komponen yang terkait langsung dengan langganan AWS Marketplace produk.
   + **Mulai cepat (dikelola Amazon)** - Komponen yang tersedia untuk umum yang dibuat dan dipelihara Amazon.
   + **Dimiliki oleh saya** — Komponen yang Anda buat. Ini adalah pilihan default.
   + **Berbagi dengan saya** — Komponen yang dibuat dan dibagikan orang lain dengan Anda dari akun mereka.
   + **Pihak ketiga dikelola** — Komponen yang dimiliki pihak ketiga yang Anda langgani. AWS Marketplace

------
#### [ AWS CLI ]

Contoh berikut menunjukkan cara menggunakan **[list-components](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-components.html)** perintah untuk mengembalikan daftar komponen Image Builder yang dimiliki akun Anda.

```
aws imagebuilder list-components
```

Anda dapat memfilter kepemilikan komponen secara opsional. Atribut pemilik mendefinisikan siapa yang memiliki komponen yang ingin Anda daftar. Secara default, permintaan ini mengembalikan daftar komponen yang dimiliki akun Anda. Untuk memfilter hasil menurut pemilik komponen, tentukan salah satu nilai berikut dengan `--owner` parameter saat Anda menjalankan **list-components** perintah.

**Nilai pemilik komponen**
+ `AWSMarketplace`
+ `Amazon`
+ `Self`
+ `Shared`
+ `ThirdParty`

Contoh berikut menunjukkan **list-components** perintah dengan `--owner` parameter untuk memfilter hasil.

```
aws imagebuilder list-components --owner Self
{
    "requestId": "012a3456-b789-01cd-e234-fa5678b9012b",
    "componentVersionList": [
        {
            "arn": "arn:aws:imagebuilder:us-west-2:123456789012:component/sample-component01/1.0.0",
            "name": "sample-component01",
            "version": "1.0.0",
            "platform": "Linux",
            "type": "BUILD",
            "owner": "123456789012",
            "dateCreated": "2020-09-24T16:58:24.444Z"
        },
        {
            "arn": "arn:aws:imagebuilder:us-west-2:123456789012:component/sample-component01/1.0.1",
            "name": "sample-component01",
            "version": "1.0.1",
            "platform": "Linux",
            "type": "BUILD",
            "owner": "123456789012",
            "dateCreated": "2021-07-10T03:38:46.091Z"
        }
    ]
}
```

```
aws imagebuilder list-components --owner Amazon
```

```
aws imagebuilder list-components --owner Shared
```

```
aws imagebuilder list-components --owner ThirdParty
```

------

## Daftar versi pembuatan komponen dari AWS CLI
<a name="cli-list-component-versions"></a>

Contoh berikut menunjukkan cara menggunakan **[list-component-build-versions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-component-build-versions.html)** perintah untuk daftar versi build komponen yang memiliki versi semantik tertentu. Untuk mempelajari lebih lanjut tentang pembuatan versi semantik untuk sumber daya Image Builder, lihat. [Pembuatan versi semantik di Image Builder](ibhow-semantic-versioning.md)

```
aws imagebuilder list-component-build-versions --component-version-arn arn:aws:imagebuilder:us-west-2:123456789012:component/example-component/1.0.1
{
    "requestId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
    "componentSummaryList": [
        {
            "arn": "arn:aws:imagebuilder:us-west-2:123456789012:component/examplecomponent/1.0.1/1",
            "name": "examplecomponent",
            "version": "1.0.1",
            "platform": "Linux",
            "type": "BUILD",
            "owner": "123456789012",
            "description": "An example component that builds, validates and tests an image",
            "changeDescription": "Updated version.",
            "dateCreated": "2020-02-19T18:53:45.940Z",
            "tags": {
                "KeyName": "KeyValue"
            }
        }
    ]
}
```

## Dapatkan detail komponen dari AWS CLI
<a name="cli-get-component"></a>

Contoh berikut menunjukkan cara menggunakan **[get-component](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/get-component.html)** perintah untuk mendapatkan detail komponen saat Anda menentukan Amazon Resource Name (ARN) komponen.

```
aws imagebuilder get-component --component-build-version-arn arn:aws:imagebuilder:us-west-2:123456789012:component/example-component/1.0.1/1
			{
    "requestId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11112",
    "component": {
        "arn": "arn:aws:imagebuilder:us-west-2:123456789012:component/examplecomponent/1.0.1/1",
        "name": "examplecomponent",
        "version": "1.0.1",
        "type": "BUILD",
        "platform": "Linux",
        "owner": "123456789012",
        "data": "name: HelloWorldTestingDocument\ndescription: This is hello world testing document... etc.\"\n",
        "encrypted": true,
        "dateCreated": "2020-09-24T16:58:24.444Z",
        "tags": {}
    }
}
```

## Dapatkan detail kebijakan komponen dari AWS CLI
<a name="cli-get-component-policy"></a>

Contoh berikut menunjukkan cara menggunakan **[get-component-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/get-component-policy.html)** perintah untuk mendapatkan rincian kebijakan komponen saat Anda menentukan ARN komponen.

```
aws imagebuilder get-component-policy --component-arn arn:aws:imagebuilder:us-west-2:123456789012:component/example-component/1.0.1
```

# Gunakan AWS Marketplace komponen untuk menyesuaikan gambar Anda
<a name="use-marketplace-components"></a>

Selain banyak pilihan gambar yang dibuat oleh Independent Software Vendors (ISVs), AWS Marketplace menawarkan komponen yang dapat Anda gunakan untuk menyesuaikan gambar Image Builder Anda sendiri. Anda harus berlangganan AWS Marketplace komponen-komponen ini sebelum Anda dapat menggunakannya dalam resep gambar Anda untuk membangun gambar baru.

Saat Anda menentukan AWS Marketplace komponen dalam resep gambar, Image Builder memvalidasi langganan dan melakukan pemeriksaan dependensi untuk memastikan bahwa Anda memiliki sumber daya yang Anda perlukan untuk menggunakannya. Ketika validasi berhasil, Image Builder membuat unduhan aman untuk komponen dan artefaknya untuk digunakan oleh build pipeline gambar.

## Temukan AWS Marketplace komponen
<a name="use-marketplace-components-discover"></a>

Anda dapat menemukan komponen AWS Marketplace perangkat lunak untuk digunakan dalam resep Anda dari halaman **Temukan produk** di konsol Image Builder, sebagai berikut.

1. Buka konsol [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/)EC2 Image Builder di.

1. Dari panel navigasi, pilih **Temukan produk** di **AWS Marketplace**bagian.

1. Pilih tab **Komponen**. Tab ini mencantumkan semua AWS Marketplace produk yang menggunakan opsi pengiriman yang menyertakan komponen terkait AWS Marketplace.

1. Untuk mencari produk perangkat lunak tertentu yang menyertakan komponen, Anda dapat memasukkan bagian dari nama di bilah pencarian atau memfilter berdasarkan`Status`,`Operating System`,`Publisher`, atau`Categories`. Bilah pencarian juga berisi kontrol pagination untuk hasil Anda.

### Hasil
<a name="w2aac13c26b7b7"></a>

Setiap AWS Marketplace produk memiliki panel detailnya sendiri yang mencakup informasi berikut.

**Nama AWS Marketplace produk dan logo**  
Nama produk perangkat lunak terkait dengan detail produk di AWS Marketplace. Anda dapat memilih tautan untuk mempelajari lebih lanjut tentang produk di AWS Marketplace. Atau, Anda dapat melihat ringkasan opsi berlangganan dan berlangganan langsung dari hasil pencarian dengan tombol **Lihat opsi langganan** jika Anda sudah melakukan riset.

**Versi**  
Ini berisi versi utama komponen.

**Sistem operasi**  
Sistem operasi yang dirancang komponen untuk dijalankan.

**Penerbit**  
Penerbit komponen. Ini ditautkan ke halaman detail penerbit di AWS Marketplace. Halaman detail penerbit terbuka di tab baru di browser Anda.

**Kategori**  
Satu atau lebih kategori AWS Marketplace produk yang berlaku untuk komponen.

**Status**  
Menunjukkan apakah Anda berlangganan produk ini. Jika Anda tidak berlangganan, Anda dapat memilih **Lihat opsi langganan** untuk melihat ringkasan opsi langganan AWS Marketplace produk, dan secara opsional berlangganan langsung dari konsol Image Builder.

**Komponen terkait**  
Jika AWS Marketplace produk memiliki satu atau beberapa versi yang disertakan dengan langganan Anda, mereka ditampilkan di bagian **Komponen terkait**. Bagian ini awalnya diciutkan, dan menampilkan hitungan komponen terkait. Anda dapat memperluas bagian untuk melihat detail lebih lanjut.

**catatan**  
Komponen Center for Internet Security (CIS) yang terkait dengan produk AWS Marketplace gambar mereka tidak ditampilkan dalam hasil **produk Discover**. Jika Anda berlangganan produk gambar mereka, komponen terkait ditampilkan di halaman **Langganan**, dan sebagai komponen pihak ketiga dalam dialog **Buat resep gambar**. Untuk informasi selengkapnya tentang komponen, lihat[Komponen pengerasan CIS](toe-cis.md).

## Berlangganan AWS Marketplace komponen
<a name="use-marketplace-components-subscribe"></a>

Setelah Anda menemukan AWS Marketplace produk dengan komponen yang ingin Anda gunakan dalam resep Anda, Anda dapat berlangganan langsung dari konsol Image Builder, sebagai berikut, atau Anda dapat berlangganan dari AWS Marketplace konsol.

1. Buka konsol [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/)EC2 Image Builder di.

1. Dari panel navigasi, pilih **Temukan produk** di **AWS Marketplace**bagian.

1. Pilih tab **Komponen**. Tab ini mencantumkan semua AWS Marketplace produk yang menggunakan opsi pengiriman yang menyertakan komponen terkait AWS Marketplace.

1. Untuk mencari AWS Marketplace produk tertentu, masukkan bagian nama di bilah pencarian. Jika Anda tahu penerbit, tetapi bukan nama produk yang tepat atau cara mengejanya, Anda juga dapat memfilter `Publisher` untuk mendapatkan daftar produk yang tersedia penerbit.

1. Pilih produk yang ingin Anda berlangganan dari daftar hasil, dan pilih **Lihat opsi langganan**. Ini menunjukkan ringkasan opsi berlangganan untuk AWS Marketplace produk.

1. Pilih **Berlangganan** untuk berlangganan produk tanpa meninggalkan konsol Image Builder. Anda diberi tahu bahwa langganan sedang diproses. Setelah Anda berlangganan, **Status** diperbarui ke`Subscribed`.

Untuk informasi selengkapnya tentang AWS Marketplace produk yang saat ini Anda berlangganan, lihat langkah-langkah konsol yang dijelaskan di[AWS Marketplace langganan di Image Builder](integ-marketplace.md#integ-marketplace-subs).

## Menggunakan AWS Marketplace komponen dalam resep gambar Image Builder
<a name="use-marketplace-components-recipe"></a>

Anda dapat menggunakan AWS Marketplace komponen dalam resep gambar Image Builder dengan cara yang sama seperti Anda menggunakan jenis komponen lainnya. Untuk sebagian besar komponen yang terkait dengan produk AWS Marketplace gambar, kategori kepemilikannya adalah`AWS Marketplace`. Misalnya, untuk menggunakan komponen build dari AWS Marketplace produk yang Anda berlangganan, pilih **Tambahkan komponen build**, lalu pilih `AWS Marketplace` dari daftar. Ini membuka panel pilihan di sisi kanan antarmuka konsol yang mencantumkan AWS Marketplace komponen.

**catatan**  
Jika Anda mencari komponen pengerasan CIS, pilih`Third party managed`, dari daftar kepemilikan, bukan. `AWS Marketplace`

Untuk informasi selengkapnya tentang cara memilih, mengatur, dan mengonfigurasi parameter untuk komponen Anda, lihat[Buat versi baru dari resep gambar](create-image-recipes.md).

# Menggunakan komponen terkelola untuk menyesuaikan image Image Builder
<a name="use-managed-components"></a>

Komponen yang dikelola dibuat oleh AWS, kadang-kadang dalam kemitraan dengan organisasi pihak ketiga, seperti Pusat Keamanan Internet (CIS), misalnya. Saat Anda menggunakan komponen terkelola dalam resep gambar atau wadah, Amazon menyediakan versi komponen terbaru yang memiliki tambalan dan pembaruan lain yang diterapkan. Untuk mendapatkan daftar komponen, atau untuk mendapatkan informasi komponen, lihat[Daftar dan lihat detail komponen](component-details.md).

Daftar komponen AWS terkelola unggulan berikut mencakup komponen yang tersedia untuk Anda gunakan saat Anda berlangganan CIS yang dikeraskan AMIs melalui. AWS Marketplace

**Topics**
+ [Penginstalan aplikasi komponen terkelola paket distributor untuk image Image Builder Windows](mgdcomponent-distributor-win.md)
+ [Komponen pengerasan CIS](toe-cis.md)
+ [Amazon mengelola komponen pengerasan STIG untuk Image Builder](ib-stig.md)

# Penginstalan aplikasi komponen terkelola paket distributor untuk image Image Builder Windows
<a name="mgdcomponent-distributor-win"></a>

AWS Systems Manager Distributor membantu Anda mengemas dan mempublikasikan perangkat lunak ke node yang AWS Systems Manager dikelola. Anda dapat mengemas dan mempublikasikan perangkat lunak Anda sendiri atau menggunakan Distributor untuk menemukan dan menerbitkan paket perangkat lunak agen yang AWS disediakan. Untuk informasi selengkapnya tentang Distributor Systems Manager, lihat [AWS Systems Manager Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html) di *Panduan AWS Systems Manager Pengguna*.

**Komponen terkelola untuk Distributor**  
Komponen terkelola Image Builder berikut menggunakan AWS Systems Manager Distributor untuk menginstal paket aplikasi pada instance Windows.
+ Komponen `distributor-package-windows` terkelola menggunakan AWS Systems Manager Distributor untuk menginstal paket aplikasi yang Anda tentukan pada instance build image Windows Anda. Untuk mengonfigurasi parameter saat Anda menyertakan komponen ini dalam resep Anda, lihat[Konfigurasikan `distributor-package-windows` sebagai komponen mandiri](#mgdcomponent-distributor-config-standalone).
+ `aws-vss-components-windows`Komponen menggunakan AWS Systems Manager Distributor untuk menginstal `AwsVssComponents` paket pada instance build image Windows Anda. Untuk mengonfigurasi parameter saat Anda menyertakan komponen ini dalam resep Anda, lihat[Konfigurasikan `aws-vss-components-windows` sebagai komponen mandiri](#mgdcomponent-vss-config-standalone).

Untuk informasi selengkapnya tentang cara menggunakan komponen terkelola dalam resep Image Builder, lihat [Buat versi baru dari resep gambar](create-image-recipes.md) resep gambar atau [Buat versi baru dari resep wadah](create-container-recipes.md) resep kontainer. *Untuk informasi selengkapnya tentang `AwsVssComponents` paket, lihat [Membuat snapshot yang konsisten dengan aplikasi VSS di Panduan Pengguna](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/application-consistent-snapshots.html) Amazon EC2.*

## Prasyarat
<a name="mgdcomponent-distributor-prereq"></a>

Sebelum Anda menggunakan komponen Image Builder yang mengandalkan Systems Manager Distributor untuk menginstal paket aplikasi, Anda harus memastikan bahwa prasyarat berikut terpenuhi.
+ Komponen Image Builder yang menggunakan Systems Manager Distributor untuk menginstal paket aplikasi pada instans Anda memerlukan izin untuk memanggil Systems Manager API. Sebelum menggunakan komponen dalam resep Image Builder, Anda harus membuat kebijakan dan peran IAM yang memberikan izin. Untuk mengonfigurasi izin, lihat[Konfigurasikan izin Distributor Systems Manager](#mgdcomponent-distributor-permissions).

**catatan**  
Image Builder saat ini tidak mendukung paket Distributor Systems Manager yang me-reboot instance. Misalnya, paket, `AWSNVMe``AWSPVDrivers`, dan `AwsEnaNetworkDriver` Distributor me-reboot instance, dan karenanya tidak diperbolehkan.

## Konfigurasikan izin Distributor Systems Manager
<a name="mgdcomponent-distributor-permissions"></a>

`distributor-package-windows`Komponen dan komponen lain yang menggunakannya, seperti`aws-vss-components-windows`, memerlukan izin tambahan pada instance build untuk dijalankan. Instans build harus dapat memanggil Systems Manager API untuk memulai instalasi Distributor dan polling untuk hasilnya.

Ikuti prosedur berikut Konsol Manajemen AWS untuk membuat kebijakan dan peran IAM kustom yang memberikan izin bagi komponen Image Builder untuk menginstal paket Distributor Systems Manager dari instance build.

**Langkah 1: Buat kebijakan**  
Buat kebijakan IAM untuk izin Distributor.

1. Buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi, pilih **Kebijakan** dan kemudian pilih **Buat kebijakan**.

1. Pada halaman **Buat kebijakan**, pilih tab **JSON**, lalu ganti konten default dengan kebijakan JSON berikut, ganti partisi, Wilayah, dan ID akun seperlunya, atau menggunakan wildcard.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowDistributorSendCommand",
               "Effect": "Allow",
               "Action": "ssm:SendCommand",
               "Resource": [
                   "arn:aws:ssm:*::document/AWS-ConfigureAWSPackage",
                   "arn:aws:ec2:*:111122223333:instance/*"
               ]
           },
           {
               "Sid": "AllowGetCommandInvocation",
               "Effect": "Allow",
               "Action": "ssm:GetCommandInvocation",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Pilih **Tinjau kebijakan**.

1. Untuk **Nama**, masukkan nama untuk mengidentifikasi kebijakan, seperti `InvokeDistributor` atau nama lain yang Anda inginkan.

1. (Opsional) Untuk **Deskripsi**, masukkan deskripsi tujuan peran.

1. Pilih **Buat kebijakan**.

**Langkah 2: Buat peran**  
Buat peran IAM untuk izin Distributor.

1. Dari panel navigasi konsol IAM, pilih **Peran, lalu pilih **Buat** peran**.

1. Di bawah **Pilih jenis entitas tepercaya**, pilih **Layanan AWS**.

1. Segera di bawah **Pilih layanan yang akan menggunakan peran ini**, pilih **EC2**, lalu pilih **Berikutnya: Izin**.

1. Di bawah **Pilih kasus penggunaan Anda**, pilih **EC2**, lalu pilih **Berikutnya: Izin**.

1. Dalam daftar kebijakan, pilih kotak centang di sebelah **Amazon SSMManaged InstanceCore**. (Jenis `SSM` di kotak pencarian jika Anda perlu mempersempit daftar.)

1. Dalam daftar kebijakan ini, pilih kotak di sebelah **EC2InstanceProfileForImageBuilder**. (Jenis `ImageBuilder` di kotak pencarian jika Anda perlu mempersempit daftar.)

1. Pilih **Berikutnya: Tag**.

1. (Opsional) Tambahkan satu atau beberapa pasangan nilai kunci tag untuk mengatur, melacak, atau mengontrol akses untuk peran ini, lalu pilih **Berikutnya: Tinjau**.

1. Untuk **Nama peran**, masukkan nama untuk peran, seperti `InvokeDistributor` atau nama lain yang Anda inginkan.

1. (Opsional) Untuk **Deskripsi peran**, ganti teks default dengan deskripsi tujuan peran ini.

1. Pilih **Buat peran**. Sistem mengembalikan Anda ke halaman **Peran**.

**Langkah 3: Lampirkan kebijakan ke peran**  
Langkah terakhir untuk mengatur izin Distributor Anda adalah melampirkan kebijakan IAM ke peran IAM.

1. Dari halaman **Peran** di konsol IAM, pilih peran yang baru saja Anda buat. Peran **Halaman ringkasan** terbuka.

1. Pilih **Lampirkan kebijakan**.

1. Cari kebijakan yang Anda buat di prosedur sebelumnya dan pilih kotak centang di sebelah nama.

1. Pilih **Lampirkan kebijakan**.

Gunakan peran ini di sumber daya Konfigurasi Infrastruktur Image Builder untuk gambar apa pun yang menyertakan komponen yang menggunakan Distributor Systems Manager. Untuk informasi selengkapnya, lihat [Membuat konfigurasi infrastruktur](create-infra-config.md).

## Konfigurasikan `distributor-package-windows` sebagai komponen mandiri
<a name="mgdcomponent-distributor-config-standalone"></a>

Untuk menggunakan `distributor-package-windows` komponen dalam resep, atur parameter berikut yang mengkonfigurasi paket yang akan diinstal.

**catatan**  
Sebelum Anda menggunakan `distributor-package-windows` komponen dalam resep, Anda harus memastikan bahwa semua [Prasyarat](#mgdcomponent-distributor-prereq) terpenuhi.
+ **Tindakan** (Wajib) - Tentukan apakah akan menginstal atau menghapus paket. Nilai yang valid mencakup `Install` dan `Uninstall`. Nilai defaultnya. `Install`
+ **PackageName**(Wajib) - Nama paket Distributor untuk menginstal atau menghapus instalasi. Untuk daftar nama paket yang valid, lihat[Temukan paket Distributor](#mgdcomponent-distributor-find-pkg).
+ **PackageVersion**(Opsional) — Versi paket Distributor yang akan diinstal. PackageVersion default ke versi yang direkomendasikan.
+ **AdditionalArguments**(Opsional) - String JSON yang berisi parameter tambahan untuk diberikan ke skrip Anda untuk menginstal, menghapus, atau memperbarui paket. Untuk informasi selengkapnya, lihat **additionalArguments** di **bagian** [AWS:ConfigurePackage Inputs](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents-command-ssm-plugin-reference.html#aws-configurepackage) dari halaman referensi plugin dokumen Systems **Manager** Command.

## Konfigurasikan `aws-vss-components-windows` sebagai komponen mandiri
<a name="mgdcomponent-vss-config-standalone"></a>

Saat Anda menggunakan `aws-vss-components-windows` komponen dalam resep, Anda dapat mengatur `PackageVersion` parameter secara opsional untuk menggunakan versi `AwsVssComponents` paket tertentu. Ketika Anda meninggalkan parameter ini, komponen default untuk menggunakan versi paket yang direkomendasikan. `AwsVssComponents`

**catatan**  
Sebelum Anda menggunakan `aws-vss-components-windows` komponen dalam resep, Anda harus memastikan bahwa semua [Prasyarat](#mgdcomponent-distributor-prereq) terpenuhi.

## Temukan paket Distributor
<a name="mgdcomponent-distributor-find-pkg"></a>

Amazon dan pihak ketiga menyediakan paket publik yang dapat Anda instal dengan Systems Manager Distributor.

Untuk melihat paket yang tersedia di Konsol Manajemen AWS, masuk ke [AWS Systems Manager konsol](https://console.aws.amazon.com/systems-manager/;) dan pilih **Distributor** dari panel navigasi. Halaman **Distributor** menunjukkan semua paket yang tersedia untuk Anda. Untuk informasi selengkapnya tentang daftar paket yang tersedia dengan AWS CLI, lihat [Lihat paket (baris perintah)](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor-view-packages.html) di *Panduan AWS Systems Manager Pengguna*.

Anda juga dapat membuat paket Distributor Systems Manager pribadi Anda sendiri. Untuk informasi selengkapnya, lihat [Membuat paket](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor-working-with-packages-create.html) di *Panduan AWS Systems Manager Pengguna*.

# Komponen pengerasan CIS
<a name="toe-cis"></a>

Center for Internet Security (CIS) adalah organisasi nirlaba berbasis komunitas. Pakar keamanan siber mereka bekerja sama untuk mengembangkan pedoman keamanan TI yang melindungi organisasi publik dan swasta dari ancaman cyber. Serangkaian praktik terbaik mereka yang diakui secara global, yang dikenal sebagai Tolok Ukur CIS, membantu organisasi TI di seluruh dunia untuk mengkonfigurasi sistem mereka dengan aman. *Untuk artikel yang sedang tren, posting blog, podcast, webinar, dan whitepaper, lihat [CIS Insights di situs web Center for Internet Security](https://www.cisecurity.org/insights).*

**Patokan CIS**  
CIS menciptakan dan memelihara seperangkat pedoman konfigurasi, yang dikenal sebagai Tolok Ukur CIS, yang menyediakan praktik terbaik konfigurasi untuk teknologi tertentu, termasuk sistem operasi, platform cloud, aplikasi, database, dan banyak lagi. Tolok Ukur CIS diakui sebagai standar industri oleh organisasi dan standar seperti PCI DSS, HIPAA, DoD Cloud Computing SRG, FISMA, DFARS, dan FEDRAMP. Untuk mempelajari lebih lanjut, lihat [Tolok Ukur CIS di situs](https://www.cisecurity.org/benchmark) web *Center for Internet Security*.

**Komponen pengerasan CIS**  
Saat Anda berlangganan CIS Hardened Image di AWS Marketplace, Anda juga mendapatkan akses ke komponen pengerasan terkait yang menjalankan skrip untuk menerapkan pedoman CIS Benchmarks Level 1 untuk konfigurasi Anda. Organisasi CIS memiliki dan memelihara komponen pengerasan CIS untuk memastikan bahwa mereka mencerminkan pedoman terbaru.

**catatan**  
Komponen pengerasan CIS tidak mengikuti aturan pemesanan komponen standar dalam resep Image Builder. Komponen pengerasan CIS selalu berjalan terakhir untuk memastikan bahwa tes benchmark berjalan terhadap gambar keluaran Anda.

# Amazon mengelola komponen pengerasan STIG untuk Image Builder
<a name="ib-stig"></a>

Security Technical Implementation Guides (STIGs) adalah standar pengerasan konfigurasi yang dibuat oleh Badan Sistem Informasi Pertahanan (DISA) untuk mengamankan sistem informasi dan perangkat lunak. Untuk membuat sistem Anda sesuai dengan standar STIG, Anda harus menginstal, mengonfigurasi, dan menguji berbagai pengaturan keamanan.

Image Builder menyediakan komponen pengerasan STIG untuk membantu Anda membuat gambar yang sesuai dengan standar STIG dasar secara lebih efisien. Komponen STIG ini memindai kesalahan konfigurasi dan menjalankan skrip remediasi. Tidak ada biaya tambahan untuk menggunakan komponen yang sesuai dengan STIG.

**penting**  
Dengan beberapa pengecualian, kecuali ditentukan melalui parameter, komponen pengerasan STIG tidak menginstal paket pihak ketiga. Jika paket pihak ketiga sudah diinstal pada instance, dan jika ada terkait STIGs yang didukung Image Builder untuk paket itu, komponen pengerasan menerapkannya.

Halaman ini mencantumkan semua STIG yang didukung Image Builder yang diterapkan ke instans EC2 yang diluncurkan Image Builder saat Anda membuat dan menguji gambar baru. Jika Anda ingin menerapkan pengaturan STIG tambahan ke gambar Anda, Anda dapat membuat komponen khusus untuk mengonfigurasinya. Untuk informasi selengkapnya tentang komponen kustom dan cara membuatnya, lihat[Gunakan komponen untuk menyesuaikan image Image Builder](manage-components.md).

Saat Anda membuat gambar, komponen pengerasan STIG mencatat apakah didukung diterapkan atau STIGs dilewati. Kami menyarankan Anda meninjau log Image Builder untuk gambar Anda yang menggunakan komponen pengerasan STIG. Untuk informasi selengkapnya tentang cara mengakses dan meninjau log Image Builder, lihat[Memecahkan masalah pembangunan pipa](troubleshooting.md#troubleshooting-pipelines).

**Tingkat kepatuhan**
+ **Tinggi (Kategori I)**

  Risiko paling parah. Termasuk kerentanan apa pun yang dapat mengakibatkan hilangnya kerahasiaan, ketersediaan, atau integritas.
+ **Sedang (Kategori II)**

  Termasuk kerentanan apa pun yang dapat mengakibatkan hilangnya kerahasiaan, ketersediaan, atau integritas, tetapi risikonya dapat dikurangi.
+ **Rendah (Kategori III)**

  Setiap kerentanan yang menurunkan langkah untuk melindungi hilangnya kerahasiaan, ketersediaan, atau integritas.

**Topics**
+ [Komponen pengerasan STIG Windows](#windows-os-stig)
+ [Log riwayat versi STIG untuk Windows](#ib-windows-version-hist)
+ [Komponen pengerasan STIG Linux](#linux-os-stig)
+ [Log riwayat versi STIG untuk Linux](#ib-linux-version-hist)
+ [Komponen validator kepatuhan SCAP](#scap-compliance)

## Komponen pengerasan STIG Windows
<a name="windows-os-stig"></a>

AWSTOE Komponen pengerasan STIG Windows dirancang untuk server mandiri dan menerapkan Kebijakan Grup Lokal. Komponen pengerasan yang sesuai dengan STIG memasang dan memperbarui sertifikat Departemen Pertahanan (DoD). Mereka juga menghapus sertifikat yang tidak perlu untuk mempertahankan kepatuhan STIG. Saat ini, garis dasar STIG didukung untuk versi Windows Server berikut: 2012 R2, 2016, 2019, 2022, dan 2025.

Bagian ini mencantumkan pengaturan saat ini untuk masing-masing komponen pengerasan STIG Windows, diikuti oleh log riwayat versi.

### Windows STIG Rendah (Kategori III)
<a name="ib-windows-stig-low"></a>

Daftar berikut berisi pengaturan STIG yang diterapkan komponen pengerasan untuk infrastruktur Anda. Jika setelan yang didukung tidak berlaku untuk infrastruktur Anda, komponen pengerasan akan melewatkan pengaturan itu, dan melanjutkan. Misalnya, beberapa pengaturan STIG mungkin tidak berlaku untuk server mandiri. Kebijakan khusus organisasi juga dapat memengaruhi pengaturan mana yang diterapkan komponen pengerasan, seperti persyaratan bagi administrator untuk meninjau pengaturan dokumen.

Untuk daftar lengkap Windows STIGs, lihat [Perpustakaan STIGs Dokumen](https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=windows). Untuk informasi tentang cara melihat daftar lengkap, lihat [Alat Melihat STIG](https://public.cyber.mil/stigs/srg-stig-tools/).
+ **Windows Server 2025 STIG Versi 1 Rilis 1**

  V-278082, V-278083, V-278084, V-278085, V-278098, V-278104, V-278110, dan V-278231
+ **Windows Server 2022 STIG Versi 2 Rilis 7**

  V-254335, V-254336, V-254337, V-254338, V-254351, V-254357, V-254363, dan V-254481
+ **Windows Server 2019 STIG Versi 3 Rilis 7**

  V-205691, V-205819, V-205858, V-205859, V-205860, V-205870, V-205871, dan V-205923
+ **Windows Server 2016 STIG Versi 2 Rilis 10**

  V-224916, V-224917, V-224918, V-224919, V-224931, V-224942, dan V-225060
+ **Windows Server 2012 R2 MS STIG Versi 3 Rilis 5**

  V-225250, V-225318, V-225319, V-225324, V-225327, V-225330, V-225331, V-225332, V-225333, V-225334, V-225335, V-225336, V-225342, V-225343, V-225355, V-225357, V-225358, V-225359, V-225360, V-225362, V-225363, V-225376, V-225392, V-225394, V-225412, V-225460, V-225462, V-225468, V-225473, V-225473, V-225473 76, V-225479, V-225480, V-225481, V-225482, V-225483, V-225484, V-225485, V-225487, V-225488, V-225489, V-225490, V-225511, V-225514, V-225525, V-225526, V-225526, V-225526, V-225526 25536, dan V-225537
+ **Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 7**

  Tidak ada pengaturan STIG yang diterapkan ke kerentanan Microsoft .NET Framework untuk Kategori III.
+ **Windows Firewall STIG Versi 2 Rilis 2**

  V-241994, V-241995, V-241996, V-241999, V-242000, V-242001, V-242006, V-242007, dan V-242008
+ **Internet Explorer 11 STIG Versi 2 Rilis 6**

  V-223056 dan V-223078
+ **Microsoft Edge STIG Versi 2 Rilis 4 (hanya Windows Server 2022 dan 2025)**

  V-235727, V-235731, V-235751, V-235752, dan V-235765
+ **Microsoft Defender STIG Versi 2 Rilis 7**

  Tidak ada pengaturan STIG yang diterapkan ke Microsoft Antivirus untuk kerentanan Kategori III.

### Windows STIG Medium (Kategori II)
<a name="ib-windows-stig-medium"></a>

Daftar berikut berisi pengaturan STIG yang diterapkan komponen pengerasan untuk infrastruktur Anda. Jika setelan yang didukung tidak berlaku untuk infrastruktur Anda, komponen pengerasan akan melewatkan pengaturan itu, dan melanjutkan. Misalnya, beberapa pengaturan STIG mungkin tidak berlaku untuk server mandiri. Kebijakan khusus organisasi juga dapat memengaruhi pengaturan mana yang diterapkan komponen pengerasan, seperti persyaratan bagi administrator untuk meninjau pengaturan dokumen.

Untuk daftar lengkap Windows STIGs, lihat [Perpustakaan STIGs Dokumen](https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=windows). Untuk informasi tentang cara melihat daftar lengkap, lihat [Alat Melihat STIG](https://public.cyber.mil/stigs/srg-stig-tools/).

**catatan**  
Komponen pengerasan Windows STIG Medium mencakup semua pengaturan STIG yang terdaftar yang AWSTOE berlaku untuk komponen pengerasan Rendah STIG Windows STIG, selain pengaturan STIG yang terdaftar khusus untuk kerentanan Kategori II.
+ **Windows Server 2025 STIG Versi 1 Rilis 1**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah), ditambah:

  V-278015, V-278016, V-278019, V-278020, V-278021, V-278022, V-278023, V-278024, V-278025, V-278026, V-278033, V-278034, V-278035, V-278036, V-278037, V-278038, V-278039, V-278047, V-278048, V-278049, V-278050, V-278051, V-278052, V-278053, V-278054, V-278055, V-278056, V-278057, V-278058, V-278059, V-278060, V-278061, V-278062, V-278063, V-278064, V-278065, V-278066, V-278066, V-278066 67, V-278068, V-278069, V-278070, V-278071, V-278072, V-278073, V-278074, V-278075, V-278076, V-278077, V-278078, V-278079, V-278080, V-278086, V-278089, V-278091, V-278092, V-278092, V-278092, V-278092, V-278092 8093, V-278094, V-278095, V-278096, V-278097, V-278102, V-278103, V-278105, V-278106, V-278107, V-278108, V-278109, V-278111, V-278112, V-278113, V-278114, V-278115, V-278116, V-278116, V-278116 8117, V-278118, V-278119, V-278120, V-278122, V-278123, V-278124, V-278126, V-278127, V-278129, V-278130, V-278131, V-278165, V-278168, V-278169, V-278170, V-278171, V-278174, V-278180, V-278181, V-278182, V-278183, V-278184, V-278185, V-278187, V-278188, V-278189, V-278192, V-278193, V-278194, V-278195, V-278198, V-278198, V-278278 199, V-278200, V-278201, V-278202, V-278203, V-278204, V-278205, V-278206, V-278209, V-278210, V-278211, V-278212, V-278213, V-278214, V-278218, V-278220, V-278221, V-278222, V-278222, V-278223, V-278226, V-278228, V-278229, V-278230, V-278232, V-278233, V-278233, V-278233 8234, V-278235, V-278236, V-278237, V-278238, V-278239, V-278240, V-278241, V-278243, V-278244, V-278245, V-278247, V-278249, V-278251, V-278252, V-278252, V-278252 3, V-278254, V-278255, V-278256, V-278257, V-278258, V-278259, V-278260, V-278261, V-278262, V-279916, V-279917, V-279918, V-279919, V-279920, V-279921, V-279922, dan V-279923
+ **Windows Server 2022 STIG Versi 2 Rilis 7**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah), ditambah:

  V-254247, V-254269, V-254270, V-254271, V-254272, V-254273, V-254274, V-254275, V-254276, V-254277, V-254278, V-254285, V-254286, V-254287, V-254288, V-254288, V-254288 9, V-254290, V-254291, V-254292, V-254296, V-254297, V-254298, V-254299, V-254300, V-254301, V-254302, V-254303, V-254305, V-254307, V-254309, V-254311, V-254312, V-254313, V-254314, V-254315, V-254316, V-254319, V-254320, V-254321, V-254322, V-254323, V-254324, V-254325, V-254326, V-254328, V-254329, V-254330, V-254331, V-254331, V-254331, V-254331 32, V-254333, V-254334, V-254339, V-254341, V-254342, V-254344, V-254345, V-254346, V-254347, V-254348, V-254349, V-254350, V-254355, V-254356, V-254358, V-254359, V-254360, V-254361, V-254362, V-254364, V-254365, V-254366, V-254367, V-254367, V-254367, V-254367 4368, V-254369, V-254370, V-254371, V-254372, V-254373, V-254375, V-254376, V-254377, V-254379, V-254380, V-254382, V-254383, V-254431, V-254433, V-254434, V-254435, V-254436, V-254438, V-254439, V-254440, V-254442, V-254443, V-254444, V-254445, V-254447, V-254448, V-254449, V-254450, V-254451, V-254453, V-254454, V-254455, V-254456, V-254459, V-254460, V-254461, V-254462, V-254463, V-254464, V-254468, V-254470, V-254471, V-254472, V-254473, V-254476, V-254477, V-254478, V-254479, V-254480, V-254482, V-254483, V-254485, V-254486, V-254486, V-254486 V-254488, V-254489, V-254491, V-254493, V-254494, V-254495, V-254497, V-254498, V-254499, V-254501, V-254502, V-254503, V-254504, V-254505, V-254506, V-254506 7, V-254508, V-254509, V-254510, V-254511, V-254512, V-278942, V-278943, V-278944, V-278945, V-278946, V-278947, V-278948, dan V-278949
+ **Windows Server 2019 STIG Versi 3 Rilis 7**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah), ditambah:

  V-205625, V-205626, V-205627, V-205629, V-205630, V-205633, V-205634, V-205635, V-205636, V-205637, V-205638, V-205639, V-205640, V-205641, V-205643, V-205644, V-205648, V-205649, V-205650, V-205651, V-205652, V-205655, V-205656, V-205659, V-205660, V-205662, V-205671, V-205672, V-205673, V-205675, V-205676, V-205678, V-205680, V-205681, V-205682, V-205682, V-205682, V-205682, V-205682 V-205684, V-205685, V-205686, V-205687, V-205688, V-205689, V-205690, V-205692, V-205693, V-205694, V-205697, V-205698, V-205708, V-205709, V-205712, V-205714, V-205716, V-205717, V-205717, V-205718, V-205719, V-205720, V-205722, V-205730, V-205731, V-205733, V-205747, V-205748, V-205749, V-205751, V-205752, V-205754, V-205755, V-205756, V-205759, V-205760, V-205761, V-205761, V-205762, V-205763, V-205764, V-205765, V-205766, V-205767, V-205768, V-205769, V-205770, V-205771, V-205772, V-205773, V-205774, V-205775, V-205776, V-205778, V-205779, V-205780, V-205780, V-205780, V-205780 V-205782, V-205783, V-205784, V-205795, V-205796, V-205797, V-205798, V-205801, V-205808, V-205809, V-205810, V-205811, V-205812, V-205813, V-205814, V-205815, V-205816, V-205817, V-205821, V-205822, V-205823, V-205824, V-205825, V-205826, V-205827, V-205830, V-205832, V-205833, V-205833, V-205835, V-205836, V-205837, V-205842, V-205861, V-205863, V-205865, V-205866, V-205866, V-205867, V-205868, V-205869, V-205872, V-205873, V-205874, V-205909, V-205910, V-205911, V-205912, V-205915, V-205916, V-205918, V-205920, V-205921, V-205922, V-205925, V-2525 7503, V-278934, V-278935, V-278936, V-278937, V-278938, V-278939, V-278940, dan V-278941
+ **Windows Server 2016 STIG Versi 2 Rilis 10**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah), ditambah:

  V-224850, V-224851, V-224852, V-224853, V-224854, V-224855, V-224856, V-224857, V-224858, V-224859, V-224866, V-224867, V-224869, V-224870, V-224870, V-224870, V-224870 71, V-224872, V-224873, V-224877, V-224878, V-224879, V-224880, V-224881, V-224882, V-224883, V-224884, V-224885, V-224886, V-224888, V-224890, V-224892, V-224892 24893, V-224894, V-224895, V-224896, V-224897, V-224900, V-224901, V-224902, V-224903, V-224904, V-224905, V-224906, V-224907, V-224908, V-224909, V-224910, V-224910, V-224910 224911, V-224912, V-224913, V-224914, V-224915, V-224920, V-224921, V-224922, V-224924, V-224925, V-224926, V-224927, V-224928, V-224929, V-224930, V-224935, V-224936, V-224937, V-224938, V-224939, V-224940, V-224941, V-224943, V-224944, V-224945, V-224945, V-224945, V-224945 46, V-224947, V-224948, V-224949, V-224951, V-224952, V-224953, V-224955, V-224956, V-224957, V-224959, V-224960, V-224962, V-224963, V-224965, V-224966, V-224966, V-224966, V-224966, V-224966 24967, V-224968, V-224969, V-224987, V-224988, V-224989, V-224995, V-224996, V-224997, V-224998, V-224999, V-225000, V-225001, V-225002, V-225003, V-225004, V-225004, V-225004 25005, V-225008, V-225009, V-225010, V-225011, V-225013, V-225014, V-225015, V-225016, V-225017, V-225018, V-225019, V-225020, V-225021, V-225022, V-225023, V-225024, V-225026, V-225027, V-225028, V-225029, V-225030, V-225031, V-225032, V-225033, V-225034, V-225035, V-225038, V-225039, V-225040, V-225041, V-225042, V-225043, V-225047, V-225049, V-225050, V-225051, V-225052, V-225055, V-225056, V-225057, V-225058, V-225059, V-225061, V-225062, V-225063, V-225064, V-225065, V-225066, V-225067, V-225068, V-225070, V-225072, V-225073, V-225074, V-225076, V-225077, V-225078, V-225080, V-225081, V-225082, V-225083, V-225083, V-225083 4, V-225085, V-225086, V-225087, V-225088, V-225089, V-225092, V-225093, dan V-257502
+ **Windows Server 2012 R2 MS STIG Versi 3 Rilis 5**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah), ditambah:

  V-225239, V-225259, V-225260, V-225261, V-225263, V-225264, V-225265, V-225266, V-225267, V-225268, V-225269, V-225270, V-225271, V-225272, V-225273, V-225275, V-225276, V-225277, V-225278, V-225279, V-225280, V-225281, V-225282, V-225283, V-225284, V-225285, V-225286, V-225287, V-225288, V-225289, V-225290, V-225296 1, V-225292, V-225293, V-225294, V-225295, V-225296, V-225297, V-225298, V-225299, V-225300, V-225301, V-225302, V-225303, V-225305, V-225314, V-225314, V-225314, V-225314 15, V-225316, V-225317, V-225325, V-225326, V-225329, V-225337, V-225338, V-225339, V-225340, V-225341, V-225344, V-225345, V-225346, V-225347, V-225348, V-225349, V-225350, V-225351, V-225352, V-225353, V-225356, V-225367, V-225368, V-225369, V-225370, V-225371, V-225372, V-225373, V-225374, V-225375, V-225377, V-225378, V-225379, V-225380, V-225381, V-225382, V-225383, V-225384, V-225385, V-225386, V-225386, V-225386 389, V-225391, V-225393, V-225395, V-225397, V-225398, V-225400, V-225401, V-225402, V-225404, V-225405, V-225406, V-225407, V-225408, V-225409, V-225410, V-225410, V-225410 25411, V-225413, V-225414, V-225415, V-225441, V-225442, V-225443, V-225448, V-225452, V-225453, V-225454, V-225455, V-225456, V-225457, V-225458, V-225461, V-225463, V-225464, V-225469, V-225470, V-225471, V-225472, V-225474, V-225475, V-225477, V-225477, V-225477, V-225477, V-225477 78, V-225486, V-225494, V-225500, V-225501, V-225502, V-225503, V-225504, V-225506, V-225508, V-225509, V-225510, V-225513, V-225515, V-225516, V-225517, V-225517, V-225517 518, V-225519, V-225520, V-225521, V-225522, V-225523, V-225524, V-225527, V-225528, V-225529, V-225530, V-225531, V-225532, V-225533, V-225534, V-225535, V-225535, V-225535, V-225535, V-225535, V-225538, V-225539, V-225540, V-225541, V-225542, V-225543, V-225544, V-225545, V-225546, V-225548, V-225549, V-225550, V-225551, V-225553, V-225554, V-225555, V-225557, V-225558, V-225559, V-225560, V-225561, V-225562, V-225563, V-225564, V-225565, V-225566, V-225567, V-225568, V-225569, V-225570, V-225571, V-225572, V-225573, dan V-225574
+ **Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 7**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah), ditambah:

  V-225223, V-225230, V-225235, dan V-225238
+ **Windows Firewall STIG Versi 2 Rilis 2**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah), ditambah:

  V-241989, V-241990, V-241991, V-241993, V-241998, V-242003, V-242004, dan V-242005
+ **Internet Explorer 11 STIG Versi 2 Rilis 6**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah), ditambah:

  V-223015, V-223017, V-223018, V-223019, V-223020, V-223021, V-223022, V-223023, V-223024, V-223025, V-223026, V-223027, V-223028, V-223029, V-223030, V-223031, V-223032, V-223033, V-223034, V-223035, V-223036, V-223037, V-223038, V-223039, V-223040, V-223041, V-223042, V-223043, V-223044, V-223045, V-223046, V-223048, V-223049, V-223050, V-223051, V-223052, V-223053, V-223053, V-223053 54, V-223055, V-223057, V-223058, V-223059, V-223060, V-223061, V-223062, V-223063, V-223064, V-223065, V-223066, V-223067, V-223068, V-223069, V-223070, V-223071, V-223072, V-223073, V-223073, V-223073, V-223073, V-223073 3074, V-223075, V-223076, V-223077, V-223079, V-223080, V-223081, V-223082, V-223083, V-223084, V-223085, V-223086, V-223087, V-223088, V-223089, V-223090, V-223091, V-223092, V-223093, V-223093, V-223094, V-223095, V-223096, V-223097, V-223098, V-223099, V-223100, V-223101, V-223102, V-223103, V-223104, V-223105, V-223106, V-223107, V-223108, V-223109, V-223110, V-223111, V-223112, V-223113, V-223114, V-223115, V-223116, V-223117, V-223118, V-223119, V-223120, V-223121, V-223123, V-223126, V-223127, V-223128, V-223129, V-223130, V-223130, V-223130 131, V-223132, V-223133, V-223134, V-223135, V-223136, V-223137, V-223138, V-223139, V-223140, V-223141, V-223142, V-223143, V-223144, V-223145, V-223146, V-223147, V-223148, V-223149, V-250540, dan V-250540 250541
+ **Microsoft Edge STIG Versi 2 Rilis 4 (hanya Windows Server 2022 dan 2025)**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah), ditambah:

  V-235720, V-235721, V-235723, V-235724, V-235725, V-235726, V-235728, V-235729, V-235730, V-235732, V-235733, V-235734, V-235735, V-235736, V-235738, V-235739, V-235740, V-235741, V-235742, V-235743, V-235744, V-235745, V-235746, V-235747, V-235748, V-235749, V-235750, V-235754, V-235756, V-235761, V-235763, V-235764, V-235766, V-235767, V-235768, V-235768, V-235768, V-235768 69, V-235770, V-235771, V-235772, V-235773, V-235774, dan V-246736
+ **Microsoft Defender STIG Versi 2 Rilis 7**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah), ditambah:

  V-213427, V-213429, V-213430, V-213431, V-213432, V-213433, V-213434, V-213435, V-213436, V-213437, V-213438, V-213439, V-213440, V-213441, V-213442, V-213442, V-213442, V-213442 43, V-213444, V-213445, V-213446, V-213447, V-213448, V-213449, V-213450, V-213451, V-213454, V-213455, V-213456, V-213457, V-213458, V-213459, V-213460, V-213460, V-213460 461, V-213462, V-213463, V-213464, V-213465, V-213466, V-278647, V-278648, V-278649, V-278650, V-278651, V-278652, V-278653, V-278654, V-278656, V-278658, V-278658, V-278659, V-278659, V-278659, V-278659, V-278660, V-278661, V-278662, V-278668, V-278669, V-278672, V-278674, V-278675, V-278676, V-278677, V-278678, V-278679, V-278680, dan V-278863

### Windows STIG Tinggi (Kategori I)
<a name="ib-windows-stig-high"></a>

Daftar berikut berisi pengaturan STIG yang diterapkan komponen pengerasan untuk infrastruktur Anda. Jika setelan yang didukung tidak berlaku untuk infrastruktur Anda, komponen pengerasan akan melewatkan pengaturan itu, dan melanjutkan. Misalnya, beberapa pengaturan STIG mungkin tidak berlaku untuk server mandiri. Kebijakan khusus organisasi juga dapat memengaruhi pengaturan mana yang diterapkan komponen pengerasan, seperti persyaratan bagi administrator untuk meninjau pengaturan dokumen.

Untuk daftar lengkap Windows STIGs, lihat [Perpustakaan STIGs Dokumen](https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=windows). Untuk informasi tentang cara melihat daftar lengkap, lihat [Alat Melihat STIG](https://public.cyber.mil/stigs/srg-stig-tools/).

**catatan**  
Komponen pengerasan Windows STIG High mencakup semua pengaturan STIG yang terdaftar yang AWSTOE berlaku untuk komponen pengerasan Windows STIG Low dan Windows STIG Medium, selain pengaturan STIG yang terdaftar khusus untuk kerentanan Kategori I.
+ **Windows Server 2025 STIG Versi 1 Rilis 1**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah), ditambah:

  V-278040, V-278099, V-278100, V-278101, V-278121, V-278125, V-278128, V-278196, V-278215, V-278216, V-278217, V-278219, V-278225, V-278242, V-278246, dan V-278250
+ **Windows Server 2022 STIG Versi 2 Rilis 7**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah), ditambah:

  V-254250, V-254293, V-254352, V-254353, V-254354, V-254374, V-254378, V-254381, V-254446, V-254466, V-254467, V-254469, V-254474, V-254475, V-254492, V-254496, dan V-254500
+ **Windows Server 2019 STIG Versi 3 Rilis 7**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah), ditambah:

  V-205653, V-205654, V-205663, V-205711, V-205713, V-205724, V-205725, V-205750, V-205753, V-205757, V-205802, V-205804, V-205805, V-205806, V-205849, V-205908, V-205914, dan V-205914 19
+ **Windows Server 2016 STIG Versi 2 Rilis 10**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah), ditambah:

  V-224831, V-224874, V-224932, V-224933, V-224934, V-224954, V-224958, V-224961, V-225025, V-225045, V-225046, V-225048, V-225053, V-225054, V-225071, V-225079, dan V-225079 25091
+ **Windows Server 2012 R2 MS STIG Versi 3 Rilis 5**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah), ditambah:

  V-225274, V-225354, V-225364, V-225365, V-225366, V-225390, V-225396, V-225399, V-225444, V-225449, V-225491, V-225492, V-225493, V-225496, V-225497, V-225498, V-225505, V-225507, V-225547, V-225552, dan V-225556
+ **Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 7**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah) untuk Microsoft .NET Framework. Tidak ada pengaturan STIG tambahan yang berlaku untuk kerentanan Kategori I.
+ **Windows Firewall STIG Versi 2 Rilis 2**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah), ditambah:

  V-241992, V-241997, dan V-242002
+ **Internet Explorer 11 STIG Versi 2 Rilis 6**

  V-252910
+ **Microsoft Edge STIG Versi 2 Rilis 4 (hanya Windows Server 2022 dan 2025)**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah), ditambah:

  V-235758 dan V-235759
+ **Microsoft Defender STIG Versi 2 Rilis 7**

  Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah), ditambah:

  V-213426, V-213428, V-213452, dan V-213453

## Log riwayat versi STIG untuk Windows
<a name="ib-windows-version-hist"></a>

Bagian ini mencatat riwayat versi komponen pengerasan Windows untuk pembaruan STIG triwulanan. Untuk melihat perubahan dan versi yang diterbitkan selama seperempat, pilih judul untuk memperluas informasi.

### Perubahan Q1 2026 - 10/03/2026:
<a name="2026-q1-windows"></a>

Menambahkan dukungan untuk Windows Server 2025 dan memperbarui semua yang berlaku STIGs untuk kuartal pertama 2026.

**STIG-build-windows**
+ Windows Server 2025 STIG Versi 1 Rilis 1
+ Windows Server 2022 STIG Versi 2 Rilis 7
+ Windows Server 2019 STIG Versi 3 Rilis 7
+ Windows Server 2016 STIG Versi 2 Rilis 10
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 5
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 7
+ Windows Firewall STIG Versi 2 Rilis 2
+ Internet Explorer 11 STIG Versi 2 Rilis 8
+ Microsoft Edge STIG Versi 2 Rilis 4 (hanya Windows Server 2022 dan 2025)

### Perubahan Q3 2025 - 9/04/2025 (tidak ada perubahan):
<a name="2025-q3-windows"></a>

Tidak ada perubahan untuk komponen Windows STIGS untuk rilis kuartal ketiga 2025.

### Perubahan Q2 2025 - 26/06/2025:
<a name="2025-q2-windows"></a>

Versi STIG yang diperbarui dan menerapkan STIGS untuk rilis Q2 2025 sebagai berikut:

**STIG-Build-Windows-Low versi 2025.2.x**
+ Windows Server 2022 STIG Versi 2 Rilis 4
+ Windows Server 2019 STIG Versi 3 Rilis 4
+ Windows Server 2016 STIG Versi 2 Rilis 10
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 5
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 6
+ Windows Firewall STIG Versi 2 Rilis 2
+ Internet Explorer 11 STIG Versi 2 Rilis 5
+ Microsoft Edge STIG Versi 2 Rilis 2 (hanya Windows Server 2022)

**STIG-Build-Windows-Medium versi 2025.2.x**
+ Windows Server 2022 STIG Versi 2 Rilis 4
+ Windows Server 2019 STIG Versi 3 Rilis 4
+ Windows Server 2016 STIG Versi 2 Rilis 10
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 5
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 6
+ Windows Firewall STIG Versi 2 Rilis 2
+ Internet Explorer 11 STIG Versi 2 Rilis 5
+ Microsoft Edge STIG Versi 2 Rilis 2 (hanya Windows Server 2022)
+ Defender STIG Versi 2 Rilis 4

**STIG-Build-Windows-High versi 2025.2.x**
+ Windows Server 2022 STIG Versi 2 Rilis 4
+ Windows Server 2019 STIG Versi 3 Rilis 4
+ Windows Server 2016 STIG Versi 2 Rilis 10
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 5
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 6
+ Windows Firewall STIG Versi 2 Rilis 2
+ Internet Explorer 11 STIG Versi 2 Rilis 5
+ Microsoft Edge STIG Versi 2 Rilis 2 (hanya Windows Server 2022)
+ Defender STIG Versi 2 Rilis 4

### Perubahan Q1 2025 - 05/04/2025:
<a name="2025-q1-windows"></a>

STIGS yang diperbarui untuk Internet Explorer 11 STIG Versi 2 Rilis 5 untuk semua komponen STIG untuk rilis kuartal pertama 2025.
+ STIG-Build-Windows-Low versi 2025.1.x
+ STIG-Build-Windows-Medium versi 2025.1.x
+ STIG-Build-Windows-High versi 2025.1.x

### Perubahan Q4 2024 - 02/04/2025:
<a name="2024-q4-windows"></a>

Versi STIG yang diperbarui dan menerapkan STIGS untuk rilis Q4 2024 sebagai berikut:

**STIG-Build-Windows-Low versi 2024.4.0**
+ Windows Server 2022 STIG Versi 2 Rilis 2
+ Windows Server 2019 STIG Versi 3 Rilis 2
+ Windows Server 2016 STIG Versi 2 Rilis 9
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 5
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 2
+ Windows Firewall STIG Versi 2 Rilis 2
+ Internet Explorer 11 STIG Versi 2 Rilis 5
+ Microsoft Edge STIG Versi 2 Rilis 2 (hanya Windows Server 2022)

**STIG-Build-Windows-Medium versi 2024.4.0**
+ Windows Server 2022 STIG Versi 2 Rilis 2
+ Windows Server 2019 STIG Versi 3 Rilis 2
+ Windows Server 2016 STIG Versi 2 Rilis 9
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 5
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 2
+ Windows Firewall STIG Versi 2 Rilis 2
+ Internet Explorer 11 STIG Versi 2 Rilis 5
+ Microsoft Edge STIG Versi 2 Rilis 2 (hanya Windows Server 2022)
+ Defender STIG Versi 2 Rilis 4

**STIG-Build-Windows-High versi 2024.4.0**
+ Windows Server 2022 STIG Versi 2 Rilis 2
+ Windows Server 2019 STIG Versi 3 Rilis 2
+ Windows Server 2016 STIG Versi 2 Rilis 9
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 5
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 2
+ Windows Firewall STIG Versi 2 Rilis 2
+ Internet Explorer 11 STIG Versi 2 Rilis 5
+ Microsoft Edge STIG Versi 2 Rilis 2 (hanya Windows Server 2022)
+ Defender STIG Versi 2 Rilis 4

### Perubahan Q3 2024 - 10/04/2023 (tidak ada perubahan):
<a name="2024-q3-windows"></a>

Tidak ada perubahan untuk komponen Windows STIGS untuk rilis kuartal ketiga 2024.

### Perubahan Q2 2024 - 05/10/2024 (tidak ada perubahan):
<a name="2024-q2-windows"></a>

Tidak ada perubahan untuk komponen Windows STIGS untuk rilis kuartal kedua 2024.

### Perubahan Q1 2024 - 02/06/2024 (tidak ada perubahan):
<a name="2024-q1-windows"></a>

Tidak ada perubahan untuk komponen Windows STIGS untuk rilis kuartal pertama 2024.

### Perubahan Q4 2023 - 12/04/2023 (tidak ada perubahan):
<a name="2023-q4-windows"></a>

Tidak ada perubahan untuk komponen Windows STIGS untuk rilis kuartal keempat 2023.

### Perubahan Q3 2023 - 10/04/2023 (tidak ada perubahan):
<a name="2023-q3-windows"></a>

Tidak ada perubahan untuk komponen Windows STIGS untuk rilis kuartal ketiga 2023.

### Perubahan Q2 2023 - 05/03/2023 (tidak ada perubahan):
<a name="2023-q2-windows"></a>

Tidak ada perubahan untuk komponen Windows STIGS untuk rilis kuartal kedua 2023.

### Perubahan Q1 2023 - 27/03/2023 (tidak ada perubahan):
<a name="2023-q1-windows"></a>

Tidak ada perubahan untuk komponen Windows STIGS untuk rilis kuartal pertama 2023.

### 2022 Perubahan Q4 - 02/01/2023:
<a name="2022-q4-windows"></a>

Versi STIG yang diperbarui dan menerapkan STIGS untuk rilis Q4 2022 sebagai berikut:

**STIG-Build-Windows-Low versi 2022.4.x**
+ Windows Server 2022 STIG Versi 1 Rilis 1
+ Windows Server 2019 STIG Versi 2 Rilis 5
+ Windows Server 2016 STIG Versi 2 Rilis 5
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 5
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 2
+ Windows Firewall STIG Versi 2 Rilis 1
+ Internet Explorer 11 STIG Versi 2 Rilis 3
+ Microsoft Edge STIG Versi 1 Rilis 6 (hanya Windows Server 2022)

**STIG-Build-Windows-Medium versi 2022.4.x**
+ Windows Server 2022 STIG Versi 1 Rilis 1
+ Windows Server 2019 STIG Versi 2 Rilis 5
+ Windows Server 2016 STIG Versi 2 Rilis 5
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 5
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 2
+ Windows Firewall STIG Versi 2 Rilis 1
+ Internet Explorer 11 STIG Versi 2 Rilis 3
+ Microsoft Edge STIG Versi 1 Rilis 6 (hanya Windows Server 2022)
+ Defender STIG Versi 2 Rilis 4 (hanya Windows Server 2022)

**STIG-Build-Windows-High versi 2022.4.x**
+ Windows Server 2022 STIG Versi 1 Rilis 1
+ Windows Server 2019 STIG Versi 2 Rilis 5
+ Windows Server 2016 STIG Versi 2 Rilis 5
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 5
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 2
+ Windows Firewall STIG Versi 2 Rilis 1
+ Internet Explorer 11 STIG Versi 2 Rilis 3
+ Microsoft Edge STIG Versi 1 Rilis 6 (hanya Windows Server 2022)
+ Defender STIG Versi 2 Rilis 4 (hanya Windows Server 2022)

### 2022 Perubahan Q3 - 30/09/2022 (tidak ada perubahan):
<a name="2022-q3-windows"></a>

Tidak ada perubahan untuk komponen Windows STIGS untuk rilis kuartal ketiga 2022.

### 2022 Perubahan Q2 - 08/02/2022:
<a name="2022-q2-windows"></a>

Versi STIG yang diperbarui dan menerapkan STIGS untuk rilis Q2 2022.

**STIG-Build-Windows-Low versi 1.5.x**
+ Windows Server 2019 STIG Versi 2 Rilis 4
+ Windows Server 2016 STIG Versi 2 Rilis 4
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 3
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 1
+ Windows Firewall STIG Versi 2 Rilis 1
+ Internet Explorer 11 STIG Versi 1 Rilis 19

**STIG-Build-Windows-Medium versi 1.5.x**
+ Windows Server 2019 STIG Versi 2 Rilis 4
+ Windows Server 2016 STIG Versi 2 Rilis 4
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 3
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 1
+ Windows Firewall STIG Versi 2 Rilis 1
+ Internet Explorer 11 STIG Versi 1 Rilis 19

**STIG-Build-Windows-High versi 1.5.x**
+ Windows Server 2019 STIG Versi 2 Rilis 4
+ Windows Server 2016 STIG Versi 2 Rilis 4
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 3
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 1
+ Windows Firewall STIG Versi 2 Rilis 1
+ Internet Explorer 11 STIG Versi 1 Rilis 19

### 2022 Perubahan Q1 - 08/02/2022 (tidak ada perubahan):
<a name="2022-q1-windows"></a>

Tidak ada perubahan untuk komponen Windows STIGS untuk rilis kuartal pertama 2022.

### 2021 Perubahan Q4 - 12/20/2021:
<a name="2021-q4-windows"></a>

Versi STIG yang diperbarui dan menerapkan STIGS untuk rilis kuartal keempat 2021.

**STIG-Build-Windows-Low versi 1.5.x**
+ Windows Server 2019 STIG Versi 2 Rilis 3
+ Windows Server 2016 STIG Versi 2 Rilis 3
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 3
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 1
+ Windows Firewall STIG Versi 2 Rilis 1
+ Internet Explorer 11 STIG Versi 1 Rilis 19

**STIG-Build-Windows-Medium versi 1.5.x**
+ Windows Server 2019 STIG Versi 2 Rilis 3
+ Windows Server 2016 STIG Versi 2 Rilis 3
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 3
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 1
+ Windows Firewall STIG Versi 2 Rilis 1
+ Internet Explorer 11 STIG Versi 1 Rilis 19

**STIG-Build-Windows-High versi 1.5.x**
+ Windows Server 2019 STIG Versi 2 Rilis 3
+ Windows Server 2016 STIG Versi 2 Rilis 3
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 3
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 1
+ Windows Firewall STIG Versi 2 Rilis 1
+ Internet Explorer 11 STIG Versi 1 Rilis 19

### 2021 Perubahan Q3 - 09/30/2021:
<a name="2021-q3-windows"></a>

Versi STIG yang diperbarui dan menerapkan STIGS untuk rilis kuartal ketiga 2021.

**STIG-Build-Windows-Low versi 1.4.x**
+ Windows Server 2019 STIG Versi 2 Rilis 2
+ Windows Server 2016 STIG Versi 2 Rilis 2
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 2
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 1
+ Windows Firewall STIG Versi 1 Rilis 7
+ Internet Explorer 11 STIG Versi 1 Rilis 19

**STIG-Build-Windows-Medium versi 1.4.x**
+ Windows Server 2019 STIG Versi 2 Rilis 2
+ Windows Server 2016 STIG Versi 2 Rilis 2
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 2
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 1
+ Windows Firewall STIG Versi 1 Rilis 7
+ Internet Explorer 11 STIG Versi 1 Rilis 19

**STIG-Build-Windows-High versi 1.4.x**
+ Windows Server 2019 STIG Versi 2 Rilis 2
+ Windows Server 2016 STIG Versi 2 Rilis 2
+ Windows Server 2012 R2 MS STIG Versi 3 Rilis 2
+ Microsoft .NET Framework 4.0 STIG Versi 2 Rilis 1
+ Windows Firewall STIG Versi 1 Rilis 7
+ Internet Explorer 11 STIG Versi 1 Rilis 19

## Komponen pengerasan STIG Linux
<a name="linux-os-stig"></a>

Bagian ini berisi informasi tentang komponen pengerasan STIG Linux, diikuti oleh log riwayat versi. Jika distribusi Linux tidak memiliki pengaturan STIG sendiri, komponen pengerasan menerapkan pengaturan RHEL.

Komponen Linux memiliki parameter input opsional yang membantu Anda menyesuaikan perilaku berikut untuk instance Linux Anda.
+ **Level (string)** Jika tidak ada nilai yang ditentukan, defaultnya adalah `High` dan akan menerapkan semua konfigurasi Rendah, Sedang, dan Tinggi yang dapat diterapkan.
+ **InstallPackages (string)** Jika nilainya`No`, komponen tidak menginstal paket perangkat lunak tambahan apa pun. Jika nilainya`Yes`, komponen menginstal paket perangkat lunak tambahan yang diperlukan untuk kepatuhan maksimum. Nilai default-nya `No`.
+ **SetDoDConsentBanner (string)** Jika nilainya`No`, spanduk persetujuan DoD tidak ditampilkan saat Anda melampirkan ke instance yang memiliki salah satu komponen STIG Linux diinstal. Jika nilainya`Yes`, spanduk persetujuan DoD ditampilkan sebelum Anda masuk saat Anda melampirkan ke instance yang memiliki salah satu komponen STIG Linux yang diinstal. Anda harus mengakui spanduk sebelum Anda dapat masuk. Nilai default-nya `No`.

  Untuk contoh spanduk persetujuan, lihat [Pemberitahuan Privasi dan Persetujuan Departemen Pertahanan Penafian](https://dso.dla.mil/) yang muncul saat Anda mengakses situs web Layanan Dokumen DLA.

Komponen pengerasan menerapkan pengaturan STIG yang didukung ke infrastruktur berdasarkan distribusi Linux, sebagai berikut:

**Red Hat Enterprise Linux (RHEL) 7 pengaturan STIG**
+ RHEL 7
+ CentOS 7
+ Amazon Linux 2 (AL2)

**Pengaturan RHEL 8 STIG**
+ RHEL 8
+ CentOS 8

**Pengaturan RHEL 9 STIG**
+ RHEL 9
+ CentOS Aliran 9

### Linux STIG Rendah (Kategori III)
<a name="ib-linux-stig-low"></a>

Daftar berikut berisi pengaturan STIG yang diterapkan komponen pengerasan untuk infrastruktur Anda. Jika setelan yang didukung tidak berlaku untuk infrastruktur Anda, komponen pengerasan akan melewatkan pengaturan itu, dan melanjutkan. Misalnya, beberapa pengaturan STIG mungkin tidak berlaku untuk server mandiri. Kebijakan khusus organisasi juga dapat memengaruhi pengaturan mana yang diterapkan komponen pengerasan, seperti persyaratan bagi administrator untuk meninjau pengaturan dokumen.

Untuk daftar lengkap, lihat [Perpustakaan STIGs Dokumen](https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux). Untuk informasi tentang cara melihat daftar lengkap, lihat [Alat Melihat STIG](https://public.cyber.mil/stigs/srg-stig-tools/).

**RHEL 7 STIG Versi 3 Rilis 15**
+ 

**RHEL 7/CentOS 7/ AL2**  
V-204452, V-204576, dan V-204605

**RHEL 8 STIG Versi 2 Rilis 6**
+ 

**RHEL 8/CentOS 8**  
V-230241, V-230269, V-230270, V-230281, V-230285, V-230346, V-230381, V-230395, V-230468, V-230469, V-230485, V-230486, V-230491, V-230494, V-230495, V-230494 6, V-230497, V-230498, V-230499, dan V-244527

**RHEL 9 STIG Versi 2 Rilis 7**
+ 

**RHEL 9/CentOS Aliran 9**  
V-257782, V-257824, V-258138, V-258037, V-257880, V-258069, V-258076, V-258067, V-257946, V-257947, V-257795, V-257796, dan V-258173

**Amazon Linux 2023 STIG Versi 1 Rilis 2**

V-274141

**SLES 12 STIG Versi 3 Rilis 4**

V-217108, V-217113, V-217140, V-217198, V-217209, V-217211, V-217212, V-217213, V-217214, V-217215, V-217216, V-217236, V-217237, V-217238, V-217239, V-217282, dan V-255915

**SLES 15 STIG Versi 2 Rilis 6**

V-234811, V-234850, V-234868, V-234873, V-234905, V-234907, V-234908, V-234909, V-234933, V-234934, V-234935, V-234936, V-234955, V-234963, V-234967, dan V-255921

**Ubuntu 18.04 STIG Versi 2 Rilis 15**

V-219163, V-219164, V-219165, V-219172, V-219173, V-219174, V-219175, V-219178, V-219179, V-219180, V-219210, V-219301, V-219327, V-219332, dan V-219333

**Ubuntu 20.04 STIG Versi 2 Rilis 4**

V-238202, V-238203, V-238221, V-238222, V-238223, V-238224, V-238226, V-238234, V-238235, V-238237, V-238308, V-238323, V-238357, V-238362, dan V-238373

**Ubuntu 22.04 STIG Versi 2 Rilis 7**

V-260472, V-260476, V-260479, V-260480, V-260481, V-260520, V-260521, V-260549, V-260550, V-260551, V-260552, V-260581, dan V-260596

**Ubuntu 24.04 STIG Versi 1 Rilis 4**

V-270645, V-270646, V-270664, V-270677, V-270690, V-270695, V-270706, V-270710, V-270734, V-270749, V-270752, V-270818, dan V-270820

### Linux STIG Medium (Kategori II)
<a name="ib-linux-stig-medium"></a>

Daftar berikut berisi pengaturan STIG yang diterapkan komponen pengerasan untuk infrastruktur Anda. Jika setelan yang didukung tidak berlaku untuk infrastruktur Anda, komponen pengerasan akan melewatkan pengaturan itu, dan melanjutkan. Misalnya, beberapa pengaturan STIG mungkin tidak berlaku untuk server mandiri. Kebijakan khusus organisasi juga dapat memengaruhi pengaturan mana yang diterapkan komponen pengerasan, seperti persyaratan bagi administrator untuk meninjau pengaturan dokumen.

Untuk daftar lengkap, lihat [Perpustakaan STIGs Dokumen](https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux). Untuk informasi tentang cara melihat daftar lengkap, lihat [Alat Melihat STIG](https://public.cyber.mil/stigs/srg-stig-tools/).

**catatan**  
Komponen pengerasan Linux STIG Medium mencakup semua pengaturan STIG yang terdaftar yang AWSTOE berlaku untuk komponen pengerasan Rendah STIG Linux, selain pengaturan STIG yang terdaftar khusus untuk kerentanan Kategori II.

**RHEL 7 STIG Versi 3 Rilis 15**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah) untuk distribusi Linux ini, ditambah:
+ 

**RHEL 7/CentOS 7/ AL2**  
V-204405, V-204406, V-204407, V-204408, V-204409, V-204410, V-204411, V-204412, V-204413, V-204414, V-204415, V-204416, V-204417, V-204420, V-204422, V-204423, V-204426, V-204426, V-204427, V-204431, V-204434, V-204435, V-204437, V-204449, V-204450, V-204451, V-204457, V-204466, V-204490, V-204491, V-204503, V-204507, V-204508, V-204510, V-204511, V-204511, V-204511, V-204511, V-204511 4512, V-204514, V-204515, V-204516, V-204517, V-204521, V-204524, V-204531, V-204536, V-204537, V-204538, V-204539, V-204540, V-204542, V-204543, V-204544, V-204545, V-204546, V-204546, V-204546, V-204546, V-204547, V-204548, V-204549, V-204550, V-204551, V-204552, V-204553, V-204554, V-204555, V-204556, V-204557, V-204558, V-204559, V-204560, V-204562, V-204563, V-204564, V-204566, V-204567, V-204568, V-204572, V-204579, V-204584, V-204585, V-204587, V-204588, V-204589, V-204590, V-204591, V-204592, V-204593, V-204596, V-204597, V-204598, V-204599, V-204601, V-204602, V-204609, V-204609, V-204610, V-204611, V-204612, V-204613, V-204614, V-204615, V-204616, V-204617, V-204619, V-204622, V-204625, V-204630, V-204631, V-204633, V-233307, V-237634, V-237635, V-251703, V-255925, V-255927, V-255928, dan V-256970

**RHEL 8 STIG Versi 2 Rilis 6**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah) untuk distribusi Linux ini, ditambah:
+ 

**RHEL 8/CentOS 8**  
V-230222, V-230228, V-230231, V-230233, V-230236, V-230237, V-230238, V-230239, V-230240, V-230240, V-230243, V-230244, V-230245, V-230246, V-230247, V-230248, V-230249, V-230250, V-230255, V-230256, V-230257, V-230258, V-230259, V-230260, V-230261, V-230262, V-230266, V-230267, V-230268, V-230271, V-230273, V-230275, V-230275, V-230275 230276, V-230277, V-230278, V-230279, V-230280, V-230282, V-230282, V-230286, V-230287, V-230288, V-230290, V-230291, V-230296, V-230298, V-230310, V-230311, V-230312, V-230313, V-230314, V-230315, V-230316, V-230318, V-230319, V-230320, V-230321, V-230322, V-230324, V-230325, V-230326, V-230327, V-230330, V-230332, V-230333, V-230335, V-230337, V-230339, V-230341, V-230343, V-230345, V-230347, V-230347, V-230347, V-230347 48, V-230352, V-230353, V-230354, V-230356, V-230357, V-230358, V-230359, V-230360, V-230361, V-230362, V-230363, V-230365, V-230366, V-230368, V-230369, V-230369, V-2303309 70, V-230372, V-230373, V-230375, V-230376, V-230377, V-230378, V-230380, V-230382, V-230383, V-230385, V-230386, V-230387, V-230389, V-230390, V-230392, V-230392, V-230392, V-230392 30393, V-230394, V-230396, V-230397, V-230398, V-230399, V-230400, V-230401, V-230402, V-230403, V-230404, V-230405, V-230406, V-230407, V-230408, V-230409, V-230410, V-230411, V-230412, V-230413, V-230418, V-230419, V-230421, V-230422, V-230423, V-230423, V-230423, V-230423 24, V-230425, V-230426, V-230427, V-230428, V-230429, V-230430, V-230431, V-230432, V-230433, V-230434, V-230435, V-230436, V-230437, V-230438, V-230439, V-230439, V-230439, V-230439 30444, V-230446, V-230447, V-230448, V-230449, V-230455, V-230456, V-230462, V-230463, V-230464, V-230465, V-230466, V-230467, V-230470, V-230471, V-230472, V-230473, V-230474, V-230475, V-230478, V-230480, V-230481, V-230482, V-230483, V-230488, V-230489, V-230493, V-230502, V-230503, V-230505, V-230506, V-230507, V-230523, V-230524, V-230525, V-230526, V-230527, V-230532, V-230535, V-230536, V-230537, V-230537, V-230537, V-230537, V-230537, V-230537 38, V-230539, V-230540, V-230541, V-230542, V-230543, V-230544, V-230545, V-230546, V-230547, V-230548, V-230549, V-230550, V-230555, V-230556, V-230557, V-230557, V-230557, V-23057 559, V-230560, V-230561, V-237640, V-237642, V-237643, V-244519, V-244523, V-244524, V-244525, V-244526, V-244528, V-244531, V-244533, V-244535, V-244536, V-244538, V-244539, V-244542, V-244543, V-244544, V-244545, V-244547, V-244550, V-244551, V-244552, V-244553, V-244554, V-250315, V-250315, V-250316, V-250316, V-250317, V-251707, V-251708, V-251709, V-251710, V-251711, V-251713, V-251714, V-251715, V-251716, V-251717, V-251718, V-256974, V-257258, V-257258, V-274877, V-279929, V-279930, dan V-279931

**RHEL 9 STIG Versi 2 Rilis 7**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah) untuk distribusi Linux ini, ditambah:
+ 

**RHEL 9/CentOS Aliran 9**  
V-257780, V-257781, V-257783, V-257786, V-257788, V-257790, V-257791, V-257792, V-257793, V-257794, V-257797, V-257798, V-257799, V-257801, V-257802, V-257803, V-257804, V-257804, V-257805, V-257806, V-257807, V-257808, V-257809, V-257810, V-257811, V-257812, V-257813, V-257814, V-257815, V-257816, V-257817, V-257825, V-257827, V-257828, V-257829, V-257830, V-257831, V-257832, V-257833, V-257834, V-257836, V-257838, V-257839, V-257840, V-257841, V-257842, V-257849, V-257882, V-257883, V-257884, V-257885, V-257886, V-257886, V-257886 887, V-257888, V-257889, V-257890, V-257891, V-257892, V-257893, V-257894, V-257895, V-257896, V-257897, V-257898, V-257899, V-257900, V-257901, V-257902, V-257903, V-257904, V-257905, V-257906, V-257907, V-257907, V-257907, V-257907, V-257907 7908, V-257909, V-257910, V-257911, V-257912, V-257913, V-257914, V-257915, V-257916, V-257917, V-257918, V-257919, V-257920, V-257921, V-257922, V-257923, V-257924, V-257925, V-257926, V-257927, V-257928, V-257929, V-257930, V-257933, V-257934, V-257935, V-257936, V-257939, V-257940, V-257942, V-257943, V-257944, V-257948, V-257951, V-257952, V-257953, V-257954, V-257954, V-257954, V-257954 57, V-257958, V-257959, V-257960, V-257961, V-257962, V-257963, V-257964, V-257965, V-257966, V-257967, V-257968, V-257969, V-257970, V-257971, V-257972, V-257973, V-257975, V-257976, V-257977, V-257978, V-257978, V-257979, V-257980, V-257982, V-257983, V-257985, V-257987, V-257988, V-257992, V-257993, V-257994, V-257995, V-257996, V-257997, V-257999, V-258000, V-258001, V-258001, V-258001, V-258001, V-258001 8002, V-258003, V-258004, V-258005, V-258006, V-258007, V-258008, V-258009, V-258010, V-258011, V-258028, V-258034, V-258035, V-258038, V-258039, V-258040, V-258041, V-258043, V-258046, V-258046, V-258046, V-258046, V-258046, V-258046, V-258049, V-258052, V-258054, V-258055, V-258056, V-258057, V-258060, V-258063, V-258064, V-258065, V-258066, V-258068, V-258070, V-258071, V-258072, V-258073, V-258074, V-258075, V-258077, V-258079, V-258080, V-258081, V-258082, V-258083, V-258084, V-258085, V-258088, V-258089, V-258090, V-258091, V-258092, V-258093, V-258095, V-258097, V-258098, V-258099, V-258100, V-258101, V-258102, V-258102, V-258102, V-258102 103, V-258104, V-258105, V-258107, V-258108, V-258109, V-258110, V-258111, V-258112, V-258113, V-258114, V-258115, V-258116, V-258117, V-258118, V-258119, V-258120, V-258120, V-258120, V-258120, V-258120, V-258120, V-258120 8121, V-258122, V-258123, V-258124, V-258125, V-258126, V-258128, V-258129, V-258130, V-258133, V-258137, V-258140, V-258141, V-258142, V-258144, V-258146, V-258147, V-258148, V-258148, V-258148, V-258148 150, V-258151, V-258152, V-258153, V-258154, V-258156, V-258157, V-258158, V-258159, V-258160, V-258161, V-258162, V-258163, V-258164, V-258165, V-258166, V-258166, V-258166, V-258166 167, V-258168, V-258169, V-258170, V-258171, V-258172, V-258175, V-258176, V-258177, V-258178, V-258179, V-258180, V-258181, V-258182, V-258183, V-258184, V-258184, V-258184 5, V-258186, V-258187, V-258188, V-258189, V-258190, V-258191, V-258192, V-258193, V-258194, V-258195, V-258196, V-258197, V-258198, V-258199, V-258200, V-258201, V-258202, V-258203, V-258204, V-258206, V-258207, V-258208, V-258209, V-258210, V-258211, V-258212, V-258213, V-258214, V-258215, V-258216, V-258217, V-258218, V-258219, V-258220, V-258221, V-258222, V-258223, V-258224, V-258225, V-258226, V-258227, V-258227, V-258227 28, V-258229, V-258232, V-258233, V-258234, V-258237, V-258239, V-258240, V-270174, V-270175, V-270176, V-270177, V-272488, dan V-279936

**Amazon Linux 2023 STIG Versi 1 Rilis 2**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah) untuk distribusi Linux ini, ditambah:

V-273995, V-274000, V-274001, V-274002, V-274003, V-274004, V-274005, V-274006, V-274008, V-274009, V-274010, V-274011, V-274012, V-274013, V-274014, V-274017, V-274018, V-274019, V-274020, V-274020, V-274021, V-274022, V-274023, V-274024, V-274026, V-274027, V-274028, V-274030, V-274031, V-274032, V-274033, V-274034, V-274035, V-274036, V-274040, V-274041, V-274042, V-274044, V-274045, V-274047, V-274048, V-274049, V-274050, V-274051, V-274053, V-274054, V-274059, V-274061, V-274062, V-274069, V-274070, V-274071, V-274072, V-274073, V-274074, V-274075, V-274075, V-274075 76, V-274077, V-274078, V-274079, V-274081, V-274082, V-274083, V-274084, V-274085, V-274086, V-274087, V-274088, V-274089, V-274090, V-274091, V-274092, V-274093, V-274094, V-274095, V-274096, V-274097, V-274098, V-274099, V-274100, V-274101, V-274102, V-274103, V-274104, V-274105, V-274106, V-274107, V-274108, V-274109, V-274110, V-274111, V-274112, V-274113, V-274113, V-274113, V-274113, V-274113, V-274113, V-274113, V-274113 114, V-274115, V-274116, V-274117, V-274119, V-274120, V-274121, V-274122, V-274123, V-274124, V-274125, V-274126, V-274127, V-274129, V-274130, V-274131, V-274131, V-274131, V-274132, V-274133, V-274134, V-274135, V-274136, V-274137, V-274138, V-274139, V-274140, V-274143, V-274144, V-274144, V-274145, V-274147, V-274149, V-274151, V-274152, V-274154, V-274155, V-274156, V-274157, V-274160, V-274161, V-274162, V-274163, V-274164, V-274165, V-274166, V-274167, V-274168, V-274169, V-274170, V-274173, V-274177, V-274181, V-274182, V-274185, dan V-274187

**SLES 12 STIG Versi 3 Rilis 4**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah) untuk distribusi Linux ini, ditambah:

V-217102, V-217105, V-217105, V-217106, V-217106, V-217110, V-217116, V-217117, V-217118, V-217119, V-217120, V-217121, V-217122, V-217124, V-217125, V-217126, V-217127, V-217128, V-217130, V-217134, V-217138, V-217143, V-217147, V-217152, V-217153, V-217154, V-217155, V-217156, V-217158, V-217161, V-217163, V-217166, V-217167, V-217168, V-217169, V-217170, V-217171, V-217182, V-217183, V-217188, V-217190, V-217191, V-217194, V-217195, V-217196, V-217197, V-217200, V-217201, V-217202, V-217202, V-217202, 217203, V-217204, V-217205, V-217206, V-217207, V-217208, V-217210, V-217217, V-217218, V-217223, V-217227, V-217230, V-217240, V-217241, V-217242, V-217243, V-217244, V-217245, V-217246, V-217247, V-217248, V-217249, V-217250, V-217251, V-217251, V-217251, 217252, V-217253, V-217254, V-217255, V-217257, V-217258, V-217260, V-217265, V-217266, V-217267, V-217269, V-217272, V-217273, V-217274, V-217275, V-217276, V-217277, V-217278, V-217279, V-217280, V-217283, V-217284, V-217286, V-217287, V-217288, V-217289, V-217290, V-217291, V-217292, V-217293, V-217294, V-217295, V-217296, V-217299, V-217300, V-217301, V-217302, V-233308, V-237605, V-237606, V-237607, V-237608, V-237609, V-237610, V-237611, V-237612, V-237614, V-237615, V-237616, V-237617, V-237618, V-237619, V-237620, V-237621, V-237622, V-237623, V-251720, V-251722, V-251722, V-251722, V-251722 5914, dan V-256981

**SLES 15 STIG Versi 2 Rilis 6**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah) untuk distribusi Linux ini, ditambah:

V-234802, V-234807, V-234808, V-234809, V-234813, V-234815, V-234817, V-234821, V-234822, V-234823, V-234825, V-234827, V-234828, V-234829, V-234830, V-234832, V-234833, V-234834, V-234835, V-234836, V-234837, V-234838, V-234839, V-234840, V-234841, V-234842, V-234843, V-234844, V-234845, V-234848, V-234854, V-234855, V-234856, V-234857, V-234858, V-234861, V-234861, V-234862, V-234863, V-234869, V-234870, V-234875, V-234878, V-234880, V-234881, V-234882, V-234883, V-234884, V-234885, V-234886, V-234887, V-234888, V-234889, V-234891, V-234895, V-234896, V-234896, V-234896, V-234896 97, V-234899, V-234900, V-234901, V-234902, V-234903, V-234904, V-234906, V-234910, V-234911, V-234912, V-234913, V-234914, V-234918, V-234924, V-234928, V-234932, V-234937, V-234938, V-234939, V-234940, V-234941, V-234942, V-234943, V-234944, V-234945, V-234946, V-234947, V-234948, V-234949, V-234950, V-234951, V-234952, V-234954, V-234956, V-234957, V-234958, V-234959, V-234959, V-234959, V-234959, V-234959 61, V-234962, V-234964, V-234966, V-234969, V-234973, V-234975, V-234976, V-234977, V-234978, V-234979, V-234981, V-234982, V-234983, V-234991, V-235002, V-235003, V-235007, V-235008, V-235008, V-235008, V-235009, V-235010, V-235013, V-235014, V-235015, V-235016, V-235017, V-235018, V-235019, V-235020, V-235021, V-235022, V-235023, V-235024, V-235025, V-235026, V-235028, V-235029, V-235030, V-251724, V-255920, V-256983, dan V-274879

**Ubuntu 18.04 STIG Versi 2 Rilis 15**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah) untuk distribusi Linux ini, ditambah:

V-219149, V-219155, V-219156, V-219160, V-219166, V-219168, V-219176, V-219181, V-219184, V-219186, V-219188, V-219189, V-219190, V-219191, V-219192, V-219193, V-219194, V-219195, V-219196, V-219197, V-219198, V-219199, V-219200, V-219201, V-219202, V-219203, V-219204, V-219205, V-219206, V-219207, V-219208, V-219209, V-219213, V-219214, V-219215, V-219216, V-219217, V-219218, V-219219, V-219220, V-219221, V-219222, V-219223, V-219224, V-219225, V-219226, V-219227, V-219227, V-219227, V-219227, V-219227, V-219227, V-219227, V-219227 28, V-219229, V-219230, V-219231, V-219232, V-219233, V-219234, V-219235, V-219236, V-219238, V-219239, V-219240, V-219241, V-219242, V-219243, V-219244, V-219250, V-219254, V-219257, V-219263, V-219264, V-219265, V-219266, V-219267, V-219268, V-219269, V-219270, V-219271, V-219272, V-219273, V-219274, V-219275, V-219276, V-219277, V-219279, V-219281, V-219287, V-219291, V-219296, V-219297, V-219298, V-219299, V-219300, V-219303, V-219304, V-219306, V-219309, V-219310, V-219311, V-219315, V-219318, V-219319, V-219323, V-219326, V-219328, V-219330, V-219331, V-2319331, V-219331, V-219331, V-219331, V-219331 35, V-219336, V-219337, V-219338, V-219339, V-219342, V-219344, V-233779, V-233780, dan V- 255906

**Ubuntu 20.04 STIG Versi 2 Rilis 4**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah) untuk distribusi Linux ini, ditambah:

V-238200, V-238205, V-238207, V-238209, V-238210, V-238211, V-238212, V-238213, V-238220, V-238225, V-238227, V-238228, V-238229, V-238230, V-238231, V-238232, V-238236, V-238238, V-238239, V-238240, V-238241, V-238242, V-238244, V-238245, V-238246, V-238247, V-238248, V-238249, V-238250, V-238251, V-238252, V-238253, V-238254, V-238255, V-238256, V-238257, V-238258, V-238264, V-238268, V-238271, V-238277, V-238278, V-238279, V-238280, V-238281, V-238282, V-238283, V-238284, V-238285, V-238286, V-238287, V-238288, V-238289, V-238290, V-238291, V-238292, V-238293, V-238294, V-238295, V-238297, V-238298, V-238300, V-238301, V-238302, V-238303, V-238303, V-238309, V-238310, V-238315, V-238316, V-238317, V-238318, V-238318, V-238318 238319, V-238320, V-238324, V-238325, V-238329, V-238333, V-238334, V-238337, V-238338, V-238339, V-238340, V-238341, V-238342, V-238343, V-238344, V-238345, V-238346, V-238347, V-238348, V-238349, V-238350, V-238351, V-238352, V-238353, V-238355, V-238356, V-238359, V-238369, V-238370, V-238371, V-238376, V-238377, V-238378, V-251505, V-255912, V-274852, dan V-274853

**Ubuntu 22.04 STIG Versi 2 Rilis 7**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah) untuk distribusi Linux ini, ditambah:

V-260471, V-260473, V-260474, V-260475, V-260475, V-260477, V-260478, V-260485, V-260486, V-260487, V-260488, V-260489, V-260490, V-260491, V-260492, V-260492, V-260492, V-260492, V-260492, V-260492 3, V-260494, V-260495, V-260496, V-260497, V-260498, V-260499, V-260500, V-260505, V-260506, V-260507, V-260508, V-260509, V-260510, V-260511, V-260512, V-260512, V-260512 513, V-260514, V-260522, V-260527, V-260528, V-260530, V-260533, V-260534, V-260535, V-260537, V-260538, V-260540, V-260542, V-260543, V-260545, V-260546, V-260546, V-260546, V-260547, V-260553, V-260554, V-260555, V-260556, V-260557, V-260560, V-260561, V-260562, V-260562, V-260563, V-260564, V-260565, V-260566, V-260567, V-260569, V-260572, V-260573, V-260574, V-260575, V-260576, V-260582, V-260584, V-260586, V-260588, V-260588, V-260588, V-260588 89, V-260590, V-260591, V-260594, V-260597, V-260598, V-260599, V-260600, V-260601, V-260602, V-260603, V-260604, V-260606, V-260607, V-260608, V-260608, V-260608 609, V-260610, V-260611, V-260612, V-260613, V-260614, V-260615, V-260616, V-260617, V-260618, V-260619, V-260620, V-260621, V-260622, V-260623, V-260624, V-260624, V-260624, V-260624, V-260625, V-260626, V-260627, V-260628, V-260629, V-260630, V-260631, V-260632, V-260633, V-260634, V-260635, V-260636, V-260637, V-260638, V-260639, V-260640, V-260641, V-260642, V-260643, V-260644, V-260646, V-260647, V-260648, V-260649, V-274862, V-274864, dan V-274866

**Ubuntu 24.04 STIG Versi 1 Rilis 4**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori III (Rendah) untuk distribusi Linux ini, ditambah:

V-270649, V-270651, V-270652, V-270653, V-270654, V-270656, V-270657, V-270659, V-270660, V-270661, V-270662, V-270663, V-270669, V-270672, V-270673, V-270674, V-270676, V-270678, V-270679, V-270680, V-270681, V-270683, V-270684, V-270685, V-270686, V-270687, V-270688, V-270689, V-270692, V-270693, V-270696, V-270697, V-270698, V-270700, V-270701, V-270702, V-270702, V-270702, V-270702, V-270702, V-270703, V-270704, V-270705, V-270709, V-270715, V-270716, V-270718, V-270720, V-270721, V-270722, V-270723, V-270724, V-270725, V-270726, V-270727, V-270728, V-270729, V-270730, V-270730, V-270730, V-270730, V-270731, V-270732, V-270733, V-270737, V-270739, V-270740, V-270741, V-270742, V-270743, V-270746, V-270750, V-270753, V-270755, V-270756, V-270757, V-270758, V-270759, V-270760, V-270765, V-270766, V-270767, V-270768, V-270769, V-270770, V-270771, V-270772, V-270773, V-270775, V-270776, V-270777, V-270778, V-270779, V-270780, V-270781, V-270782, V-270783, V-270784, V-270785, V-270786, V-270786, V-270786 87, V-270788, V-270789, V-270790, V-270791, V-270792, V-270793, V-270794, V-270795, V-270796, V-270797, V-270798, V-270799, V-270800, V-270801, V-270802, V-270803, V-270804, V-270804, V-270804 805, V-270806, V-270807, V-270808, V-270809, V-270810, V-270811, V-270813, V-270814, V-270815, V-270821, V-270822, V-270823, V-270824, V-270825, V-270826, V-270827, V-270828, V-270828, V-270829, V-270829, 270830, V-270831, V-270832, V-274870, V-274871, V-274872, dan V-274873

### Linux STIG Tinggi (Kategori I)
<a name="ib-linux-stig-high"></a>

Daftar berikut berisi pengaturan STIG yang diterapkan komponen pengerasan untuk infrastruktur Anda. Jika setelan yang didukung tidak berlaku untuk infrastruktur Anda, komponen pengerasan akan melewatkan pengaturan itu, dan melanjutkan. Misalnya, beberapa pengaturan STIG mungkin tidak berlaku untuk server mandiri. Kebijakan khusus organisasi juga dapat memengaruhi pengaturan mana yang diterapkan komponen pengerasan, seperti persyaratan bagi administrator untuk meninjau pengaturan dokumen.

Untuk daftar lengkap, lihat [Perpustakaan STIGs Dokumen](https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux). Untuk informasi tentang cara melihat daftar lengkap, lihat [Alat Melihat STIG](https://public.cyber.mil/stigs/srg-stig-tools/).

**catatan**  
Komponen pengerasan Linux STIG High mencakup semua pengaturan STIG yang terdaftar yang AWSTOE berlaku untuk komponen pengerasan Linux STIG Low dan Linux STIG Medium, selain pengaturan STIG yang terdaftar yang berlaku khusus untuk kerentanan Kategori I.

**RHEL 7 STIG Versi 3 Rilis 15**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah) untuk distribusi Linux ini, ditambah:
+ 

**RHEL 7/CentOS 7/ AL2**  
V-204424, V-204425, V-204442, V-204443, V-204447, V-204448, V-204455, V-204462, V-204497, V-204497, V-204502, V-204594, V-204620, dan V-204621

**RHEL 8 STIG Versi 2 Rilis 6**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah) untuk distribusi Linux ini, ditambah:
+ 

**RHEL 8/CentOS 8**  
V-230223, V-230264, V-230283, V-230284, V-230487, V-230492, V-230533, V-230558, V-244540, V-279933, V-230265, V-230226, V-230530, V-268322, V-230529, dan V-230531

**RHEL 9 STIG Versi 2 Rilis 7**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah) untuk distribusi Linux ini, ditambah:
+ 

**RHEL 9/CentOS Aliran 9**  
V-257820, V-257821, V-257826, V-257835, V-257955, V-257956, V-258059, V-258230, V-258238, V-257984, V-257986, V-258078, V-258094, V-258235, V-257784, dan V-257785

**Amazon Linux 2023 STIG Versi 1 Rilis 2**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah) untuk distribusi Linux ini, ditambah:

V-273996, V-273997, V-273999, V-274007, V-274038, V-274039, V-274046, V-274052, V-274057, dan V-274153

**SLES 12 STIG Versi 3 Rilis 4**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah) untuk distribusi Linux ini, ditambah:

 V-217101, V-217139, V-217141, V-217142, V-217159, V-217160, V-217164, V-217264, V-217268, V-222386, dan V-251721

**SLES 15 STIG Versi 2 Rilis 6**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah) untuk distribusi Linux ini, ditambah:

V-234800, V-234804, V-234818, V-234852, V-234859, V-234860, V-234898, V-234984, V-234985, V-234988, V-234989, V-234990, V-235031, V-235032, dan V-251725

**Ubuntu 18.04 STIG Versi 2 Rilis 15**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah) untuk distribusi Linux ini, ditambah:

V-219157, V-219158, V-219177, V-219212, V-219308, V-219314, V-219316, dan V-251507

**Ubuntu 20.04 STIG Versi 2 Rilis 4**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah) untuk distribusi Linux ini, ditambah:

V-238201, V-238218, V-238219, V-238326, V-238327, V-238380, dan V-251504

**Ubuntu 22.04 STIG Versi 2 Rilis 7**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah) untuk distribusi Linux ini, ditambah:

V-260469, V-260482, V-260483, V-260523, V-260524, V-260526, V-260529, V-260539, V-260570, V-260571, V-260579, dan V-279937

**Ubuntu 24.04 STIG Versi 1 Rilis 4**

Termasuk semua pengaturan STIG yang didukung yang diterapkan komponen pengerasan untuk kerentanan Kategori II dan III (Sedang dan Rendah) untuk distribusi Linux ini, ditambah:

V-270647, V-270648, V-270665, V-270666, V-270708, V-270711, V-270712, V-270713, V-270714, V-270717, V-270736, V-270738, dan V-279938

## Log riwayat versi STIG untuk Linux
<a name="ib-linux-version-hist"></a>

Bagian ini mencatat riwayat versi komponen Linux. Untuk melihat perubahan dan versi yang diterbitkan selama seperempat, pilih judul untuk memperluas informasi.

### Perubahan Q1 2026 - 10/03/2026:
<a name="2026-q1-linux"></a>

Memperbarui versi STIG berikut, diterapkan STIGs untuk rilis kuartal pertama 2026 untuk semua tingkat kepatuhan:

**STIG-Build-Linux**
+ RHEL 8 STIG Versi 2 Rilis 6
+ RHEL 9 STIG Versi 2 Rilis 7
+ Amazon Linux 2023 STIG Versi 1 Rilis 2
+ SLES 12 STIG Versi 3 Rilis 4
+ SLES 15 STIG Versi 2 Rilis 6
+ Ubuntu 20.04 STIG Versi 2 Rilis 4
+ Ubuntu 22.04 STIG Versi 2 Rilis 7
+ Ubuntu 24.04 STIG Versi 1 Rilis 4

### Perubahan Q3 2025 - 09/04/2025:
<a name="2025-q3-linux"></a>

Menambahkan dukungan untuk sistem operasi SUSE Linux Enterprise Server (SLES) dan Amazon Linux 2023. Memperbarui versi STIG berikut dan menerapkan STIGS untuk rilis kuartal ketiga 2025 untuk semua tingkat kepatuhan (): low/medium/high
+ RHEL 7 STIG Versi 3 Rilis 15
+ RHEL 8 STIG Versi 2 Rilis 4
+ RHEL 9 STIG Versi 2 Rilis 5
+ Amazon Linux 2023 STIG Versi 1 Rilis 1
+ SLES 12 STIG Versi 3 Rilis 3
+ SLES 15 STIG Versi 2 Rilis 5
+ Ubuntu 18.04 STIG Versi 2 Rilis 15
+ Ubuntu 20.04 STIG Versi 2 Rilis 3
+ Ubuntu 22.04 STIG Versi 2 Rilis 5
+ Ubuntu 24.04 STIG Versi 1 Rilis 2

### Perubahan Q2 2025 - 26/06/2025:
<a name="2025-q2-linux"></a>

Memperbarui versi STIG berikut, menerapkan STIGS untuk rilis kuartal kedua 2025:

**STIG-Build-Linux-Low versi 2025.2.x**
+ RHEL 7 STIG Versi 3 Rilis 15
+ RHEL 8 STIG Versi 2 Rilis 3
+ RHEL 9 STIG Versi 2 Rilis 4
+ Ubuntu 18.04 STIG Versi 2 Rilis 15
+ Ubuntu 20.04 STIG Versi 2 Rilis 2
+ Ubuntu 22.04 STIG Versi 2 Rilis 4
+ Ubuntu 24.04 STIG Versi 1 Rilis 1

**STIG-Build-Linux-Medium versi 2025.2.x**
+ RHEL 7 STIG Versi 3 Rilis 15
+ RHEL 8 STIG Versi 2 Rilis 3
+ RHEL 9 STIG Versi 2 Rilis 4
+ Ubuntu 18.04 STIG Versi 2 Rilis 15
+ Ubuntu 20.04 STIG Versi 2 Rilis 2
+ Ubuntu 22.04 STIG Versi 2 Rilis 4
+ Ubuntu 24.04 STIG Versi 1 Rilis 1

**STIG-Build-Linux-High versi 2025.2.x**
+ RHEL 7 STIG Versi 3 Rilis 15
+ RHEL 8 STIG Versi 2 Rilis 3
+ RHEL 9 STIG Versi 2 Rilis 4
+ Ubuntu 18.04 STIG Versi 2 Rilis 15
+ Ubuntu 20.04 STIG Versi 2 Rilis 2
+ Ubuntu 22.04 STIG Versi 2 Rilis 4
+ Ubuntu 24.04 STIG Versi 1 Rilis 1

### Perubahan Q1 2025 - 04/11/2025:
<a name="2025-q1-linux"></a>

Memperbarui versi STIG berikut, menerapkan STIGS untuk rilis kuartal pertama 2025, dan menambahkan dukungan untuk Ubuntu 24.04:

**STIG-Build-Linux-Low versi 2025.1.x**
+ RHEL 7 STIG Versi 3 Rilis 15
+ RHEL 8 STIG Versi 2 Rilis 2
+ RHEL 9 STIG Versi 2 Rilis 3
+ Ubuntu 18.04 STIG Versi 2 Rilis 15
+ Ubuntu 20.04 STIG Versi 2 Rilis 2
+ Ubuntu 22.04 STIG Versi 2 Rilis 3
+ Ubuntu 24.04 STIG Versi 1 Rilis 1

**STIG-Build-Linux-Medium versi 2025.1.x**
+ RHEL 7 STIG Versi 3 Rilis 15
+ RHEL 8 STIG Versi 2 Rilis 2
+ RHEL 9 STIG Versi 2 Rilis 3
+ Ubuntu 18.04 STIG Versi 2 Rilis 15
+ Ubuntu 20.04 STIG Versi 2 Rilis 2
+ Ubuntu 22.04 STIG Versi 2 Rilis 3
+ Ubuntu 24.04 STIG Versi 1 Rilis 1

**STIG-Build-Linux-High versi 2025.1.x**
+ RHEL 7 STIG Versi 3 Rilis 15
+ RHEL 8 STIG Versi 2 Rilis 2
+ RHEL 9 STIG Versi 2 Rilis 3
+ Ubuntu 18.04 STIG Versi 2 Rilis 15
+ Ubuntu 20.04 STIG Versi 2 Rilis 2
+ Ubuntu 22.04 STIG Versi 2 Rilis 3
+ Ubuntu 24.04 STIG Versi 1 Rilis 1

### Perubahan Q4 2024 - 12/10/2024:
<a name="2024-q4-linux"></a>

Memperbarui versi STIG berikut, menerapkan STIGS untuk rilis kuartal keempat 2024, dan menambahkan informasi tentang dua parameter input baru untuk komponen Linux:

**STIG-Build-Linux-Low versi 2024.4.x**
+ RHEL 7 STIG Versi 3 Rilis 15
+ RHEL 8 STIG Versi 2 Rilis 1
+ RHEL 9 STIG Versi 2 Rilis 2
+ Ubuntu 18.04 STIG Versi 2 Rilis 15
+ Ubuntu 20.04 STIG Versi 2 Rilis 1
+ Ubuntu 22.04 STIG Versi 2 Rilis 2

**STIG-Build-Linux-Medium versi 2024.4.x**
+ RHEL 7 STIG Versi 3 Rilis 15
+ RHEL 8 STIG Versi 2 Rilis 1
+ RHEL 9 STIG Versi 2 Rilis 2
+ Ubuntu 18.04 STIG Versi 2 Rilis 15
+ Ubuntu 20.04 STIG Versi 2 Rilis 1
+ Ubuntu 22.04 STIG Versi 2 Rilis 2

**STIG-Build-Linux-High versi 2024.4.x**
+ RHEL 7 STIG Versi 3 Rilis 15
+ RHEL 8 STIG Versi 2 Rilis 1
+ RHEL 9 STIG Versi 2 Rilis 2
+ Ubuntu 18.04 STIG Versi 2 Rilis 15
+ Ubuntu 20.04 STIG Versi 2 Rilis 1
+ Ubuntu 22.04 STIG Versi 2 Rilis 2

### Perubahan Q3 2024 - 10/04/2024 (tidak ada perubahan):
<a name="2024-q3-linux"></a>

Tidak ada perubahan untuk komponen Linux STIGS untuk rilis kuartal ketiga 2024.

### Perubahan Q2 2024 - 05/10/2024:
<a name="2024-q2-linux"></a>

Versi STIG yang diperbarui dan menerapkan STIGS untuk rilis kuartal kedua 2024. Juga menambahkan dukungan untuk RHEL 9, CentOS Stream 9, dan Ubuntu 22.04, sebagai berikut:

**STIG-Build-Linux-Low versi 2024.2.x**
+ RHEL 7 STIG Versi 3 Rilis 14
+ RHEL 8 STIG Versi 1 Rilis 14
+ RHEL 9 STIG Versi 1 Rilis 3
+ Ubuntu 18.04 STIG Versi 2 Rilis 14
+ Ubuntu 20.04 STIG Versi 1 Rilis 12
+ Ubuntu 22.04 STIG Versi 1 Rilis 1

**STIG-Build-Linux-Medium versi 2024.2.x**
+ RHEL 7 STIG Versi 3 Rilis 14
+ RHEL 8 STIG Versi 1 Rilis 14
+ RHEL 9 STIG Versi 1 Rilis 3
+ Ubuntu 18.04 STIG Versi 2 Rilis 14
+ Ubuntu 20.04 STIG Versi 1 Rilis 12
+ Ubuntu 22.04 STIG Versi 1 Rilis 1

**STIG-Build-Linux-High versi 2024.2.x**
+ RHEL 7 STIG Versi 3 Rilis 14
+ RHEL 8 STIG Versi 1 Rilis 14
+ RHEL 9 STIG Versi 1 Rilis 3
+ Ubuntu 18.04 STIG Versi 2 Rilis 14
+ Ubuntu 20.04 STIG Versi 1 Rilis 12
+ Ubuntu 22.04 STIG Versi 1 Rilis 1

### Perubahan Q1 2024 - 02/06/2024:
<a name="2024-q1-linux"></a>

Versi STIG yang diperbarui dan menerapkan STIGS untuk rilis kuartal pertama 2024 sebagai berikut:

**STIG-Build-Linux-Low versi 2024.1.x**
+ RHEL 7 STIG Versi 3 Rilis 14
+ RHEL 8 STIG Versi 1 Rilis 13
+ Ubuntu 18.04 STIG Versi 2 Rilis 13
+ Ubuntu 20.04 STIG Versi 1 Rilis 11

**STIG-Build-Linux-Medium versi 2024.1.x**
+ RHEL 7 STIG Versi 3 Rilis 14
+ RHEL 8 STIG Versi 1 Rilis 13
+ Ubuntu 18.04 STIG Versi 2 Rilis 13
+ Ubuntu 20.04 STIG Versi 1 Rilis 11

**STIG-Build-Linux-High versi 2024.1.x**
+ RHEL 7 STIG Versi 3 Rilis 14
+ RHEL 8 STIG Versi 1 Rilis 13
+ Ubuntu 18.04 STIG Versi 2 Rilis 13
+ Ubuntu 20.04 STIG Versi 1 Rilis 11

### Perubahan Q4 2023 - 12/07/2023:
<a name="2023-q4-linux"></a>

Versi STIG yang diperbarui dan menerapkan STIGS untuk rilis kuartal keempat 2023 sebagai berikut:

**STIG-Build-Linux-Low versi 2023.4.x**
+ RHEL 7 STIG Versi 3 Rilis 13
+ RHEL 8 STIG Versi 1 Rilis 12
+ Ubuntu 18.04 STIG Versi 2 Rilis 12
+ Ubuntu 20.04 STIG Versi 1 Rilis 10

**STIG-Build-Linux-Medium versi 2023.4.x**
+ RHEL 7 STIG Versi 3 Rilis 13
+ RHEL 8 STIG Versi 1 Rilis 12
+ Ubuntu 18.04 STIG Versi 2 Rilis 12
+ Ubuntu 20.04 STIG Versi 1 Rilis 10

**STIG-Build-Linux-High versi 2023.4.x**
+ RHEL 7 STIG Versi 3 Rilis 13
+ RHEL 8 STIG Versi 1 Rilis 12
+ Ubuntu 18.04 STIG Versi 2 Rilis 12
+ Ubuntu 20.04 STIG Versi 1 Rilis 10

### Perubahan Q3 2023 - 10/04/2023:
<a name="2023-q3-linux"></a>

Versi STIG yang diperbarui dan menerapkan STIGS untuk rilis kuartal ketiga 2023 sebagai berikut:

**STIG-Build-Linux-Low versi 2023.3.x**
+ RHEL 7 STIG Versi 3 Rilis 12
+ RHEL 8 STIG Versi 1 Rilis 11
+ Ubuntu 18.04 STIG Versi 2 Rilis 11
+ Ubuntu 20.04 STIG Versi 1 Rilis 9

**STIG-Build-Linux-Medium versi 2023.3.x**
+ RHEL 7 STIG Versi 3 Rilis 12
+ RHEL 8 STIG Versi 1 Rilis 11
+ Ubuntu 18.04 STIG Versi 2 Rilis 11
+ Ubuntu 20.04 STIG Versi 1 Rilis 9

**STIG-Build-Linux-High versi 2023.3.x**
+ RHEL 7 STIG Versi 3 Rilis 12
+ RHEL 8 STIG Versi 1 Rilis 11
+ Ubuntu 18.04 STIG Versi 2 Rilis 11
+ Ubuntu 20.04 STIG Versi 1 Rilis 9

### Perubahan Q2 2023 - 05/03/2023:
<a name="2023-q2-linux"></a>

Versi STIG yang diperbarui dan menerapkan STIGS untuk rilis kuartal kedua 2023 sebagai berikut:

**STIG-Build-Linux-Low versi 2023.2.x**
+ RHEL 7 STIG Versi 3 Rilis 11
+ RHEL 8 STIG Versi 1 Rilis 10
+ Ubuntu 18.04 STIG Versi 2 Rilis 11
+ Ubuntu 20.04 STIG Versi 1 Rilis 8

**STIG-Build-Linux-Medium versi 2023.2.x**
+ RHEL 7 STIG Versi 3 Rilis 11
+ RHEL 8 STIG Versi 1 Rilis 10
+ Ubuntu 18.04 STIG Versi 2 Rilis 11
+ Ubuntu 20.04 STIG Versi 1 Rilis 8

**STIG-Build-Linux-High versi 2023.2.x**
+ RHEL 7 STIG Versi 3 Rilis 11
+ RHEL 8 STIG Versi 1 Rilis 10
+ Ubuntu 18.04 STIG Versi 2 Rilis 11
+ Ubuntu 20.04 STIG Versi 1 Rilis 8

### Perubahan Q1 2023 - 27/03/2023:
<a name="2023-q1-linux"></a>

Versi STIG yang diperbarui dan menerapkan STIGS untuk rilis kuartal pertama 2023 sebagai berikut:

**STIG-Build-Linux-Low versi 2023.1.x**
+ RHEL 7 STIG Versi 3 Rilis 10
+ RHEL 8 STIG Versi 1 Rilis 9
+ Ubuntu 18.04 STIG Versi 2 Rilis 10
+ Ubuntu 20.04 STIG Versi 1 Rilis 7

**STIG-Build-Linux-Medium versi 2023.1.x**
+ RHEL 7 STIG Versi 3 Rilis 10
+ RHEL 8 STIG Versi 1 Rilis 9
+ Ubuntu 18.04 STIG Versi 2 Rilis 10
+ Ubuntu 20.04 STIG Versi 1 Rilis 7

**STIG-Build-Linux-High versi 2023.1.x**
+ RHEL 7 STIG Versi 3 Rilis 10
+ RHEL 8 STIG Versi 1 Rilis 9
+ Ubuntu 18.04 STIG Versi 2 Rilis 10
+ Ubuntu 20.04 STIG Versi 1 Rilis 7

### 2022 Perubahan Q4 - 02/01/2023:
<a name="2022-q4-linux"></a>

Versi STIG yang diperbarui dan menerapkan STIGS untuk rilis kuartal keempat 2022 sebagai berikut:

**STIG-Build-Linux-Low versi 2022.4.x**
+ RHEL 7 STIG Versi 3 Rilis 9
+ RHEL 8 STIG Versi 1 Rilis 8
+ Ubuntu 18.04 STIG Versi 2 Rilis 9
+ Ubuntu 20.04 STIG Versi 1 Rilis 6

**STIG-Build-Linux-Medium versi 2022.4.x**
+ RHEL 7 STIG Versi 3 Rilis 9
+ RHEL 8 STIG Versi 1 Rilis 8
+ Ubuntu 18.04 STIG Versi 2 Rilis 9
+ Ubuntu 20.04 STIG Versi 1 Rilis 6

**STIG-Build-Linux-High versi 2022.4.x**
+ RHEL 7 STIG Versi 3 Rilis 9
+ RHEL 8 STIG Versi 1 Rilis 8
+ Ubuntu 18.04 STIG Versi 2 Rilis 9
+ Ubuntu 20.04 STIG Versi 1 Rilis 6

### 2022 Perubahan Q3 - 30/09/2022 (tidak ada perubahan):
<a name="2022-q3-linux"></a>

Tidak ada perubahan untuk komponen Linux STIGS untuk rilis kuartal ketiga 2022.

### 2022 Perubahan Q2 - 08/02/2022:
<a name="2022-q2-linux"></a>

Memperkenalkan dukungan Ubuntu, versi STIG yang diperbarui, dan menerapkan STIGS untuk rilis kuartal kedua 2022 sebagai berikut:

**STIG-Build-Linux-Low versi 2022.2.x**
+ RHEL 7 STIG Versi 3 Rilis 7
+ RHEL 8 STIG Versi 1 Rilis 6
+ Ubuntu 18.04 STIG Versi 2 Rilis 6 (baru)
+ Ubuntu 20.04 STIG Versi 1 Rilis 4 (baru)

**STIG-Build-Linux-Medium versi 2022.2.x**
+ RHEL 7 STIG Versi 3 Rilis 7
+ RHEL 8 STIG Versi 1 Rilis 6
+ Ubuntu 18.04 STIG Versi 2 Rilis 6 (baru)
+ Ubuntu 20.04 STIG Versi 1 Rilis 4 (baru)

**STIG-Build-Linux-High versi 2022.2.x**
+ RHEL 7 STIG Versi 3 Rilis 7
+ RHEL 8 STIG Versi 1 Rilis 6
+ Ubuntu 18.04 STIG Versi 2 Rilis 6 (baru)
+ Ubuntu 20.04 STIG Versi 1 Rilis 4 (baru)

### 2022 Perubahan Q1 - 26/04/2022:
<a name="2022-q1-linux"></a>

Difaktorkan ulang untuk menyertakan dukungan yang lebih baik untuk wadah. Menggabungkan AL2 skrip sebelumnya dengan RHEL 7. Versi STIG yang diperbarui dan menerapkan STIGS untuk rilis kuartal pertama 2022 sebagai berikut:

**STIG-Build-Linux-Low versi 3.6.x**
+ RHEL 7 STIG Versi 3 Rilis 6
+ RHEL 8 STIG Versi 1 Rilis 5

**STIG-Build-Linux-Medium versi 3.6.x**
+ RHEL 7 STIG Versi 3 Rilis 6
+ RHEL 8 STIG Versi 1 Rilis 5

**STIG-Build-Linux-High versi 3.6.x**
+ RHEL 7 STIG Versi 3 Rilis 6
+ RHEL 8 STIG Versi 1 Rilis 5

### 2021 Perubahan Q4 - 12/20/2021:
<a name="2021-q4-linux"></a>

Versi STIG yang diperbarui, dan menerapkan STIGS untuk rilis kuartal keempat 2021 sebagai berikut:

**STIG-Build-Linux-Low versi 3.5.x**
+ RHEL 7 STIG Versi 3 Rilis 5
+ RHEL 8 STIG Versi 1 Rilis 4

**STIG-Build-Linux-Medium versi 3.5.x**
+ RHEL 7 STIG Versi 3 Rilis 5
+ RHEL 8 STIG Versi 1 Rilis 4

**STIG-Build-Linux-High versi 3.5.x**
+ RHEL 7 STIG Versi 3 Rilis 5
+ RHEL 8 STIG Versi 1 Rilis 4

### 2021 Perubahan Q3 - 09/30/2021:
<a name="2021-q3-linux"></a>

Versi STIG yang diperbarui, dan menerapkan STIGS untuk rilis kuartal ketiga 2021 sebagai berikut:

**STIG-Build-Linux-Low versi 3.4.x**
+ RHEL 7 STIG Versi 3 Rilis 4
+ RHEL 8 STIG Versi 1 Rilis 3

**STIG-Build-Linux-Medium versi 3.4.x**
+ RHEL 7 STIG Versi 3 Rilis 4
+ RHEL 8 STIG Versi 1 Rilis 3

**STIG-Build-Linux-High versi 3.4.x**
+ RHEL 7 STIG Versi 3 Rilis 4
+ RHEL 8 STIG Versi 1 Rilis 3

## Komponen validator kepatuhan SCAP
<a name="scap-compliance"></a>

Security Content Automation Protocol (SCAP) adalah seperangkat standar yang dapat digunakan oleh para profesional TI untuk mengidentifikasi kerentanan keamanan aplikasi untuk kepatuhan. SCAP Compliance Checker (SCC) adalah alat pemindaian yang divalidasi SCAP-yang dirilis oleh Naval Information Warfare Center (NIWC) Atlantic. Untuk informasi selengkapnya, lihat [Security Content Automation Protocol (SCAP) Compliance Checker (SCC)](https://www.niwcatlantic.navy.mil/Technology/SCAP/) di situs web *NIWC* Atlantic.

`scap-compliance-checker-linux`Komponen AWSTOE `scap-compliance-checker-windows` dan mengunduh dan menginstal pemindai SCC pada instance pembuatan dan pengujian pipa. Saat pemindai berjalan, ia melakukan pemindaian konfigurasi yang diautentikasi menggunakan Benchmark SCAP DISA, dan memberikan laporan yang menyertakan informasi berikut. AWSTOE juga menulis informasi ke log aplikasi Anda.
+ Pengaturan STIG yang diterapkan pada instance.
+ Skor kepatuhan keseluruhan untuk contoh tersebut.

Kami menyarankan Anda menjalankan validasi SCAP sebagai langkah terakhir dalam proses pembuatan, untuk memastikan bahwa Anda melaporkan hasil validasi kepatuhan yang akurat.

**catatan**  
Anda dapat meninjau laporan dengan salah satu [STIG Viewing Tools](https://public.cyber.mil/stigs/srg-stig-tools/). Alat-alat ini tersedia secara online melalui DoD Cyber Exchange.

Bagian berikut menjelaskan tolok ukur yang termasuk dalam komponen validasi SCAP.

### scap-compliance-checker-windows versi 2024.03.0
<a name="scap-component-windows"></a>

`scap-compliance-checker-windows`Komponen berjalan pada instance EC2 yang dibuat Image Builder untuk membangun dan menguji gambar. AWSTOE mencatat laporan dan skor yang dihasilkan aplikasi SCC.

Komponen melakukan langkah-langkah alur kerja berikut: 

1. Mengunduh dan menginstal aplikasi SCC.

1. Mengimpor tolok ukur kepatuhan.

1. Menjalankan validasi menggunakan aplikasi SCC.

1. Menyimpan laporan kepatuhan dan skor secara lokal di desktop instance build.

1. Mencatat skor kepatuhan dari laporan lokal ke file log AWSTOE aplikasi.

**catatan**  
AWSTOE saat ini mendukung validasi kepatuhan SCAP untuk Windows Server 2012 R2 MS, 2016, 2019, dan 2022.

Komponen pemeriksa kepatuhan SCAP untuk Windows mencakup tolok ukur berikut:

**Versi SCC: 5.10**  
Tolok Ukur Q4 2023:
+ u\$1ms\$1defender\$1antivirus\$1v2r5\$1stig\$1scap\$11-2\$1patokan
+ U\$1MS\$1 \$1Framework\$14-0\$1v2r2\$1stig\$1scap\$11-2\$1benchmark DotNet
+ U\$1MS\$1 \$1v2r6\$1STIG\$1SCAP\$11-2\$1Benchmark IE11
+ u\$1ms\$1windows\$12012\$1dan\$12012\$1r2\$1dc\$1v3r5\$1stig\$1scap\$11-2\$1patokan
+ u\$1ms\$1windows\$12012\$1dan\$12012\$1r2\$1ms\$1v3r5\$1stig\$1scap\$11-2\$1patokan
+ u\$1ms\$1windows\$1defender\$1firewall\$1v2r3\$1stig\$1scap\$11-2\$1patokan
+ u\$1ms\$1windows\$1server\$12016\$1v2r7\$1stig\$1scap\$11-2\$1patokan
+ u\$1ms\$1windows\$1server\$12019\$1v3r2\$1stig\$1scap\$11-2\$1patokan
+ u\$1ms\$1windows\$1server\$12022\$1v2r2\$1stig\$1scap\$11-2\$1patokan
+ u\$1can\$1ubuntu\$120-04\$1lts\$1v1r10\$1stig\$1scap\$11-2\$1patokan
+ u\$1rhel\$17\$1v3r15\$1stig\$1scap\$11-3\$1patokan
+ u\$1rhel\$18\$1v1r13\$1stig\$1scap\$11-3\$1patokan
+ u\$1rhel\$19\$1v2r1\$1stig\$1scap\$11-3\$1patokan

### scap-compliance-checker-linux versi 2021.04.0
<a name="scap-component-linux"></a>

`scap-compliance-checker-linux`Komponen berjalan pada instance EC2 yang dibuat Image Builder untuk membangun dan menguji gambar. AWSTOE mencatat laporan dan skor yang dihasilkan aplikasi SCC.

Komponen melakukan langkah-langkah alur kerja berikut:

1. Mengunduh dan menginstal aplikasi SCC.

1. Mengimpor tolok ukur kepatuhan.

1. Menjalankan validasi menggunakan aplikasi SCC.

1. Menyimpan laporan kepatuhan dan skor secara lokal, di lokasi berikut pada instance build:`/opt/scc/SCCResults`.

1. Mencatat skor kepatuhan dari laporan lokal ke file log AWSTOE aplikasi.

**catatan**  
AWSTOE saat ini mendukung validasi kepatuhan SCAP untuk RHEL 7/8 dan Ubuntu 18.04/20.04. Aplikasi SCC saat ini mendukung arsitektur x86 untuk validasi.

Komponen pemeriksa kepatuhan SCAP untuk Linux mencakup tolok ukur berikut:

**Versi SCC: 5.10**  
Tolok Ukur Q4 2023:
+ u\$1can\$1ubuntu\$120-04\$1lts\$1v1r10\$1stig\$1scap\$11-2\$1patokan
+ u\$1rhel\$17\$1v3r15\$1stig\$1scap\$11-3\$1patokan
+ u\$1rhel\$18\$1v1r13\$1stig\$1scap\$11-3\$1patokan
+ u\$1rhel\$19\$1v2r1\$1stig\$1scap\$11-3\$1patokan
+ u\$1ms\$1defender\$1antivirus\$1v2r5\$1stig\$1scap\$11-2\$1patokan
+ U\$1MS\$1 \$1Framework\$14-0\$1v2r2\$1stig\$1scap\$11-2\$1benchmark DotNet
+ U\$1MS\$1 \$1v2r6\$1STIG\$1SCAP\$11-2\$1Benchmark IE11
+ u\$1ms\$1windows\$12012\$1dan\$12012\$1r2\$1dc\$1v3r5\$1stig\$1scap\$11-2\$1patokan
+ u\$1ms\$1windows\$12012\$1dan\$12012\$1r2\$1ms\$1v3r5\$1stig\$1scap\$11-2\$1patokan
+ u\$1ms\$1windows\$1defender\$1firewall\$1v2r3\$1stig\$1scap\$11-2\$1patokan
+ u\$1ms\$1windows\$1server\$12016\$1v2r7\$1stig\$1scap\$11-2\$1patokan
+ u\$1ms\$1windows\$1server\$12019\$1v3r2\$1stig\$1scap\$11-2\$1patokan
+ u\$1ms\$1windows\$1server\$12022\$1v2r2\$1stig\$1scap\$11-2\$1patokan

### riwayat versi SCAP
<a name="ib-scap-version-hist"></a>

Tabel berikut menjelaskan perubahan penting pada lingkungan dan pengaturan SCAP yang dijelaskan dalam dokumen ini.


| Ubah | Deskripsi | Date | 
| --- | --- | --- | 
|  Pembaruan SCAP Q1 2025  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/ib-stig.html)  | April 11, 2025 | 
|  Pembaruan SCAP Q4 2023  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/ib-stig.html)  | Desember 20, 2021 | 
|  Pembaruan SCAP Q3 2023  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/ib-stig.html)  | 13 November 2023 | 
|  Ditambahkan komponen SCAP  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/ib-stig.html)  | Desember 20, 2021 | 

# Mengembangkan komponen kustom untuk image Image Builder
<a name="create-custom-components"></a>

Anda dapat membuat komponen Anda sendiri untuk menyesuaikan gambar Image Builder Anda sesuai dengan spesifikasi Anda yang tepat. Gunakan langkah-langkah berikut untuk mengembangkan komponen kustom untuk gambar Image Builder atau resep kontainer Anda.

1. Jika Anda ingin mengembangkan dokumen komponen Anda dan memvalidasinya secara lokal, Anda dapat menginstal aplikasi AWS Task Orchestrator and Executor (AWSTOE) dan mengaturnya di mesin lokal Anda. Untuk informasi selengkapnya, lihat [Pengaturan manual untuk mengembangkan komponen khusus dengan AWSTOE](toe-get-started.md).

1. Buat dokumen komponen yang menggunakan kerangka dokumen AWSTOE komponen. Untuk informasi selengkapnya tentang kerangka dokumen, lihat[Gunakan kerangka dokumen AWSTOE komponen untuk komponen kustom](toe-use-documents.md).

1. Tentukan dokumen komponen Anda saat Anda membuat komponen kustom. Untuk informasi selengkapnya, lihat [Buat komponen kustom dengan Image Builder](create-component.md).

**Topics**
+ [Membuat dokumen komponen YAMAL untuk komponen kustom di Image Builder](create-component-yaml.md)
+ [Buat komponen kustom dengan Image Builder](create-component.md)

# Membuat dokumen komponen YAMAL untuk komponen kustom di Image Builder
<a name="create-component-yaml"></a>

Untuk membangun komponen, Anda harus menyediakan dokumen komponen aplikasi YAMAL atau JSON. Dokumen berisi kode yang berjalan selama fase dan langkah-langkah yang Anda tentukan untuk memberikan penyesuaian untuk gambar Anda.

Beberapa contoh di bagian ini membuat komponen build yang memanggil modul `UpdateOS` tindakan dalam aplikasi manajemen AWSTOE komponen. Modul memperbarui sistem operasi. Untuk informasi selengkapnya tentang modul `UpdateOS` tindakan, lihat[UpdateOS](toe-action-modules.md#action-modules-updateos).

Contoh sistem operasi macOS menggunakan modul `ExecuteBash` tindakan untuk menginstal dan memverifikasi utilitas. `wget` Modul `UpdateOS` tindakan tidak mendukung macOS. Untuk informasi selengkapnya tentang modul `ExecuteBash` tindakan, lihat[ExecuteBash](toe-action-modules.md#action-modules-executebash). Untuk informasi selengkapnya tentang fase, langkah, dan sintaks untuk dokumen komponen AWSTOE aplikasi, lihat [Menggunakan dokumen di AWSTOE](https://docs.aws.amazon.com/imagebuilder/latest/userguide/toe-use-documents.html).

**catatan**  
Image Builder menentukan jenis komponen dari fase yang didefinisikan dalam dokumen komponen sebagai berikut:  
**Build** — Ini adalah tipe komponen default. Apa pun yang tidak diklasifikasikan sebagai komponen uji, adalah komponen build. Jenis komponen ini berjalan selama *tahap Build* image. Jika komponen build ini memiliki `test` fase yang ditentukan, fase tersebut berjalan selama *tahap Test*.
**Test** — Untuk memenuhi syarat sebagai komponen pengujian, dokumen komponen harus menyertakan hanya satu fase, bernama`test`. Untuk pengujian yang terkait dengan konfigurasi komponen build, sebaiknya Anda tidak menggunakan komponen pengujian mandiri. Sebaliknya, gunakan `test` fase dalam komponen build terkait.
Untuk informasi selengkapnya tentang cara Image Builder menggunakan tahapan dan fase untuk mengelola alur kerja komponen dalam proses pembuatannya, lihat[Gunakan komponen untuk menyesuaikan image Image Builder](manage-components.md).

Untuk membuat dokumen komponen aplikasi YAMAL untuk contoh aplikasi, ikuti langkah-langkah pada tab yang cocok dengan sistem operasi gambar Anda. 

------
#### [ Linux ]

**Buat file komponen YAMAL**  
Gunakan alat pengeditan file untuk membuat dokumen komponen Anda. Contoh dokumentasi menggunakan file bernama`update-linux-os.yaml`, dengan konten berikut:

```
# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this
# software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify,
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
name: update-linux-os
description: Updates Linux with the latest security updates.
schemaVersion: 1
phases:
  - name: build
    steps:
    - name: UpdateOS
      action: UpdateOS
# Document End
```

**Tip**  
Gunakan alat seperti [Validator YAMAL online](https://jsonformatter.org/yaml-validator) ini, atau ekstensi lint YAMAL di lingkungan kode Anda untuk memverifikasi bahwa YAMAL Anda terbentuk dengan baik.

------
#### [ Windows ]

**Buat file komponen YAMAL**  
Gunakan alat pengeditan file untuk membuat dokumen komponen Anda. Contoh dokumentasi menggunakan file bernama`update-windows-os.yaml`, dengan konten berikut:

```
# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this
# software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify,
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
name: update-windows-os
description: Updates Windows with the latest security updates.
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: UpdateOS
        action: UpdateOS
# Document End
```

**Tip**  
Gunakan alat seperti [Validator YAMAL online](https://jsonformatter.org/yaml-validator) ini, atau ekstensi lint YAMAL di lingkungan kode Anda untuk memverifikasi bahwa YAMAL Anda terbentuk dengan baik.

------
#### [ macOS ]

**Buat file komponen YAMAL**  
Gunakan alat pengeditan file untuk membuat dokumen komponen Anda. Contoh dokumentasi menggunakan file bernama`wget-macos.yaml`, dengan konten berikut:

```
name: WgetInstallDocument
description: This is wget installation document.
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: WgetBuildStep
        action: ExecuteBash
        inputs:
          commands:
            - |
              PATH=/usr/local/bin:$PATH
              sudo -u ec2-user brew install wget


  - name: validate
    steps:
      - name: WgetValidateStep
        action: ExecuteBash
        inputs:
          commands:
            - |
              function error_exit {
                echo $1
                echo "{\"failureMessage\":\"$2\"}"
                exit 1
              }

              type wget
              if [ $? -ne 0 ]; then
                error_exit "$stderr" "Wget installation failed!"
              fi

  - name: test
    steps:
      - name: WgetTestStep
        action: ExecuteBash
        inputs:
          commands:
            - wget -h
```

**Tip**  
Gunakan alat seperti [Validator YAMAL online](https://jsonformatter.org/yaml-validator) ini, atau ekstensi lint YAMAL di lingkungan kode Anda untuk memverifikasi bahwa YAMAL Anda terbentuk dengan baik.

------

# Buat komponen kustom dengan Image Builder
<a name="create-component"></a>

Setelah menyelesaikan dokumen komponen, Anda dapat menggunakannya untuk membuat komponen kustom yang dapat digunakan resep Image Builder Anda. Anda dapat membuat komponen kustom dari konsol Image Builder, dari API atau SDKs, atau dari baris perintah. Untuk informasi selengkapnya tentang cara membuat komponen kustom dengan parameter input dan menggunakannya dalam resep Anda, lihat[Tutorial: Buat komponen kustom dengan parameter input](tutorial-component-parameters.md).

Bagian berikut menunjukkan cara membuat komponen dari konsol atau dari AWS CLI.

**Topics**
+ [Buat komponen khusus dari konsol](#create-component-ib-console)
+ [Buat komponen khusus dari AWS CLI](#create-component-ib-cli)
+ [Impor skrip untuk membuat komponen dari AWS CLI](#import-component-cli)
+ [Manajemen versi build otomatis](#auto-build-version-management)
+ [Menggunakan referensi versi](#using-version-references)

## Buat komponen khusus dari konsol
<a name="create-component-ib-console"></a>

Untuk membuat komponen AWSTOE aplikasi dari konsol Image Builder, ikuti langkah-langkah berikut:

1. Buka konsol [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/)EC2 Image Builder di.

1. Pilih **Komponen** dari panel navigasi. Kemudian pilih **Buat komponen**.

1. Pada halaman **Create component**, di bawah **Component details**, masukkan yang berikut ini:

   1. **Gambar Sistem operasi (OS)**. Tentukan sistem operasi yang kompatibel dengan komponen tersebut.

   1. **Kategori komponen**. Dari dropdown, pilih jenis komponen build atau test yang Anda buat.

   1. **Nama komponen**. Masukkan nama untuk komponen.

   1. **Versi komponen**. Masukkan nomor versi komponen.

   1. **Deskripsi**. Berikan deskripsi opsional untuk membantu Anda mengidentifikasi komponen.

   1. **Ubah deskripsi**. Berikan deskripsi opsional untuk membantu Anda memahami perubahan yang dibuat pada versi komponen ini.

1. Di bagian **Dokumen definisi**, opsi defaultnya adalah **Tentukan konten dokumen**. Dokumen komponen mendefinisikan tindakan yang dilakukan Image Builder pada instance build dan pengujian untuk membuat image Anda.

   Di kotak **Konten**, masukkan konten dokumen komponen YAMB Anda. Untuk memulai dengan contoh *Hello World* untuk Linux, pilih opsi **Use example**. Untuk mempelajari lebih lanjut tentang cara membuat dokumen komponen YAMB, atau menyalin dan menempelkan contoh *UpdateOS* dari halaman tersebut, lihat. [Membuat dokumen komponen YAMAL untuk komponen kustom di Image Builder](create-component-yaml.md)

1. Setelah Anda memasukkan detail komponen, pilih **Buat komponen**.
**catatan**  
Untuk melihat komponen baru Anda saat membuat atau memperbarui resep, terapkan filter **Owned by me** ke daftar komponen build atau test. Filter terletak di bagian atas daftar komponen, di sebelah kotak pencarian.

1. Untuk menghapus komponen, dari halaman **Komponen**, pilih kotak centang di sebelah komponen yang ingin Anda hapus. Dari dropdown **Tindakan**, pilih **Hapus** komponen.

**Perbarui komponen**  
Untuk membuat versi komponen baru, ikuti langkah-langkah berikut:

1. Tergantung di mana Anda memulai:
   + Dari halaman daftar **Komponen** - Pilih kotak centang di sebelah nama komponen, lalu pilih **Buat versi baru** dari menu **Tindakan**.
   + Dari halaman detail komponen - Pilih tombol **Buat versi baru** di sudut kanan atas judul.

1. Informasi komponen sudah diisi dengan nilai saat ini saat halaman **Create Component** ditampilkan. Ikuti langkah-langkah membuat komponen untuk memperbarui komponen. Ini memastikan bahwa Anda memasukkan versi semantik unik dalam versi **Komponen**. Untuk mempelajari lebih lanjut tentang pembuatan versi semantik untuk sumber daya Image Builder, lihat. [Pembuatan versi semantik di Image Builder](ibhow-semantic-versioning.md)

## Buat komponen khusus dari AWS CLI
<a name="create-component-ib-cli"></a>

Di bagian ini, Anda akan belajar cara mengatur dan menggunakan perintah Image Builder di AWS CLI untuk membuat komponen AWSTOE aplikasi, sebagai berikut.
+ Unggah dokumen komponen YAMB Anda ke bucket S3 yang dapat Anda referensikan dari baris perintah.
+ Buat komponen AWSTOE aplikasi dengan **create-component** perintah.
+ Daftar versi komponen dengan **list-components** perintah dan filter nama untuk melihat versi apa yang sudah ada. Anda dapat menggunakan output untuk menentukan versi berikutnya untuk pembaruan.

Untuk membuat komponen AWSTOE aplikasi dari dokumen YAMM masukan, ikuti langkah-langkah yang sesuai dengan platform sistem operasi gambar Anda.

------
#### [ Linux ]

**Simpan dokumen komponen aplikasi Anda di Amazon S3**

Anda dapat menggunakan bucket S3 sebagai repositori untuk dokumen sumber komponen AWSTOE aplikasi Anda. Untuk menyimpan dokumen komponen Anda, ikuti langkah-langkah berikut:
+ 

**Unggah dokumen ke Amazon S3**

  *Jika dokumen Anda lebih kecil dari 64 KB, Anda dapat melewati langkah ini.* Dokumen yang berukuran 64 KB atau lebih besar harus disimpan di Amazon S3.

  ```
  aws s3 cp update-linux-os.yaml s3://amzn-s3-demo-destination-bucket/my-path/update-linux-os.yaml
  ```

**Buat komponen dari dokumen YAMB**

Untuk merampingkan **create-component** perintah yang Anda gunakan di AWS CLI, buat file JSON yang berisi semua parameter komponen yang ingin Anda lewatkan ke perintah. Sertakan lokasi `update-linux-os.yaml` dokumen yang Anda buat sebelumnya. Pasangan `uri` kunci-nilai berisi referensi file.
**catatan**  
Konvensi penamaan untuk nilai data dalam file JSON mengikuti pola yang ditentukan untuk parameter permintaan operasi Image Builder API. Untuk meninjau parameter permintaan perintah API, lihat [CreateComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html)perintah di Referensi *API EC2 Image Builder*.  
Untuk memberikan nilai data sebagai parameter baris perintah, lihat nama parameter yang ditentukan dalam *Referensi AWS CLI Perintah*.

1. 

**Buat file JSON input CLI**

   Gunakan alat pengeditan file untuk membuat file bernama`create-update-linux-os-component.json`. Sertakan konten berikut:

   ```
   {
   	"name": "update-linux-os",
   	"semanticVersion": "1.1.2",
   	"description": "An example component that updates the Linux operating system",
   	"changeDescription": "Initial version.",
   	"platform": "Linux",
   	"uri": "s3://amzn-s3-demo-destination-bucket/my-path/update-linux-os.yaml",
   	"kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/98765432-b123-456b-7f89-0123456f789c",
   	"tags": {
   		"MyTagKey-purpose": "security-updates"
   	}
   }
   ```

1. 

**Buat komponen**

   Gunakan perintah berikut untuk membuat komponen, merujuk nama file untuk file JSON yang Anda buat pada langkah sebelumnya:

   ```
   aws imagebuilder create-component --cli-input-json file://create-update-linux-os-component.json
   ```
**catatan**  
Anda harus menyertakan notasi `file://` pada awal jalur file JSON.
Jalur untuk file JSON harus mengikuti konvensi yang sesuai untuk sistem operasi dasar tempat Anda menjalankan perintah. Misalnya, Windows menggunakan garis miring terbalik (\$1) untuk merujuk ke jalur direktori, sedangkan Linux dan macOS menggunakan garis miring maju (/).

------
#### [ Windows ]

**Simpan dokumen komponen aplikasi Anda di Amazon S3**

Anda dapat menggunakan bucket S3 sebagai repositori untuk dokumen sumber komponen AWSTOE aplikasi Anda. Untuk menyimpan dokumen komponen Anda, ikuti langkah-langkah berikut:
+ 

**Unggah dokumen ke Amazon S3**

  *Jika dokumen Anda lebih kecil dari 64 KB, Anda dapat melewati langkah ini.* Dokumen yang berukuran 64 KB atau lebih besar harus disimpan di Amazon S3.

  ```
  aws s3 cp update-windows-os.yaml s3://amzn-s3-demo-destination-bucket/my-path/update-windows-os.yaml
  ```

**Buat komponen dari dokumen YAMB**

Untuk merampingkan **create-component** perintah yang Anda gunakan di AWS CLI, buat file JSON yang berisi semua parameter komponen yang ingin Anda lewatkan ke perintah. Sertakan lokasi `update-windows-os.yaml` dokumen yang Anda buat sebelumnya. Pasangan `uri` kunci-nilai berisi referensi file.
**catatan**  
Konvensi penamaan untuk nilai data dalam file JSON mengikuti pola yang ditentukan untuk parameter permintaan operasi Image Builder API. Untuk meninjau parameter permintaan perintah API, lihat [CreateComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html)perintah di Referensi *API EC2 Image Builder*.  
Untuk memberikan nilai data sebagai parameter baris perintah, lihat nama parameter yang ditentukan dalam *Referensi AWS CLI Perintah*..

1. 

**Buat file JSON input CLI**

   Gunakan alat pengeditan file untuk membuat file bernama`create-update-windows-os-component.json`. Sertakan konten berikut:

   ```
   {
   	"name": "update-windows-os",
   	"semanticVersion": "1.1.2",
   	"description": "An example component that updates the Windows operating system.",
   	"changeDescription": "Initial version.",
   	"platform": "Windows",
   	"uri": "s3://amzn-s3-demo-destination-bucket/my-path/update-windows-os.yaml",
   	"kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/98765432-b123-456b-7f89-0123456f789c",
   	"tags": {
   		"MyTagKey-purpose": "security-updates"
   	}
   }
   ```
**catatan**  
Anda harus menyertakan notasi `file://` pada awal jalur file JSON.
Jalur untuk file JSON harus mengikuti konvensi yang sesuai untuk sistem operasi dasar tempat Anda menjalankan perintah. Misalnya, Windows menggunakan garis miring terbalik (\$1) untuk merujuk ke jalur direktori, sedangkan Linux dan macOS menggunakan garis miring maju (/).

1. 

**Buat komponen**

   Gunakan perintah berikut untuk membuat komponen, merujuk nama file untuk file JSON yang Anda buat pada langkah sebelumnya:

   ```
   aws imagebuilder create-component --cli-input-json file://create-update-windows-os-component.json
   ```
**catatan**  
Anda harus menyertakan notasi `file://` pada awal jalur file JSON.
Jalur untuk file JSON harus mengikuti konvensi yang sesuai untuk sistem operasi dasar tempat Anda menjalankan perintah. Misalnya, Windows menggunakan garis miring terbalik (\$1) untuk merujuk ke jalur direktori, sedangkan Linux dan macOS menggunakan garis miring maju (/).

------
#### [ macOS ]

**Simpan dokumen komponen aplikasi Anda di Amazon S3**

Anda dapat menggunakan bucket S3 sebagai repositori untuk dokumen sumber komponen AWSTOE aplikasi Anda. Untuk menyimpan dokumen komponen Anda, ikuti langkah-langkah berikut:
+ 

**Unggah dokumen ke Amazon S3**

  *Jika dokumen Anda lebih kecil dari 64 KB, Anda dapat melewati langkah ini.* Dokumen yang berukuran 64 KB atau lebih besar harus disimpan di Amazon S3.

  ```
  aws s3 cp wget-macos.yaml s3://amzn-s3-demo-destination-bucket/my-path/wget-macos.yaml
  ```

**Buat komponen dari dokumen YAMB**

Untuk merampingkan **create-component** perintah yang Anda gunakan di AWS CLI, buat file JSON yang berisi semua parameter komponen yang ingin Anda lewatkan ke perintah. Sertakan lokasi `wget-macos.yaml` dokumen yang Anda buat sebelumnya. Pasangan `uri` kunci-nilai berisi referensi file.
**catatan**  
Konvensi penamaan untuk nilai data dalam file JSON mengikuti pola yang ditentukan untuk parameter permintaan operasi Image Builder API. Untuk meninjau parameter permintaan perintah API, lihat [CreateComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html)perintah di Referensi *API EC2 Image Builder*.  
Untuk memberikan nilai data sebagai parameter baris perintah, lihat nama parameter yang ditentukan dalam *Referensi AWS CLI Perintah*.

1. 

**Buat file JSON input CLI**

   Gunakan alat pengeditan file untuk membuat file bernama`install-wget-macos-component.json`. Sertakan konten berikut:

   ```
   {
   	"name": "install install-wget-macos-component",
   	"semanticVersion": "1.1.2",
   	"description": "An example component that installs and verifies the wget utility on macOS.",
   	"changeDescription": "Initial version.",
   	"platform": "macOS",
   	"uri": "s3://amzn-s3-demo-destination-bucket/my-path/wget-macos.yaml",
   	"kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/98765432-b123-456b-7f89-0123456f789c",
   	"tags": {
   		"MyTagKey-purpose": "install-software"
   	}
   }
   ```

1. 

**Buat komponen**

   Gunakan perintah berikut untuk membuat komponen, merujuk nama file untuk file JSON yang Anda buat pada langkah sebelumnya:

   ```
   aws imagebuilder create-component --cli-input-json file://install-wget-macos-component.json
   ```
**catatan**  
Anda harus menyertakan notasi `file://` pada awal jalur file JSON.
Jalur untuk file JSON harus mengikuti konvensi yang sesuai untuk sistem operasi dasar tempat Anda menjalankan perintah. Misalnya, Windows menggunakan garis miring terbalik (\$1) untuk merujuk ke jalur direktori, sedangkan Linux dan macOS menggunakan garis miring maju (/).

------

### AWSTOE versi komponen untuk pembaruan dari AWS CLI
<a name="component-update-cli"></a>

AWSTOE nama dan versi komponen disematkan di Amazon Resource Name (ARN) komponen, setelah awalan komponen. Setiap versi baru komponen memiliki ARN uniknya sendiri. Langkah-langkah untuk membuat versi baru persis sama dengan langkah-langkah untuk membuat komponen baru, selama versi semantik unik untuk nama komponen itu. Untuk mempelajari lebih lanjut tentang pembuatan versi semantik untuk sumber daya Image Builder, lihat. [Pembuatan versi semantik di Image Builder](ibhow-semantic-versioning.md)

Untuk memastikan bahwa Anda menetapkan versi logis berikutnya, pertama-tama dapatkan daftar versi yang ada untuk komponen yang ingin Anda ubah. Gunakan **list-components** perintah dengan AWS CLI, dan filter pada nama.

Dalam contoh ini, Anda memfilter nama komponen yang Anda buat di contoh Linux sebelumnya. Untuk membuat daftar komponen yang Anda buat, gunakan nilai `name` parameter dari file JSON yang Anda gunakan dalam **create-component** perintah.

```
aws imagebuilder list-components --filters name="name",values="update-linux-os"	
{
    "requestId": "123a4567-b890-123c-45d6-ef789ab0cd1e",
    "componentVersionList": [
        {
            "arn": "arn:aws:imagebuilder:us-west-2:1234560087789012:component/update-linux-os/1.0.0",
            "name": "update-linux-os",
            "version": "1.0.0",
            "platform": "Linux",
            "type": "BUILD",
            "owner": "123456789012",
            "dateCreated": "2020-09-24T16:58:24.444Z"
        },
        {
            "arn": "arn:aws:imagebuilder:us-west-2:1234560087789012:component/update-linux-os/1.0.1",
            "name": "update-linux-os",
            "version": "1.0.1",
            "platform": "Linux",
            "type": "BUILD",
            "owner": "123456789012",
            "dateCreated": "2021-07-10T03:38:46.091Z"
        }
    ]
}
```

Berdasarkan hasil Anda, Anda dapat menentukan versi berikutnya.

## Impor skrip untuk membuat komponen dari AWS CLI
<a name="import-component-cli"></a>

Untuk beberapa skenario, mungkin lebih mudah untuk memulai dengan skrip yang sudah ada sebelumnya. Untuk skenario ini, Anda dapat menggunakan contoh berikut. 

Contoh ini mengasumsikan bahwa Anda memiliki file bernama `import-component.json` (seperti yang ditunjukkan). Perhatikan bahwa file tersebut secara langsung mereferensikan PowerShell skrip `AdminConfig.ps1` yang disebut yang sudah diunggah. `amzn-s3-demo-source-bucket` Saat `SHELL` ini, didukung untuk komponen`format`. 

```
{
"name": "MyImportedComponent",
"semanticVersion": "1.0.0",
"description": "An example of how to import a component",
"changeDescription": "First commit message.",
"format": "SHELL",
"platform": "Windows",
"type": "BUILD",
"uri": "s3://amzn-s3-demo-source-bucket/AdminConfig.ps1",
"kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/60763706-b131-418b-8f85-3420912f020c"
}
```

Untuk membuat komponen dari skrip yang diimpor, jalankan perintah berikut.

```
aws imagebuilder import-component --cli-input-json file://import-component.json
```

## Manajemen versi build otomatis
<a name="auto-build-version-management"></a>

Saat Anda membuat komponen dengan nama dan versi semantik yang sama dengan komponen yang ada, Image Builder secara otomatis menambah versi build (misalnya, dari `/1` ke, ke `/2``/3`, dan seterusnya). Ini memungkinkan Anda untuk membuat pembaruan berulang pada komponen Anda tanpa mengelola nomor versi secara manual, yang sangat berguna dalam CI/CD pipeline dan infrastructure-as-code penerapan. Jika konten komponen identik dengan versi build sebelumnya, Image Builder kembali `ResourceAlreadyExistsException` untuk mencegah duplikat komponen menggunakan kuota layanan Anda. 

## Menggunakan referensi versi
<a name="using-version-references"></a>

Ketika Anda membuat atau mengambil komponen, Image Builder secara otomatis menyediakan pra-konstruksi ARNs dengan pola versi wildcard dalam objek. latestVersionReferences Referensi ini memudahkan penggunaan versi terbaru komponen Anda dalam resep dan saluran pipa tanpa mengurai ARNs secara manual. 

**Memilih referensi versi yang tepat**
+ latestVersionArn (x.xx) - Selalu gunakan versi komponen terbaru yang absolut.
+ atestMajorVersionArn (1.xx) - Gunakan versi minor dan patch terbaru dalam versi utama.
+ latestMinorVersionArn (1.2.x) - Gunakan versi patch terbaru saja.
+ latestPatchVersionArn (1.2.3) - Referensi versi semantik tertentu, tetapi dapatkan versi build terbaru.

**catatan**  
Untuk menghindari biaya yang tidak terduga, pastikan untuk membersihkan sumber daya dan saluran pipa yang Anda buat dari contoh dalam panduan ini. Untuk informasi selengkapnya tentang menghapus sumber daya di Image Builder, lihat[Hapus sumber daya Image Builder yang sudah usang atau tidak digunakan](delete-resources.md).

# Bagaimana Image Builder menggunakan AWS Task Orchestrator and Executor aplikasi untuk mengelola komponen
<a name="toe-component-manager"></a>

EC2 Image Builder menggunakan aplikasi AWS Task Orchestrator and Executor (AWSTOE) untuk mengatur alur kerja yang kompleks, memodifikasi konfigurasi sistem, dan menguji gambar Anda tanpa perlu skrip atau kode devops tambahan. Aplikasi ini mengelola dan menjalankan komponen yang mengimplementasikan skema dokumen deklaratifnya.

AWSTOE adalah aplikasi mandiri yang diinstal Image Builder pada build dan instance pengujiannya saat Anda membuat gambar. Anda juga dapat menginstalnya secara manual pada EC2 instance untuk membuat komponen kustom Anda sendiri. Itu tidak memerlukan pengaturan tambahan, dan juga dapat berjalan di tempat.

**Topics**
+ [AWSTOE download](#toe-downloads)
+ [Wilayah yang Didukung](#toe-supported-regions)
+ [AWSTOE referensi perintah](#toe-commands)
+ [Pengaturan manual untuk mengembangkan komponen khusus dengan AWSTOE](toe-get-started.md)
+ [Gunakan kerangka dokumen AWSTOE komponen untuk komponen kustom](toe-use-documents.md)
+ [Modul aksi yang didukung oleh manajer AWSTOE komponen](toe-action-modules.md)
+ [Konfigurasikan input untuk perintah AWSTOE run](toe-run-config-input.md)

## AWSTOE download
<a name="toe-downloads"></a>

Untuk menginstal AWSTOE, pilih tautan unduhan untuk arsitektur dan platform Anda. Jika Anda melampirkan ke titik akhir VPC untuk layanan Anda (Image Builder, misalnya), itu harus memiliki kebijakan endpoint khusus yang dilampirkan yang menyertakan akses ke bucket S3 untuk unduhan. AWSTOE Jika tidak, instance build dan test Anda tidak akan dapat mengunduh skrip bootstrap (`bootstrap.sh`) dan menginstal AWSTOE aplikasi. Untuk mengetahui informasi selengkapnya, lihat [Membuat kebijakan titik akhir VPC untuk Image Builder](vpc-interface-endpoints.md#vpc-endpoint-policy).

**penting**  
AWS menghapus dukungan untuk TLS versi 1.0 dan 1.1 secara bertahap. Untuk mengakses bucket S3 untuk AWSTOE unduhan, perangkat lunak klien Anda harus menggunakan TLS versi 1.2 atau yang lebih baru. Untuk informasi lebih lanjut, lihat [posting Blog AWS Keamanan](https://aws.amazon.com/blogs/security/tls-1-2-required-for-aws-endpoints/) ini.


| Arsitektur | Platform | Tautan unduhan | Contoh | 
| --- | --- | --- | --- | 
| 386 |  AL 2 dan 2023 RHEL 7, 8, dan 9 Ubuntu 16.04, 18.04, 20.04, 22.04, dan 24.04 CentOS 7 dan 8 SUSE 12 dan 15  | `https://awstoe-<region>.s3.<region>.amazonaws.com/latest/linux/386/awstoe`  | [https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/386/awstoe](https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/386/awstoe) | 
| AMD64 |  AL 2 dan 2023 RHEL 7, 8, dan 9 Ubuntu 16.04, 18.04, 20.04, 22.04, dan 24.04 CentOS 7 dan 8 CentOS Aliran 8 SUSE 12 dan 15  | https://awstoe-<region>.s3.<region>.amazonaws.com/latest/linux/amd64/awstoe | [https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/amd64/awstoe](https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/amd64/awstoe) | 
| AMD64 |  macOS 10.14.x (Mojave), 10.15.x (Catalina), 11.x (Big Sur), 12.x (Monterey)  | https://awstoe-region.s3.region.amazonaws.com/latest/darwin/amd64/awstoe | [https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/darwin/amd64/awstoe](https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/darwin/amd64/awstoe) | 
|  AMD64  |  Windows Server 2012 R2, 2016, 2019, dan 2022  |   `https://awstoe-<region>.s3.<region>.amazonaws.com/latest/windows/amd64/awstoe.exe`  | [https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/windows/amd64/awstoe.exe](https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/windows/amd64/awstoe.exe) | 
| ARM64 |  AL 2 dan 2023 RHEL 7, 8, dan 9 Ubuntu 16.04, 18.04, 20.04, 22.04, dan 24.04 CentOS 7 dan 8 CentOS Aliran 8 SUSE 12 dan 15  | https://awstoe-<region>.s3.<region>.amazonaws.com/latest/linux/arm64/awstoe | [https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/arm64/awstoe](https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/arm64/awstoe) | 

## Wilayah yang Didukung
<a name="toe-supported-regions"></a>

AWSTOE didukung sebagai aplikasi mandiri di Wilayah berikut.


| Wilayah AWS nama | Wilayah AWS | 
| --- | --- | 
|  AS Timur (Ohio)  |  us-east-2  | 
|  US East (N. Virginia)  |  us-east-1  | 
|  AWS GovCloud (AS-Timur)  |  us-gov-east-1  | 
|  AWS GovCloud (AS-Barat)  |  us-gov-west-1  | 
|  AS Barat (California Utara)  | us-west-1 | 
|  US West (Oregon)  | as-barat-2 | 
|  Afrika (Cape Town)  | af-selatan-1 | 
|  Asia Pasifik (Hong Kong)  | ap-east-1 | 
|  Asia Pacific (Osaka)  | ap-northeast-3 | 
|  Asia Pacific (Seoul)  | ap-northeast-2 | 
|  Asia Pasifik (Mumbai)  | ap-south-1 | 
|  Asia Pasifik (Hyderabad)  | ap-south-2 | 
|  Asia Pasifik (Singapura)  | ap-southeast-1 | 
|  Asia Pacific (Sydney)  | ap-southeast-2 | 
|  Asia Pasifik (Jakarta)  | ap-southeast-3 | 
|  Asia Pasifik (Tokyo)  | ap-northeast-1 | 
|  Canada (Central)  | ca-sentral-1 | 
|  Europe (Frankfurt)  | eu-central-1 | 
|  Eropa (Zürich)  | eu-central-2 | 
|  Eropa (Stockholm)  | eu-north-1 | 
|  Eropa (Milan)  | eu-south-1 | 
|  Eropa (Spanyol)  | eu-south-2 | 
|  Eropa (Irlandia)  | eu-west-1 | 
|  Europe (London)  | eu-west-2 | 
|  Europe (Paris)  | eu-west-3 | 
|  Israel (Tel Aviv)  | il-central-1 | 
|  Timur Tengah (UEA)  | me-central-1 | 
|  Timur Tengah (Bahrain)  | me-selatan-1 | 
|  Amerika Selatan (São Paulo)  | sa-east-1 | 
|  Tiongkok (Beijing)  | cn-north-1 | 
|  China (Ningxia)  | cn-northwest-1 | 

## AWSTOE referensi perintah
<a name="toe-commands"></a>

AWSTOE adalah aplikasi manajemen komponen baris perintah yang berjalan pada EC2 instance Amazon. Saat Image Builder meluncurkan instance EC2 build atau test, Image Builder akan diinstal AWSTOE pada instance. Kemudian menjalankan AWSTOE perintah di AWS CLI untuk menginstal atau memvalidasi komponen yang ditentukan dalam resep gambar atau wadah.

**catatan**  
Beberapa modul AWSTOE tindakan memerlukan izin tinggi untuk berjalan di server Linux. Untuk menggunakan izin yang ditinggikan, awali sintaks perintah dengan**sudo**, atau jalankan **sudo su** perintah satu kali ketika Anda masuk sebelum menjalankan perintah yang ditautkan di bawah ini. Untuk informasi selengkapnya tentang modul AWSTOE tindakan, lihat[Modul aksi yang didukung oleh manajer AWSTOE komponen](toe-action-modules.md).

***[run](#cmd-run)***  
Gunakan **run** perintah untuk menjalankan skrip dokumen YAMAL untuk satu atau beberapa dokumen komponen.

***[validasi](#cmd-validate)***  
Jalankan **validate** perintah untuk memvalidasi sintaks dokumen YAMAL untuk satu atau beberapa dokumen komponen.

### awstoe jalankan perintah
<a name="cmd-run"></a>

Perintah ini menjalankan skrip dokumen komponen YAMAL dalam urutan di mana mereka disertakan dalam file konfigurasi yang ditentukan oleh `--config` parameter, atau daftar dokumen komponen yang ditentukan oleh parameter. `--documents`

**catatan**  
Anda harus menentukan dengan tepat salah satu parameter berikut, tidak pernah keduanya:  
--config  
--dokumen

#### Sintaksis
<a name="run-syntax"></a>

```
awstoe run [--config <file path>] [--cw-ignore-failures <?>] 
      [--cw-log-group <?>] [--cw-log-region us-west-2] [--cw-log-stream <?>] 
      [--document-s3-bucket-owner <owner>] [--documents <file path,file path,...>] 
      [--execution-id <?>] [--log-directory <file path>] 
      [--log-s3-bucket-name <name>] [--log-s3-bucket-owner <owner>] 
      [--log-s3-key-prefix <?>] [--parameters name1=value1,name2=value2...] 
      [--phases <phase name>] [--state-directory <directory path>] [--version <?>] 
      [--help] [--trace]
```

#### Parameter dan opsi
<a name="run-parameters"></a>Parameter

**--config *`./config-example.json`***  
Bentuk pendek: -c *`./config-example.json`*  
File konfigurasi *(kondisional).* Parameter ini berisi lokasi file untuk file JSON yang berisi pengaturan konfigurasi untuk komponen yang sedang dijalankan perintah ini. Jika Anda menentukan pengaturan **run** perintah dalam file konfigurasi, Anda tidak boleh menentukan `--documents` parameter. Untuk informasi selengkapnya tentang konfigurasi input, lihat[Konfigurasikan input untuk perintah AWSTOE run](toe-run-config-input.md).  
Lokasi yang valid meliputi:  
+ Jalur file lokal (*`./config-example.json`*)
+ URI S3 () `s3://bucket/key`

**--cw-ignore-failures**  
Bentuk pendek: N/A  
Abaikan kegagalan logging dari CloudWatch Log.

**--cw-log-group**  
Bentuk pendek: N/A  
`LogGroup`Nama untuk CloudWatch Log.

**--cw-log-region**  
Bentuk pendek: N/A  
 AWS Wilayah yang berlaku untuk CloudWatch Log.

**--cw-log-stream**  
Bentuk pendek: N/A  
`LogStream`Nama untuk CloudWatch Log, yang mengarahkan ke AWSTOE mana untuk streaming `console.log` file.

**--dokumen-s3-bucket-pemilik**  
Bentuk pendek: N/A  
ID akun pemilik bucket untuk dokumen berbasis S3 URI.

**--dokumen *`./doc-1.yaml`,`./doc-n.yaml`***  
Bentuk pendek: -d*`./doc-1.yaml`*, *`./doc-n`*  
Dokumen komponen *(kondisional).* Parameter ini berisi daftar lokasi file yang dipisahkan koma untuk menjalankan dokumen komponen YAMAL. Jika Anda menentukan dokumen YAMAL untuk **run** perintah menggunakan `--documents` parameter, Anda tidak boleh menentukan `--config` parameternya.  
Lokasi yang valid meliputi:  
+ jalur file lokal (*./component-doc-example.yaml*).
+ S3 URIs (`s3://bucket/key`).
+ Versi pembuatan komponen Image Builder ARNs (arn:aws:imagebuilder:us-west-:component/ /2021.12.02/1). *2:123456789012* *my-example-component*
Tidak ada spasi di antara item dalam daftar, hanya koma.

**--eksekusi-id**  
Bentuk pendek: -i  
Ini adalah ID unik yang berlaku untuk eksekusi **run** perintah saat ini. ID ini disertakan dalam nama file keluaran dan log, untuk mengidentifikasi file-file tersebut secara unik, dan menautkannya ke eksekusi perintah saat ini. Jika pengaturan ini ditinggalkan, buat AWSTOE GUID.

**--log-direktori**  
Bentuk pendek: -l  
Direktori tujuan tempat AWSTOE menyimpan semua file log dari eksekusi perintah ini. Secara default, direktori ini terletak di dalam direktori induk berikut:`TOE_<DATETIME>_<EXECUTIONID>`. Jika Anda tidak menentukan direktori log, AWSTOE gunakan direktori kerja saat ini (`.`).

**--log-s3-nama-ember**  
Bentuk pendek: -b  
Jika log komponen disimpan di Amazon S3 (disarankan), AWSTOE unggah log aplikasi komponen ke bucket S3 yang disebutkan dalam parameter ini.

**--log-s3-bucket-pemilik**  
Bentuk pendek: N/A  
Jika log komponen disimpan di Amazon S3 (disarankan), ini adalah ID akun pemilik untuk bucket tempat AWSTOE menulis file log.

**--log-s3-key-awalan**  
Bentuk pendek: -k  
Jika log komponen disimpan di Amazon S3 (disarankan), ini adalah awalan kunci objek S3 untuk lokasi log di bucket.

**--parameter *name1* =*value1*, *name2* =*value2*...**  
Bentuk pendek: N/A  
Parameter adalah variabel yang dapat berubah yang didefinisikan dalam dokumen komponen, dengan pengaturan yang dapat disediakan oleh aplikasi pemanggilan saat runtime.

**--fase**  
Bentuk pendek: -p  
Daftar dipisahkan koma yang menentukan fase mana yang akan dijalankan dari dokumen komponen YAMAL. Jika dokumen komponen menyertakan fase tambahan, itu tidak akan berjalan.

**--state-direktori**  
Bentuk pendek: -s  
Jalur file tempat file pelacakan negara disimpan.

**--versi**  
Bentuk pendek: -v  
Menentukan versi aplikasi komponen.Opsi

**--help**  
Bentuk pendek: -h  
Menampilkan manual bantuan untuk menggunakan opsi aplikasi manajemen komponen.

**--jejak**  
Bentuk pendek: -t  
Mengaktifkan pencatatan verbose ke konsol.

### awstoe memvalidasi perintah
<a name="cmd-validate"></a>

Ketika Anda menjalankan perintah ini, itu memvalidasi sintaks dokumen YAMAL untuk setiap dokumen komponen yang ditentukan oleh parameter. `--documents`

#### Sintaksis
<a name="validate-syntax"></a>

```
awstoe validate [--document-s3-bucket-owner <owner>] 
      --documents <file path,file path,...> [--help] [--trace]
```

#### Parameter dan opsi
<a name="validate-parameters"></a>Parameter

**--dokumen-s3-bucket-pemilik**  
Bentuk pendek: N/A  
ID akun sumber dokumen berbasis S3 URI yang disediakan.

**--dokumen *`./doc-1.yaml`,`./doc-n.yaml`***  
Bentuk pendek: -d*`./doc-1.yaml`*, *`./doc-n`*  
Dokumen komponen *(wajib)*. Parameter ini berisi daftar lokasi file yang dipisahkan koma untuk menjalankan dokumen komponen YAMAL. Lokasi yang valid meliputi:  
+ jalur file lokal (*./component-doc-example.yaml*)
+ S3 URIs () `s3://bucket/key`
+ Versi pembuatan komponen Image Builder ARNs (arn:aws:imagebuilder:us-west-:component/ /2021.12.02/1) *2:123456789012* *my-example-component*
Tidak ada spasi di antara item dalam daftar, hanya koma.Opsi

**--help**  
Bentuk pendek: -h  
Menampilkan manual bantuan untuk menggunakan opsi aplikasi manajemen komponen.

**--jejak**  
Bentuk pendek: -t  
Mengaktifkan pencatatan verbose ke konsol.

# Pengaturan manual untuk mengembangkan komponen khusus dengan AWSTOE
<a name="toe-get-started"></a>

Aplikasi AWS Task Orchestrator and Executor (AWSTOE) adalah aplikasi mandiri yang membuat, memvalidasi, dan menjalankan perintah dalam kerangka definisi komponen. AWS layanan dapat digunakan AWSTOE untuk mengatur alur kerja, menginstal perangkat lunak, memodifikasi konfigurasi sistem, dan menguji build gambar.

Ikuti langkah-langkah ini untuk menginstal AWSTOE aplikasi secara manual dan menggunakannya sebagai aplikasi yang berdiri sendiri untuk mengembangkan komponen khusus. Image Builder menangani langkah-langkah ini untuk Anda, jika Anda menggunakan konsol Image Builder atau AWS CLI perintah untuk membuat komponen kustom. Untuk informasi selengkapnya, lihat [Buat komponen kustom dengan Image Builder](create-component.md).

# Verifikasi tanda tangan unduhan AWSTOE instalasi
<a name="awstoe-verify-sig"></a>

Bagian ini menjelaskan proses yang disarankan untuk memverifikasi validitas unduhan instalasi untuk sistem operasi berbasis AWSTOE Linux, macOS dan Windows.

**Topics**
+ [Verifikasi tanda tangan unduhan AWSTOE instalasi di Linux atau macOS](#awstoe-verify-sig-linux)
+ [Verifikasi tanda tangan unduhan AWSTOE instalasi di Windows](#awstoe-verify-sig-win)

## Verifikasi tanda tangan unduhan AWSTOE instalasi di Linux atau macOS
<a name="awstoe-verify-sig-linux"></a>

Topik ini menjelaskan proses yang disarankan untuk memverifikasi validitas unduhan instalasi untuk sistem operasi berbasis AWSTOE Linux atau macOS.

Setiap kali Anda mengunduh aplikasi dari internet, kami sarankan Anda mengautentikasi identitas penerbit perangkat lunak. Juga, periksa apakah aplikasi tidak diubah atau rusak sejak diterbitkan. Hal ini akan melindungi Anda agar tidak menginstal versi aplikasi yang berisi virus atau kode berbahaya lainnya.

Jika, setelah menjalankan langkah-langkah dalam topik ini, Anda menentukan bahwa perangkat lunak untuk AWSTOE aplikasi diubah atau rusak, jangan jalankan file instalasi. Sebagai gantinya, hubungi Dukungan Untuk informasi selengkapnya tentang opsi dukungan Anda, lihat [Dukungan](https://aws.amazon.com/premiumsupport/).

AWSTOE file untuk sistem operasi berbasis Linux dan macOS ditandatangani menggunakan`GnuPG`, implementasi open source dari standar Pretty Good Privacy (OpenPGP) untuk tanda tangan digital yang aman. `GnuPG`(juga dikenal sebagai`GPG`) menyediakan otentikasi dan pemeriksaan integritas melalui tanda tangan digital. Amazon EC2 menerbitkan kunci publik dan tanda tangan yang dapat Anda gunakan untuk memverifikasi alat Amazon EC2 CLI yang diunduh. Untuk informasi lebih lanjut tentang `PGP` dan `GnuPG` (`GPG`), lihat [http://www.gnupg.org](https://www.gnupg.org/).

Langkah pertamanya adalah membangun kepercayaan dengan penerbit perangkat lunak. Unduh kunci publik dari penerbit perangkat lunak, periksa apakah pemilik kunci publik adalah benar-benar pemiliknya, lalu tambahkan kunci publik ke dalam *keyring* Anda. Keyring adalah kumpulan kunci publik yang diketahui. Setelah menetapkan autentikasi kunci publik, Anda dapat menggunakannya untuk memverifikasi tanda tangan aplikasi.

**Topics**
+ [Menginstal alat GPG](#awstoe-verify-signature-of-binary-download-install-tools)
+ [Mengautentikasi dan mengimpor kunci publik](#awstoe-verify-signature-of-binary-download-authenticate-import-public-key)
+ [Memverifikasi tanda tangan paket](#awstoe-verify-signature-of-binary-package)

### Menginstal alat GPG
<a name="awstoe-verify-signature-of-binary-download-install-tools"></a>

Jika sistem operasi Anda adalah Linux, Unix, atau macOS, alat GPG kemungkinan sudah diinstal. Untuk menguji apakah alat ini sudah terinstal di sistem Anda, ketikkan **gpg** pada jendela perintah. Jika alat GPG telah teriinstal, Anda akan melihat prompt perintah GPG. Jika alat GPG tidak diinstal, Anda melihat pesan kesalahan yang menyatakan bahwa perintah tidak dapat ditemukan. Anda dapat menginstal paket GnuPG dari repositori.

Untuk menginstal alat GPG, pilih sistem operasi yang cocok dengan instans Anda.

------
#### [ Debian-based Linux ]

Dari terminal, jalankan perintah berikut:

```
apt-get install gnupg
```

------
#### [ Red Hat–based Linux ]

Dari terminal, jalankan perintah berikut:

```
yum install gnupg
```

------
#### [ macOS ]

Dari terminal, jalankan perintah berikut:

```
brew install gnupg
```

------

### Mengautentikasi dan mengimpor kunci publik
<a name="awstoe-verify-signature-of-binary-download-authenticate-import-public-key"></a>

Langkah selanjutnya dalam proses ini adalah mengautentikasi kunci AWSTOE publik dan menambahkannya sebagai kunci tepercaya di `GPG` keyring Anda.

**Untuk mengautentikasi dan mengimpor kunci AWSTOE publik**

1. Dapatkan salinan kunci build `GPG` publik kami dengan melakukan salah satu langkah berikut:
   + Unduh kuncinya dari

      https://awstoe - **<region>** .s3. **<region>**.amazonaws. com/assets/awstoe.gpg. Misalnya, [https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/assets/awstoe.gpg](https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/assets/awstoe.gpg).
   + Salin kunci dari teks berikut dan tempelkan ke file bernama `awstoe.gpg`. Pastikan untuk memasukkan semua hal berikut ini:

     ```
     -----BEGIN PGP PUBLIC KEY BLOCK-----
     Version: GnuPG v2
     
     mQENBF8UqwsBCACdiRF2bkZYaFSDPFC+LIkWLwFvtUCRwAHtD8KIwTJ6LVn3fHAU
     GhuK0ZH9mRrqRT2bq/xJjGsnF9VqTj2AJqndGJdDjz75YCZYM+ocZ+r5HSJaeW9i
     S5dykHj7Txti2zHe0G5+W0v7v5bPi2sPHsN7XWQ7+G2AMEPTz8PjxY//I0DvMQns
     Sle3l9hz6wCClz1l9LbBzTyHfSm5ucTXvNe88XX5Gmt37OCDM7vfli0Ctv8WFoLN
     6jbxuA/sV71yIkPm9IYp3+GvaKeT870+sn8/JOOKE/U4sJV1ppbqmuUzDfhrZUaw
     8eW8IN9A1FTIuWiZED/5L83UZuQs1S7s2PjlABEBAAG0GkFXU1RPRSA8YXdzdG9l
     QGFtYXpvbi5jb20+iQE5BBMBCAAjBQJfFKsLAhsDBwsJCAcDAgEGFQgCCQoLBBYC
     AwECHgECF4AACgkQ3r3BVvWuvFJGiwf9EVmrBR77+Qe/DUeXZJYoaFr7If/fVDZl
     6V3TC6p0J0Veme7uXleRUTFOjzbh+7e5sDX19HrnPquzCnzfMiqbp4lSoeUuNdOf
     FcpuTCQH+M+sIEIgPno4PLl0Uj2uE1o++mxmonBl/Krk+hly8hB2L/9n/vW3L7BN
     OMb1Ll9PmgGPbWipcT8KRdz4SUex9TXGYzjlWb3jU3uXetdaQY1M3kVKE1siRsRN
     YYDtpcjmwbhjpu4xm19aFqNoAHCDctEsXJA/mkU3erwIRocPyjAZE2dnlkL9ZkFZ
     z9DQkcIarbCnybDM5lemBbdhXJ6hezJE/b17VA0t1fY04MoEkn6oJg==
     =oyze
     -----END PGP PUBLIC KEY BLOCK-----
     ```

1. Pada prompt perintah di direktori tempat Anda menyimpan **awstoe.gpg**, gunakan perintah berikut untuk mengimpor kunci AWSTOE publik ke keyring Anda.

   ```
   gpg --import awstoe.gpg
   ```

   Perintah tersebut mengembalikan hasil yang serupa dengan berikut ini:

   ```
   gpg: key F5AEBC52: public key "AWSTOE <awstoe@amazon.com>" imported
   gpg: Total number processed: 1
   gpg:               imported: 1  (RSA: 1)
   ```

   Catat nilai utama; Anda membutuhkannya pada langkah berikutnya. Dalam contoh sebelumnya, nilai utama adalah `F5AEBC52`.

1. Verifikasi sidik jari dengan menjalankan perintah berikut, mengganti *key-value* dengan nilai dari langkah sebelumnya:

   ```
   gpg --fingerprint key-value
   ```

   Perintah ini mengembalikan hasil yang serupa dengan berikut ini:

   ```
   pub   2048R/F5AEBC52 2020-07-19
         Key fingerprint = F6DD E01C 869F D639 15E5  5742 DEBD C156 F5AE BC52
   uid       [ unknown] AWSTOE <awstoe@amazon.com>
   ```

   Selain itu, string sidik jari harus identik dengan `F6DD E01C 869F D639 15E5 5742 DEBD C156 F5AE BC52`, seperti yang ditunjukkan dalam contoh sebelumnya. Bandingkan sidik jari kunci yang dikembalikan dengan yang dipublikasikan di halaman ini. Mereka harus cocok. Jika tidak cocok, jangan instal skrip AWSTOE instalasi, dan hubungi Dukungan. 

### Memverifikasi tanda tangan paket
<a name="awstoe-verify-signature-of-binary-package"></a>

Setelah Anda menginstal `GPG` alat, mengautentikasi dan mengimpor kunci AWSTOE publik, dan memverifikasi bahwa kunci publik dipercaya, Anda siap untuk memverifikasi tanda tangan skrip instalasi. 

**Untuk memverifikasi tanda tangan skrip instalasi**

1. Pada prompt perintah, jalankan perintah berikut untuk mengunduh biner aplikasi:

   ```
   curl -O https://awstoe-<region>.s3.<region>.amazonaws.com/latest/linux/<architecture>/awstoe
   ```

   Contoh:

   ```
   curl -O https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/amd64/awstoe
   ```

   Nilai yang didukung untuk **architecture** bisa`amd64`,`386`, dan`arm64`.

1. Pada prompt perintah, jalankan perintah berikut untuk mengunduh file tanda tangan untuk biner aplikasi yang sesuai dari jalur key prefix S3 yang sama:

   ```
   curl -O https://awstoe-<region>.s3.<region>.amazonaws.com/latest/linux/<architecture>/awstoe.sig
   ```

   Contoh:

   ```
   curl -O https://awstoe-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/amd64/awstoe.sig
   ```

   Nilai yang didukung untuk **architecture** bisa`amd64`,`386`, dan`arm64`.

1. Verifikasi tanda tangan dengan menjalankan perintah berikut pada prompt perintah di direktori tempat Anda menyimpan `awstoe.sig` dan file AWSTOE instalasi. Kedua file tersebut harus ada.

   ```
   gpg --verify ./awstoe.sig ~/awstoe
   ```

   Output-nya akan terlihat seperti berikut ini:

   ```
   gpg: Signature made Mon 20 Jul 2020 08:54:55 AM IST using RSA key ID F5AEBC52
   gpg: Good signature from "AWSTOE awstoe@amazon.com" [unknown]
   gpg: WARNING: This key is not certified with a trusted signature!
   gpg:          There is no indication that the signature belongs to the owner.
   Primary key fingerprint: F6DD E01C 869F D639 15E5 5742 DEBD C156 F5AE BC52
   ```

   Jika output berisi frasa`Good signature from "AWSTOE <awstoe@amazon.com>"`, itu berarti tanda tangan telah berhasil diverifikasi, dan Anda dapat melanjutkan untuk menjalankan skrip AWSTOE instalasi.

   Jika output berisi frasa `BAD signature`, periksa apakah Anda melakukan prosedur dengan benar. Jika Anda terus mendapatkan respons ini, jangan jalankan file instalasi yang Anda unduh sebelumnya, dan hubungi Dukungan.

Berikut ini adalah informasi peringatan yang mungkin Anda lihat: 
+ **PERINGATAN: Kunci ini tidak disertifikasi dengan tanda tangan tepercaya\$1 Tidak ada indikasi bahwa tanda tangan ini adalah milik pemiliknya.** Idealnya, Anda akan mengunjungi AWS kantor dan menerima kunci secara langsung. Namun, kemungkinan besar Anda akan mengunduhnya dari situs web. Dalam hal ini, situs web adalah AWS situs web. 
+ **gpg: tidak ada kunci tepercaya yang ditemukan.** Ini berarti bahwa kunci spesifik tidak “pada akhirnya dipercaya” oleh Anda, atau oleh orang lain yang Anda percayai.

Untuk informasi lebih lanjut, lihat [http://www.gnupg.org](http://www.gnupg.org).

## Verifikasi tanda tangan unduhan AWSTOE instalasi di Windows
<a name="awstoe-verify-sig-win"></a>

Topik ini menjelaskan proses yang direkomendasikan untuk memverifikasi validitas file instalasi untuk AWS Task Orchestrator and Executor aplikasi pada sistem operasi berbasis Windows. 

Saat Anda mengunduh aplikasi dari internet, kami merekomendasikan Anda untuk mengautentikasi identitas penerbit perangkat lunak dan memeriksa apakah aplikasi tersebut belum diubah atau rusak setelah diterbitkan. Hal ini akan melindungi Anda agar tidak menginstal versi aplikasi yang berisi virus atau kode berbahaya lainnya.

Jika, setelah menjalankan langkah-langkah dalam topik ini, Anda menentukan bahwa perangkat lunak untuk AWSTOE aplikasi diubah atau rusak, jangan jalankan file instalasi. Sebaliknya, hubungi Dukungan.

Untuk memverifikasi validitas biner awstoe yang diunduh pada sistem operasi berbasis Windows, pastikan bahwa cap jempol sertifikat penandatangan Amazon Services LLC sama dengan nilai ini:

**9D CA 72 17 DA FF B8 2F E4 C4 67 77 36 2F A4 A4 AA C9 08 82 15**

**catatan**  
Selama jendela roll-out untuk biner baru, sertifikat penandatangan Anda mungkin tidak cocok dengan sidik jari baru. Jika sertifikat penandatangan Anda tidak cocok, verifikasi bahwa nilai cap jempol adalah:   
**BA 81 25 EE AC 64 2E A9 F3 C5 93 CA 6D 3E B7 93 7D 68 75 74**

Untuk memverifikasi nilai ini, lakukan prosedur berikut: 

1. Klik kanan `awstoe.exe` yang diunduh, dan buka jendela **Properti**.

1. Pilih tab **Tanda Tangan Digital**.

1. Dari **Daftar Tanda Tangan**, pilih **Amazon Services LLC**, lalu pilih **Detail**.

1. Pilih tab **Umum**, jika belum dipilih, lalu pilih **Lihat Sertifikat**.

1. Pilih tab **Detail**, dan kemudian pilih **Semua** di **Tampilkan** daftar tarik turun, jika belum dipilih.

1. Gulir ke bawah sampai Anda melihat bidang **Cap Jempol** lalu pilih **Cap Jempol**. Ini menampilkan seluruh nilai cap jempol di jendela bawah.
   + Jika nilai cap jempol di jendela bawah identik dengan nilai berikut:

     **9D CA 72 17 DA FF B8 2F E4 C4 67 77 36 2F A4 A4 AA C9 08 82 15**

     maka AWSTOE biner yang Anda unduh adalah otentik dan dapat diinstal dengan aman.
   + Jika nilai sidik jari di jendela detail bawah tidak identik dengan nilai sebelumnya, jangan jalankan. `awstoe.exe`

**Topics**
+ [Verifikasi tanda tangan unduhan AWSTOE instalasi](awstoe-verify-sig.md)
+ [Langkah 1: Instal AWSTOE](#toe-start-install)
+ [Langkah 2: Tetapkan AWS kredensyal](#toe-start-credentials)
+ [Langkah 3: Kembangkan dokumen komponen secara lokal](#toe-start-develop)
+ [Langkah 4: Validasi komponen AWSTOE](#toe-start-validate)
+ [Langkah 5: Jalankan AWSTOE komponen](#toe-start-run)

## Langkah 1: Instal AWSTOE
<a name="toe-start-install"></a>

Untuk mengembangkan komponen secara lokal, unduh dan instal AWSTOE aplikasi.

1. 

**Unduh AWSTOE aplikasinya**

   Untuk menginstal AWSTOE, pilih tautan unduhan yang sesuai untuk arsitektur dan platform Anda. Untuk daftar lengkap tautan unduhan aplikasi, lihat [AWSTOE download](toe-component-manager.md#toe-downloads)
**penting**  
AWS menghapus dukungan untuk TLS versi 1.0 dan 1.1 secara bertahap. Untuk mengakses bucket S3 untuk AWSTOE unduhan, perangkat lunak klien Anda harus menggunakan TLS versi 1.2 atau yang lebih baru. Untuk informasi lebih lanjut, lihat [posting Blog AWS Keamanan](https://aws.amazon.com/blogs/security/tls-1-2-required-for-aws-endpoints/) ini.

1. 

**Verifikasi tanda tangan**

   Langkah-langkah untuk memverifikasi unduhan Anda bergantung pada platform server tempat Anda menjalankan AWSTOE aplikasi setelah Anda menginstalnya. Untuk memverifikasi unduhan Anda di server Linux, lihat[Verifikasi tanda tangan di Linux atau macOS](awstoe-verify-sig.md#awstoe-verify-sig-linux). Untuk memverifikasi unduhan Anda di server Windows, lihat[Verifikasi tanda tangan di Windows](awstoe-verify-sig.md#awstoe-verify-sig-win).

**catatan**  
AWSTOE dipanggil langsung dari lokasi unduhannya. Tidak perlu langkah instalasi terpisah. Ini juga berarti bahwa AWSTOE dapat membuat perubahan pada lingkungan lokal.  
Untuk memastikan bahwa Anda mengisolasi perubahan selama pengembangan komponen, sebaiknya gunakan EC2 instance untuk mengembangkan dan menguji AWSTOE komponen.

## Langkah 2: Tetapkan AWS kredensyal
<a name="toe-start-credentials"></a>

 AWSTOE memerlukan AWS kredensi untuk terhubung ke yang lain Layanan AWS, seperti Amazon S3 dan CloudWatch Amazon, saat menjalankan tugas, seperti: 
+ Mengunduh AWSTOE dokumen dari jalur Amazon S3 yang disediakan pengguna.
+ Modul lari `S3Download` atau `S3Upload` tindakan.
+ Streaming log ke CloudWatch, saat diaktifkan.

Jika Anda menjalankan AWSTOE sebuah EC2 instance, maka menjalankan AWSTOE menggunakan izin yang sama dengan peran IAM yang dilampirkan ke instance. EC2 

Untuk informasi selengkapnya tentang peran IAM EC2, lihat [peran IAM untuk Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html). EC2

Contoh berikut menunjukkan cara mengatur AWS kredensyal menggunakan variabel `AWS_ACCESS_KEY_ID` dan `AWS_SECRET_ACCESS_KEY` lingkungan. 

Untuk mengatur variabel ini di Linux, macOS, atau Unix, gunakan. `export`

```
export AWS_ACCESS_KEY_ID=your_access_key_id
```

```
export AWS_SECRET_ACCESS_KEY=your_secret_access_key
```

Untuk mengatur variabel-variabel ini pada Windows menggunakan PowerShell, gunakan`$env`.

```
$env:AWS_ACCESS_KEY_ID=your_access_key_id
```

```
$env:AWS_SECRET_ACCESS_KEY=your_secret_access_key
```

Untuk mengatur variabel-variabel ini pada Windows menggunakan command prompt, gunakan`set`.

```
set AWS_ACCESS_KEY_ID=your_access_key_id
```

```
set AWS_SECRET_ACCESS_KEY=your_secret_access_key
```

## Langkah 3: Kembangkan dokumen komponen secara lokal
<a name="toe-start-develop"></a>

Komponen ditulis dengan dokumen YAMAL plaintext. Untuk informasi selengkapnya tentang sintaks dokumen, lihat[Gunakan kerangka dokumen AWSTOE komponen untuk komponen kustom](toe-use-documents.md).

Berikut ini adalah contoh dokumen komponen *Hello World* untuk membantu Anda memulai.

------
#### [ Linux ]

Beberapa contoh komponen Linux dalam panduan ini mengacu pada file dokumen komponen bernama`hello-world-linux.yml`. Anda dapat menggunakan dokumen berikut untuk memulai dengan contoh-contoh tersebut.

```
name: Hello World
description: This is hello world testing document for Linux.
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo 'Hello World from the build phase.'
  - name: validate
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo 'Hello World from the validate phase.'
  - name: test
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo 'Hello World from the test phase.'
```

------
#### [ Windows ]

Beberapa contoh komponen Windows dalam panduan ini merujuk ke file dokumen komponen bernama`hello-world-windows.yml`. Anda dapat menggunakan dokumen berikut untuk memulai dengan contoh-contoh tersebut.

```
name: Hello World
description: This is Hello World testing document for Windows.
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: HelloWorldStep
        action: ExecutePowerShell
        inputs:
          commands:
            - Write-Host 'Hello World from the build phase.'
  - name: validate
    steps:
      - name: HelloWorldStep
        action: ExecutePowerShell
        inputs:
          commands:
            - Write-Host 'Hello World from the validate phase.'
  - name: test
    steps:
      - name: HelloWorldStep
        action: ExecutePowerShell
        inputs:
          commands:
            - Write-Host 'Hello World from the test phase.'
```

------
#### [ macOS ]

Beberapa contoh komponen macOS dalam panduan ini merujuk ke file dokumen komponen bernama. `hello-world-macos.yml` Anda dapat menggunakan dokumen berikut untuk memulai dengan contoh-contoh tersebut.

```
name: Hello World
description: This is hello world testing document for macOS.
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo 'Hello World from the build phase.'
  - name: validate
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo 'Hello World from the validate phase.'
  - name: test
    steps:
      - name: HelloWorldStep
        action: ExecuteBash
        inputs:
          commands:
            - echo 'Hello World from the test phase.'
```

------

## Langkah 4: Validasi komponen AWSTOE
<a name="toe-start-validate"></a>

Anda dapat memvalidasi sintaks AWSTOE komponen secara lokal dengan aplikasi. AWSTOE Contoh berikut menunjukkan `validate` perintah AWSTOE aplikasi untuk memvalidasi sintaks komponen tanpa menjalankannya.

**catatan**  
 AWSTOE Aplikasi hanya dapat memvalidasi sintaks komponen untuk sistem operasi saat ini. Misalnya, saat berjalan `awstoe.exe` di Windows, Anda tidak dapat memvalidasi sintaks untuk dokumen Linux yang menggunakan modul `ExecuteBash` tindakan.

Linux atau macOS

```
awstoe validate --documents /home/user/hello-world.yml
```

Windows

```
awstoe.exe validate --documents C:\Users\user\Documents\hello-world.yml
```

## Langkah 5: Jalankan AWSTOE komponen
<a name="toe-start-run"></a>

 AWSTOE Aplikasi dapat menjalankan satu atau lebih fase dokumen tertentu menggunakan argumen baris `--phases` perintah. Nilai yang didukung untuk `--phases` are`build`,`validate`, dan`test`. Beberapa nilai fase dapat dimasukkan sebagai nilai yang dipisahkan koma.

Saat Anda memberikan daftar fase, AWSTOE aplikasi secara berurutan menjalankan fase yang ditentukan dari setiap dokumen. Misalnya, AWSTOE menjalankan `build` dan `validate` fase`document1.yaml`, diikuti oleh `build` dan `validate` fase`document2.yaml`.

Untuk memastikan bahwa log Anda disimpan dengan aman dan disimpan untuk pemecahan masalah, sebaiknya konfigurasi penyimpanan log di Amazon S3. Di Image Builder, lokasi Amazon S3 untuk menerbitkan log ditentukan dalam konfigurasi infrastruktur. Untuk informasi selengkapnya tentang konfigurasi infrastruktur, lihat [Kelola konfigurasi infrastruktur Image Builder](manage-infra-config.md)

Jika daftar fase tidak disediakan, AWSTOE aplikasi menjalankan semua fase dalam urutan yang tercantum dalam dokumen YAMAL.

Untuk menjalankan fase tertentu dalam satu atau beberapa dokumen, gunakan perintah berikut.

Fase tunggal

```
awstoe run --documents hello-world.yml --phases build
```

Beberapa fase

```
awstoe run --documents hello-world.yml --phases build,test
```

**Jalankan dokumen**  
Jalankan semua fase dalam satu dokumen

```
awstoe run --documents documentName.yaml
```

Jalankan semua fase dalam beberapa dokumen

```
awstoe run --documents documentName1.yaml,documentName2.yaml
```

Masukkan informasi Amazon S3 untuk mengunggah AWSTOE log dari jalur lokal yang ditentukan pengguna (disarankan)

```
awstoe run --documents documentName.yaml --log-s3-bucket-name amzn-s3-demo-destination-bucket --log-s3-key-prefix S3KeyPrefix --log-s3-bucket-owner S3BucketOwner --log-directory local_path
```

Jalankan semua fase dalam satu dokumen, dan tampilkan semua log di konsol

```
awstoe run --documents documentName.yaml --trace
```

Perintah contoh

```
awstoe run --documents s3://bucket/key/doc.yaml --phases build,validate
```

Jalankan dokumen dengan ID unik

```
awstoe run --documents documentName.yaml --execution-id user-provided-id --phases build,test
```

Dapatkan bantuan dengan AWSTOE

```
awstoe --help
```

# Gunakan kerangka dokumen AWSTOE komponen untuk komponen kustom
<a name="toe-use-documents"></a>

Untuk membangun komponen menggunakan framework komponen AWS Task Orchestrator and Executor (AWSTOE), Anda harus menyediakan dokumen berbasis YAML yang mewakili fase dan langkah yang berlaku untuk komponen yang Anda buat. Layanan AWS gunakan komponen Anda saat mereka membuat Amazon Machine Image (AMI) atau image container baru.

**Topics**
+ [Alur kerja dokumen komponen](#component-doc-workflow)
+ [Pencatatan komponen](#component-logging)
+ [Rantai input dan output](#document-chaining)
+ [Skema dan definisi dokumen](#document-schema)
+ [Contoh dokumen](#document-example)
+ [Gunakan variabel dalam dokumen komponen kustom Anda](toe-user-defined-variables.md)
+ [Gunakan konstruksi bersyarat di AWSTOE](toe-conditional-constructs.md)
+ [Gunakan operator perbandingan dalam dokumen AWSTOE komponen](toe-comparison-operators.md)
+ [Gunakan operator logis dalam dokumen AWSTOE komponen](toe-logical-operators.md)
+ [Gunakan konstruksi perulangan di AWSTOE](toe-looping-constructs.md)

## Alur kerja dokumen komponen
<a name="component-doc-workflow"></a>

Dokumen AWSTOE komponen menggunakan fase dan langkah untuk mengelompokkan tugas terkait, dan mengatur tugas-tugas tersebut ke dalam alur kerja logis untuk komponen.

**Tip**  
Layanan yang menggunakan komponen Anda untuk membuat image mungkin menerapkan aturan tentang fase apa yang akan digunakan untuk proses pembuatannya, dan kapan fase tersebut diizinkan untuk dijalankan. Ini penting untuk dipertimbangkan ketika Anda mendesain komponen Anda.

**Fase**  
Fase mewakili perkembangan alur kerja Anda melalui proses pembuatan gambar. Misalnya, layanan Image Builder menggunakan `build` dan melakukan `validate` fase selama *tahap build* untuk gambar yang dihasilkannya. Ini menggunakan `container-host-test` fase `test` dan selama *tahap pengujian* untuk memastikan bahwa snapshot gambar atau gambar kontainer menghasilkan hasil yang diharapkan sebelum membuat AMI akhir atau mendistribusikan gambar kontainer.

Ketika komponen berjalan, perintah terkait untuk setiap fase diterapkan dalam urutan yang muncul dalam dokumen komponen.

**Aturan untuk fase**
+ Setiap nama fase harus unik dalam dokumen.
+ Anda dapat menentukan banyak fase dalam dokumen Anda.
+ Anda harus menyertakan setidaknya satu dari tahapan berikut dalam dokumen Anda:
  + **build** — untuk Image Builder, fase ini umumnya digunakan selama *tahap build*.
  + **validate** — untuk Image Builder, fase ini umumnya digunakan selama *tahap build*.
  + **test** — untuk Image Builder, fase ini umumnya digunakan selama *tahap pengujian*.
+ Fase selalu berjalan dalam urutan yang didefinisikan dalam dokumen. Urutan di mana mereka ditentukan untuk AWSTOE perintah di tidak AWS CLI berpengaruh.

**Langkah-langkah**  
Langkah-langkah adalah unit kerja individu yang menentukan alur kerja dalam setiap fase. Langkah-langkah berjalan secara berurutan. Namun, input atau output untuk satu langkah juga dapat dimasukkan ke langkah berikutnya sebagai input. Ini disebut “rantai”.

**Aturan untuk langkah-langkah**
+ Nama langkah harus unik untuk fase tersebut.
+ Langkah harus menggunakan tindakan yang didukung (modul tindakan) yang mengembalikan kode keluar.

  Untuk daftar lengkap modul tindakan yang didukung, cara kerjanya, input/output nilai, dan contoh, lihat[Modul aksi yang didukung oleh manajer AWSTOE komponen](toe-action-modules.md).

## Pencatatan komponen
<a name="component-logging"></a>

AWSTOE membuat folder log baru pada instance EC2 yang digunakan untuk membangun dan menguji gambar baru, setiap kali komponen Anda berjalan. Untuk gambar kontainer, folder log disimpan dalam wadah.

Untuk membantu pemecahan masalah jika terjadi kesalahan selama proses pembuatan gambar, dokumen input dan semua file output yang AWSTOE dibuat saat menjalankan komponen disimpan di folder log.

Nama folder log terdiri dari bagian-bagian berikut:

1. **Direktori log** — ketika sebuah layanan menjalankan AWSTOE komponen, ia melewati direktori log, bersama dengan pengaturan lain untuk perintah. Untuk contoh berikut, kami menunjukkan format file log yang digunakan Image Builder.
   + **Linux dan macOS**: `/var/lib/amazon/toe/`
   + **Windows**: `$env:ProgramFiles\Amazon\TaskOrchestratorAndExecutor\`

1. **Awalan file** — Ini adalah awalan standar yang digunakan untuk semua komponen: "”`TOE_`.

1. **Run time** - Ini adalah stempel waktu dalam format YYYY-MM-DD \$1HH-MM-SS\$1UTC-0.

1. **Execution ID** — Ini adalah GUID yang ditetapkan ketika AWSTOE menjalankan satu atau beberapa komponen.

Contoh: `/var/lib/amazon/toe/TOE_2021-07-01_12-34-56_UTC-0_a1bcd2e3-45f6-789a-bcde-0fa1b2c3def4`

AWSTOE menyimpan file inti berikut di folder log:

**Berkas masukan**
+ **document.yaml** — Dokumen yang digunakan sebagai input untuk perintah. Setelah komponen berjalan, file ini disimpan sebagai artefak.

**Berkas keluaran**
+ **application.log** - Log aplikasi berisi informasi tingkat debug stempel waktu dari AWSTOE tentang apa yang terjadi saat komponen sedang berjalan.
+ **detailedoutput.json** — File JSON ini memiliki informasi rinci tentang status run, input, output, dan kegagalan untuk semua dokumen, fase, dan langkah-langkah yang berlaku untuk komponen saat berjalan.
+ **console.log** - Log konsol berisi semua informasi standar keluar (stdout) dan kesalahan standar (stderr) yang AWSTOE menulis ke konsol saat komponen sedang berjalan.
+ **chaining.json - File JSON** ini mewakili pengoptimalan yang diterapkan untuk menyelesaikan ekspresi rantai. AWSTOE 

**catatan**  
Folder log mungkin juga berisi file sementara lainnya yang tidak tercakup di sini.

## Rantai input dan output
<a name="document-chaining"></a>

Aplikasi manajemen AWSTOE konfigurasi menyediakan fitur untuk merantai input dan output dengan menulis referensi dalam format berikut:

`{{ phase_name.step_name.inputs/outputs.variable }}`

atau

`{{ phase_name.step_name.inputs/outputs[index].variable }}`

Fitur chaining memungkinkan Anda untuk mendaur ulang kode dan meningkatkan pemeliharaan dokumen.

**Aturan untuk rantai**
+ Ekspresi rantai hanya dapat digunakan di bagian input dari setiap langkah.
+ Pernyataan dengan ekspresi rantai harus dilampirkan dalam tanda kutip. Contoh:
  + **Ekspresi tidak valid**: `echo {{ phase.step.inputs.variable }}`
  + **Ekspresi yang valid**: `"echo {{ phase.step.inputs.variable }}"`
  + **Ekspresi yang valid**: `'echo {{ phase.step.inputs.variable }}'`
+ Ekspresi rantai dapat mereferensikan variabel dari langkah dan fase lain dalam dokumen yang sama. Namun, layanan panggilan mungkin memiliki aturan yang memerlukan ekspresi rantai untuk beroperasi hanya dalam konteks satu tahap. Misalnya, Image Builder tidak mendukung chaining dari *tahap build ke tahap* *pengujian, karena Image* Builder menjalankan setiap tahap secara independen.
+ Indeks dalam ekspresi rantai mengikuti pengindeksan berbasis nol. Indeks dimulai dengan nol (0) untuk referensi elemen pertama.

**Contoh**

Untuk merujuk ke variabel sumber pada entri kedua dari langkah contoh berikut, pola rantai adalah`{{ build.SampleS3Download.inputs[1].source }}`.

```
phases:
  - name: 'build'
    steps:
      - name: SampleS3Download
        action: S3Download
        timeoutSeconds: 60
        onFailure: Abort
        maxAttempts: 3
        inputs:
          - source: 's3://sample-bucket/sample1.ps1'
            destination: 'C:\sample1.ps1'
          - source: 's3://sample-bucket/sample2.ps1'
            destination: 'C:\sample2.ps1'
```

Untuk merujuk ke variabel output (sama dengan “Halo”) dari langkah contoh berikut, pola rantai adalah`{{ build.SamplePowerShellStep.outputs.stdout }}`.

```
phases:
  - name: 'build'
    steps:
      - name: SamplePowerShellStep
        action: ExecutePowerShell
        timeoutSeconds: 120
        onFailure: Abort
        maxAttempts: 3
        inputs:
          commands:
            - 'Write-Host "Hello"'
```

## Skema dan definisi dokumen
<a name="document-schema"></a>

Berikut ini adalah skema YAMM untuk dokumen.

```
name: (optional)
description: (optional)
schemaVersion: "string"

phases:
  - name: "string"
    steps:
      - name: "string"
        action: "string"
        timeoutSeconds: integer
        onFailure: "Abort|Continue|Ignore"
        maxAttempts: integer
        inputs:
```

Definisi skema untuk dokumen adalah sebagai berikut.


| Bidang | Deskripsi | Tipe | Diperlukan | 
| --- | --- | --- | --- | 
| name | Nama dokumen. | String | Tidak | 
| deskripsi | Deskripsi dokumen. | String |  Tidak  | 
| schemaVersion | Versi skema dokumen, saat ini 1.0. | Tali |  Ya  | 
| fase | Daftar fase dengan langkah-langkahnya. |  Daftar  |  Ya  | 

Definisi skema untuk suatu fase adalah sebagai berikut.


| Bidang | Deskripsi | Tipe | Diperlukan | 
| --- | --- | --- | --- | 
| name | Nama fase. | Tali | Ya | 
| langkah | Daftar langkah-langkah dalam fase. | Daftar  |  Ya  | 

Definisi skema untuk suatu langkah adalah sebagai berikut.


| Bidang | Deskripsi | Tipe | Diperlukan | Nilai default | 
| --- | --- | --- | --- | --- | 
| name | Nama yang ditentukan pengguna untuk langkah tersebut. | String |  |  | 
| tindakan | Kata kunci yang berkaitan dengan modul yang menjalankan langkah. | String |  |  | 
| timeoutSeconds |  Jumlah detik langkah berjalan sebelum gagal atau mencoba lagi.  Juga, mendukung -1 nilai, yang menunjukkan batas waktu tak terbatas. 0 dan nilai negatif lainnya tidak diperbolehkan.  | Bilangan Bulat |  Tidak  | 7.200 detik (120 menit) | 
| onFailure |  Menentukan apa yang harus dilakukan langkah jika terjadi kegagalan. Nilai yang valid adalah sebagai berikut:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-use-documents.html)  |  String  |  Tidak  | Batalkan | 
| maxAttempts | Jumlah maksimum upaya yang diizinkan sebelum gagal langkah. | Bilangan Bulat |  Tidak  | 1 | 
| masukan | Berisi parameter yang diperlukan oleh modul tindakan untuk menjalankan langkah. | Dikte |  Ya  |  | 

## Contoh dokumen
<a name="document-example"></a>

Contoh berikut menunjukkan dokumen AWSTOE komponen yang melakukan tugas untuk sistem operasi target.

------
#### [ Linux ]

**Contoh 1: Jalankan file biner kustom**  
Berikut ini adalah contoh dokumen yang men-download dan menjalankan file biner kustom pada instance Linux.

```
name: LinuxBin
description: Download and run a custom Linux binary file.
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: Download
        action: S3Download
        inputs:
          - source: s3://<replaceable>amzn-s3-demo-source-bucket</replaceable>/<replaceable>myapplication</replaceable>
            destination: /tmp/<replaceable>myapplication</replaceable>
      - name: Enable
        action: ExecuteBash
        onFailure: Continue
        inputs:
          commands:
            - 'chmod u+x {{ build.Download.inputs[0].destination }}'
      - name: Install
        action: ExecuteBinary
        onFailure: Continue
        inputs:
          path: '{{ build.Download.inputs[0].destination }}'
          arguments:
            - '--install'
      - name: Delete
        action: DeleteFile
        inputs:
          - path: '{{ build.Download.inputs[0].destination }}'
```

------
#### [ Windows ]

**Contoh 1: Instal pembaruan Windows**  
Berikut ini adalah contoh dokumen yang menginstal semua pembaruan Windows yang tersedia, menjalankan skrip konfigurasi, memvalidasi perubahan sebelum AMI dibuat, dan menguji perubahan setelah AMI dibuat.

```
name: RunConfig_UpdateWindows
description: 'This document will install all available Windows updates and run a config script. It will then validate the changes before an AMI is created. Then after AMI creation, it will test all the changes.'
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: DownloadConfigScript
        action: S3Download
        timeoutSeconds: 60
        onFailure: Abort
        maxAttempts: 3
        inputs:
          - source: 's3://customer-bucket/config.ps1'
            destination: 'C:\config.ps1'

      - name: RunConfigScript
        action: ExecutePowerShell
        timeoutSeconds: 120
        onFailure: Abort
        maxAttempts: 3
        inputs:
          file: '{{build.DownloadConfigScript.inputs[0].destination}}'

      - name: Cleanup
        action: DeleteFile
        onFailure: Abort
        maxAttempts: 3
        inputs:
          - path: '{{build.DownloadConfigScript.inputs[0].destination}}'

      - name: RebootAfterConfigApplied
        action: Reboot
        inputs:
          delaySeconds: 60

      - name: InstallWindowsUpdates
        action: UpdateOS

  - name: validate
    steps:
      - name: DownloadTestConfigScript
        action: S3Download
        timeoutSeconds: 60
        onFailure: Abort
        maxAttempts: 3
        inputs:
          - source: 's3://customer-bucket/testConfig.ps1'
            destination: 'C:\testConfig.ps1'

      - name: ValidateConfigScript
        action: ExecutePowerShell
        timeoutSeconds: 120
        onFailure: Abort
        maxAttempts: 3
        inputs:
          file: '{{validate.DownloadTestConfigScript.inputs[0].destination}}'

      - name: Cleanup
        action: DeleteFile
        onFailure: Abort
        maxAttempts: 3
        inputs:
          - path: '{{validate.DownloadTestConfigScript.inputs[0].destination}}'

  - name: test
    steps:
      - name: DownloadTestConfigScript
        action: S3Download
        timeoutSeconds: 60
        onFailure: Abort
        maxAttempts: 3
        inputs:
          - source: 's3://customer-bucket/testConfig.ps1'
            destination: 'C:\testConfig.ps1'

      - name: ValidateConfigScript
        action: ExecutePowerShell
        timeoutSeconds: 120
        onFailure: Abort
        maxAttempts: 3
        inputs:
          file: '{{test.DownloadTestConfigScript.inputs[0].destination}}'
```

**Contoh 2: Instal AWS CLI pada instance Windows**  
Berikut ini adalah contoh dokumen yang menginstal AWS CLI pada instance Windows, menggunakan file setup.

```
name: InstallCLISetUp
description: Install &CLI; using the setup file
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: Download
        action: S3Download
        inputs:
          - source: s3://aws-cli/AWSCLISetup.exe
            destination: C:\Windows\temp\AWSCLISetup.exe
      - name: Install
        action: ExecuteBinary
        onFailure: Continue
        inputs:
          path: '{{ build.Download.inputs[0].destination }}'
          arguments:
            - '/install'
            - '/quiet'
            - '/norestart'
      - name: Delete
        action: DeleteFile
        inputs:
          - path: '{{ build.Download.inputs[0].destination }}'
```

**Contoh 3: Instal AWS CLI dengan installer MSI**  
Berikut ini adalah contoh dokumen yang menginstal AWS CLI dengan installer MSI.

```
name: InstallCLIMSI
description: Install &CLI; using the MSI installer
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: Download
        action: S3Download
        inputs:
          - source: s3://aws-cli/AWSCLI64PY3.msi
            destination: C:\Windows\temp\AWSCLI64PY3.msi
      - name: Install
        action: ExecuteBinary
        onFailure: Continue
        inputs:
          path: 'C:\Windows\System32\msiexec.exe'
          arguments:
            - '/i'
            - '{{ build.Download.inputs[0].destination }}'
            - '/quiet'
            - '/norestart'
      - name: Delete
        action: DeleteFile
        inputs:
          - path: '{{ build.Download.inputs[0].destination }}'
```

------
#### [ macOS ]

**Contoh 1: Jalankan file biner macOS kustom**  
Berikut ini adalah contoh dokumen yang mengunduh dan menjalankan file biner kustom pada instance macOS.

```
name: macOSBin
description: Download and run a binary file on macOS.
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: Download
        action: S3Download
        inputs:
          - source: s3://<replaceable>amzn-s3-demo-source-bucket</replaceable>/<replaceable>myapplication</replaceable>
            destination: /tmp/<replaceable>myapplication</replaceable>
      - name: Enable
        action: ExecuteBash
        onFailure: Continue
        inputs:
          commands:
            - 'chmod u+x {{ build.Download.inputs[0].destination }}'
      - name: Install
        action: ExecuteBinary
        onFailure: Continue
        inputs:
          path: '{{ build.Download.inputs[0].destination }}'
          arguments:
            - '--install'
      - name: Delete
        action: DeleteFile
        inputs:
          - path: '{{ build.Download.inputs[0].destination }}'
```

------

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

# Gunakan konstruksi bersyarat di AWSTOE
<a name="toe-conditional-constructs"></a>

Konstruksi bersyarat melakukan tindakan yang berbeda dalam dokumen komponen Anda berdasarkan apakah ekspresi kondisional yang ditentukan mengevaluasi atau. `true` `false` Anda dapat menggunakan `if` konstruksi untuk mengontrol aliran eksekusi dalam dokumen komponen Anda.

## jika Membangun
<a name="toe-conditional-if"></a>

Anda dapat menggunakan `if` konstruksi untuk mengevaluasi apakah suatu langkah harus dijalankan atau tidak. Secara default, ketika ekspresi `if` kondisional mengevaluasi`true`, AWSTOE menjalankan langkah, dan ketika kondisi dievaluasi`false`, AWSTOE lewati langkah. Jika sebuah langkah dilewati, itu diperlakukan sebagai langkah yang berhasil ketika AWSTOE mengevaluasi apakah fase dan dokumen berjalan dengan sukses.

**catatan**  
`if`Pernyataan hanya dievaluasi satu kali, bahkan jika langkah tersebut memicu restart. Jika sebuah langkah dimulai ulang, ia mengakui bahwa `if` pernyataan tersebut telah dievaluasi, dan berlanjut di mana ia berhenti.

### Sintaksis
<a name="toe-conditional-if-syntax"></a>

```
if:
  - <conditional expression>:
      [then: <step action>]
      [else: <step action>]
```


| Nama kunci | Diperlukan | Deskripsi | 
| --- | --- | --- | 
| ekspresi bersyarat | Ya |  Ekspresi kondisional dapat berisi persis salah satu jenis operator berikut di tingkat atas. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-conditional-constructs.html) Jika ekspresi Anda harus memenuhi beberapa kondisi, gunakan operator logis untuk menentukan kondisi Anda.  | 
| lalu | Tidak |  Mendefinisikan tindakan yang harus diambil jika ekspresi kondisional mengevaluasi. `true`  | 
| lain | Tidak |  Mendefinisikan tindakan yang harus diambil jika ekspresi kondisional mengevaluasi. `false`  | 
| langkah tindakan | Bersyarat |  Saat Anda menggunakan `then` atau`else`, Anda harus menentukan salah satu tindakan langkah berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-conditional-constructs.html)  | 

**Contoh 1: Instal paket**  
Contoh langkah berikut dari dokumen AWSTOE komponen menggunakan operator logis untuk menguji nilai parameter dan menjalankan perintah manajer paket yang sesuai untuk menginstal aplikasi jika paket di-unzip.

```
    - name: InstallUnzipAptGet
      action: ExecuteBash
      if:
        and:
            - binaryExists: 'apt-get'
            - not:
                binaryExists: 'unzip'
      inputs:
        commands:
            - sudo apt-get update
            - sudo apt-get install -y unzip

    - name: InstallUnzipYum
      action: ExecuteBash
      if:
        and:
            - binaryExists: 'yum'
            - not:
                binaryExists: 'unzip'
      inputs:
        commands:
            - sudo yum install -y unzip

    - name: InstallUnzipZypper
      action: ExecuteBash
      if:
        and:
            - binaryExists: 'zypper'
            - not:
                binaryExists: 'unzip'
      inputs:
        commands:
            - sudo zypper refresh
            - sudo zypper install -y unzip
```

**Contoh 2: Lewati satu langkah**  
Contoh berikut menunjukkan dua cara untuk melewati satu langkah. Satu menggunakan operator logis, dan satu menggunakan operator perbandingan dengan tindakan `Skip` langkah.

```
# Creates a file if it does not exist using not
- name: CreateMyConfigFile-1
  action: ExecuteBash
  if:
    not:
      fileExists: '/etc/my_config'
  inputs:
    commands:
      - echo "Hello world" > '/etc/my_config'

# Creates a file if it does not exist using then and else
- name: CreateMyConfigFile-2
  action: ExecuteBash
  if:
    fileExists: '/etc/my_config'
    then: Skip
    else: Execute
  inputs:
    commands:
      - echo "Hello world" > '/etc/my_config'
```

# Gunakan operator perbandingan dalam dokumen AWSTOE komponen
<a name="toe-comparison-operators"></a>

Anda dapat menggunakan operator perbandingan berikut dengan modul **[Menegaskan](toe-action-modules.md#action-modules-assertion)** tindakan dan dengan ekspresi bersyarat yang menggunakan. [jika MembangunSintaksis](toe-conditional-constructs.md#toe-conditional-if) Operator perbandingan dapat beroperasi pada satu nilai, misalnya`stringIsEmpty`, atau dapat membandingkan nilai dasar dengan nilai kedua (nilai variabel) untuk menentukan apakah ekspresi kondisional mengevaluasi atau. `true` `false`

Jika perbandingan beroperasi pada dua nilai, nilai kedua dapat berupa variabel rantai.

Saat membandingkan nilai dari jenis yang berbeda, konversi nilai berikut dapat terjadi sebelum perbandingan:
+ Untuk perbandingan numerik, jika nilai variabel adalah string, AWSTOE mengkonversi string ke angka sebelum evaluasi. Jika konversi tidak memungkinkan, perbandingan kembali`false`. Misalnya, jika nilai variabelnya`"1.0"`, konversi berfungsi, tetapi jika nilai variabelnya adalah `"a10"` konversi gagal.
+ Untuk perbandingan string, jika nilai variabel adalah angka, AWSTOE mengubahnya menjadi string sebelum evaluasi.

## Bandingkan string
<a name="toe-compare-strings"></a>

Operator perbandingan berikut bekerja dengan string untuk membandingkan nilai, untuk menguji spasi atau string kosong, atau untuk membandingkan nilai input dengan pola regex. Perbandingan string tidak peka huruf besar/kecil, dan tidak memangkas spasi dari awal atau akhir input string.

**Operator perbandingan string**
+ [stringIsEmpty](#stringIsEmpty)
+ [stringIsWhitespace](#stringIsWhitespace)
+ [stringEquals](#stringEquals)
+ [stringLessThan](#stringLessThan)
+ [stringLessThanEquals](#stringLessThanEquals)
+ [stringGreaterThan](#stringGreaterThan)
+ [stringGreaterThanEquals](#stringGreaterThanEquals)
+ [patternMatches](#patternMatches)

**stringIsEmpty**  
`stringIsEmpty`Operator kembali `true` jika string tertentu tidak mengandung karakter apapun. Contoh:  

```
# Evaluates to true
stringIsEmpty: ""

# Evaluates to false
stringIsEmpty: " "
				
# Evaluates to false
stringIsEmpty: "Hello."
```

**stringIsWhitespace**  
Tes jika string ditentukan untuk hanya `stringIsWhitespace` berisi spasi. Contoh:  

```
# Evaluates to true
stringIsWhitespace: "   "

# Evaluates to false
stringIsWhitespace: ""
				
# Evaluates to false
stringIsWhitespace: " Hello?"
```

**StringEquals**  
Tes jika string ditentukan untuk `stringEquals` adalah sama persis untuk string yang ditentukan dalam `value` parameter. Contoh:  

```
# Evaluates to true
stringEquals: 'Testing, testing...'
value: 'Testing, testing...'

# Evaluates to false
stringEquals: 'Testing, testing...'
value: 'Hello again.'

# Evaluates to false
stringEquals: 'Testing, testing...'
value: 'TESTING, TESTING....'

# Evaluates to false
stringEquals: 'Testing, testing...'
value: '   Testing, testing...'
				
# Evaluates to false
stringEquals: 'Testing, testing...'
value: 'Testing, testing...   '
```

**stringLessThan**  
Tes jika string yang `stringLessThan` ditentukan untuk kurang dari string yang ditentukan dalam `value` parameter. Contoh:  

```
# Evaluates to true
# This comparison operator isn't case sensitive
stringlessThan: 'A'
value: 'a'

# Evaluates to true - 'a' is less than 'b'
stringlessThan: 'b'
value: 'a'

# Evaluates to true
# Numeric strings compare as less than alphabetic strings
stringlessThan: 'a'
value: '0'

# Evaluates to false
stringlessThan: '0'
value: 'a'
```

**stringLessThanSama dengan**  
Tes jika string yang `stringLessThanEquals` ditentukan untuk kurang dari atau sama dengan string yang ditentukan dalam `value` parameter. Contoh:  

```
# Evaluates to true - 'a' is equal to 'a'
stringLessThanEquals: 'a'
value: 'a'

# Evaluates to true - since the comparison isn't case sensitive, 'a' is equal to 'A'
stringLessThanEquals: 'A'
value: 'a'

# Evaluates to true - 'a' is less than 'b'
stringLessThanEquals: 'b'
value: 'a'

# Evaluates to true - '0' is less than 'a'
stringLessThanEquals: 'a'
value: '0'

# Evaluates to false - 'a' is greater than '0'
stringLessThanEquals: '0'
value: 'a'
```

**stringGreaterThan**  
Tes jika string ditentukan untuk `stringGreaterThan` lebih besar dari string yang ditentukan dalam `value` parameter. Contoh:  

```
# Evaluates to false - since the comparison isn't case sensitive, 'A' is equal to 'a'
stringGreaterThan: 'a'
value: 'A'

# Evaluates to true - 'b' is greater than 'a'
stringGreaterThan: 'a'
value: 'b'

# Evaluates to true - 'a' is greater than '0'
stringGreaterThan: '0'
value: 'a'

# Evaluates to false - '0' is less than 'a'
stringGreaterThan: 'a'
value: '0'
```

**stringGreaterThanSama dengan**  
Tes jika string yang `stringGreaterThanEquals` ditentukan untuk lebih besar dari atau sama dengan string yang ditentukan dalam `value` parameter. Contoh:  

```
# Evaluates to true - 'a' is equal to 'A'
stringGreaterThanEquals: 'A'
value: 'a'

# Evaluates to true - 'b' is greater than 'a'
stringGreaterThanEquals: 'a'
value: 'b'

# Evaluates to true - 'a' is greater than '0'
stringGreaterThanEquals: '0'
value: 'a'

# Evaluates to false - '0' is less than 'a'
stringGreaterThanEquals: 'a'
value: '0'
```

**Pola Pertandingan**  
Menguji apakah string yang ditentukan dalam `value` parameter cocok dengan pola regex yang ditentukan untuk. `patternMatches` Perbandingan menggunakan [paket regexp Golang](https://pkg.go.dev/regexp), yang sesuai dengan sintaks. RE2 Untuk informasi selengkapnya tentang RE2 aturan, lihat repositori [google/re2](https://github.com/google/re2/wiki/Syntax) di. *GitHub*  
Contoh berikut menunjukkan kecocokan pola yang mengembalikan`true`:  

```
patternMatches: '^[a-z]+$'
value: 'ThisIsValue'
```

## Bandingkan angka
<a name="toe-compare-numbers"></a>

Operator perbandingan berikut bekerja dengan angka. Nilai yang diberikan untuk operator ini harus salah satu dari jenis berikut, sesuai dengan spesifikasi YAMAL. Support untuk perbandingan numerik menggunakan operator perbandingan paket besar golang, misalnya: [func](https://pkg.go.dev/math/big#Float.Cmp) (\$1Float) Cmp.
+ Bilangan Bulat
+ Float (berdasarkan float64, yang mendukung angka dari -1.7e\$1308 hingga\$11.7e\$1308)
+ String yang cocok dengan pola regex berikut: `^[-+]?([0-9]+[.])?[0-9]+$`

**Operator perbandingan angka**
+ [numberEquals](#numberEquals)
+ [numberLessThan](#numberLessThan)
+ [numberLessThanEquals](#numberLessThanEquals)
+ [numberGreaterThan](#numberGreaterThan)
+ [numberGreaterThanEquals](#numberGreaterThanEquals)

**NumberSama**  
Tes jika nomor yang `numberEquals` ditentukan untuk sama dengan angka yang ditentukan dalam `value` parameter. Semua contoh perbandingan berikut kembali: `true`  

```
# Values provided as a positive number
numberEquals: 1
value: 1

# Comparison value provided as a string
numberEquals: '1'
value: 1

# Value provided as a string
numberEquals: 1
value: '1'

# Values provided as floats
numberEquals: 5.0
value: 5.0

# Values provided as a negative number
numberEquals: -1
value: -1
```

**numberLessThan**  
Tes jika nomor yang `numberLessThan` ditentukan untuk kurang dari angka yang ditentukan dalam `value` parameter. Contoh:  

```
# Evaluates to true
numberLessThan: 2
value: 1

# Evaluates to true
numberLessThan: 2
value: 1.9

# Evaluates to false
numberLessThan: 2
value: '2'
```

**numberLessThanSama dengan**  
Tes jika angka yang `numberLessThanEquals` ditentukan untuk kurang dari atau sama dengan angka yang ditentukan dalam `value` parameter. Contoh:  

```
# Evaluates to true
numberLessThanEquals: 2
value: 1

# Evaluates to true
numberLessThanEquals: 2
value: 1.9

# Evaluates to true
numberLessThanEquals: 2
value: '2'

# Evaluates to false
numberLessThanEquals: 2
value: 2.1
```

**numberGreaterThan**  
Tes jika angka yang `numberGreaterThan` ditentukan untuk lebih besar dari angka yang ditentukan dalam `value` parameter. Contoh:  

```
# Evaluates to true
numberGreaterThan: 1
value: 2

# Evaluates to true
numberGreaterThan: 1
value: 1.1

# Evaluates to false
numberGreaterThan: 1
value: '1'
```

**numberGreaterThanSama dengan**  
Tes jika angka yang `numberGreaterThanEquals` ditentukan untuk lebih besar dari atau sama dengan angka yang ditentukan dalam `value` parameter. Contoh:  

```
# Evaluates to true
numberGreaterThanEquals: 1
value: 2

# Evaluates to true
numberGreaterThanEquals: 1
value: 1.1

# Evaluates to true
numberGreaterThanEquals: 1
value: '1'

# Evaluates to false
numberGreaterThanEquals: 1
value: 0.8
```

## Periksa file
<a name="toe-check-files"></a>

Operator perbandingan berikut memeriksa hash file atau memeriksa apakah ada file atau folder.

**Operator file dan folder**
+ [binaryExists](#binaryExists)
+ [fileExists](#fileExists)
+ [folderExists](#folderExists)
+ [fileMD5Equals](#fileMD5Equals)
+ [fileSHA1Equals](#fileSHA1Equals)
+ [fileSHA256Equals](#fileSHA256Equals)
+ [fileSHA512Equals](#fileSHA512Equals)

**BinaryExists**  
Menguji apakah aplikasi tersedia di jalur saat ini. Contoh:  

```
binaryExists: 'foo'
```
Pada sistem Linux dan macOS, untuk aplikasi bernama*foo*, ini bekerja sama dengan perintah bash berikut:**type *foo* >/dev/null 2>&1**, di mana **\$1? == 0** menunjukkan perbandingan yang berhasil.  
Pada sistem Windows, untuk aplikasi bernama*foo*, ini berfungsi sama dengan PowerShell perintah di **& C:\$1Windows\$1System32\$1where.exe /Q *foo*** mana **\$1LASTEXITCODE = 0** menunjukkan perbandingan yang berhasil.

**FileExists**  
Menguji apakah file ada di jalur yang ditentukan. Anda dapat memberikan jalur absolut atau relatif. Jika lokasi yang Anda tentukan ada dan merupakan file, perbandingan akan dievaluasi. `true` Contoh:  

```
fileExists: '/path/to/file'
```
Pada sistem Linux dan macOS, ini bekerja sama dengan perintah bash berikut:**-d */path/to/file***, di mana **\$1? == 0** menunjukkan perbandingan yang berhasil.  
Pada sistem Windows, ini bekerja sama dengan PowerShell perintah**Test-Path -Path '*C:\$1path\$1to\$1file*' -PathType 'Leaf'**.

**FolderExists**  
Menguji apakah folder ada di jalur yang ditentukan. Anda dapat memberikan jalur absolut atau relatif. Jika lokasi yang Anda tentukan ada dan merupakan folder, perbandingan akan dievaluasi. `true` Contoh:  

```
folderExists: '/path/to/folder'
```
Pada sistem Linux dan macOS, ini bekerja sama dengan perintah bash berikut:**-d */path/to/folder***, di mana **\$1? == 0** menunjukkan perbandingan yang berhasil.  
Pada sistem Windows, ini bekerja sama dengan PowerShell perintah**Test-Path -Path '*C:\$1path\$1to\$1folder*' -PathType 'Container'**.

**Berkas MD5 Sama**  
Menguji apakah MD5 hash file sama dengan nilai tertentu. Contoh:  

```
fileMD5Equals: '<MD5Hash>'
path: '/path/to/file'
```

**Berkas SHA1 Sama**  
Menguji apakah SHA1 hash file sama dengan nilai tertentu. Contoh:  

```
fileSHA1Equals: '<SHA1Hash>'
path: '/path/to/file'
```

**Berkas SHA256 Sama**  
Menguji apakah SHA256 hash file sama dengan nilai tertentu. Contoh:  

```
fileSHA256Equals: '<SHA256Hash>'
path: '/path/to/file'
```

**Berkas SHA512 Sama**  
Menguji apakah SHA512 hash file sama dengan nilai tertentu. Contoh:  

```
fileSHA512Equals: '<SHA512Hash>'
path: '/path/to/file'
```

# Gunakan operator logis dalam dokumen AWSTOE komponen
<a name="toe-logical-operators"></a>

Anda dapat menggunakan operator logika berikut untuk menambahkan atau memodifikasi ekspresi bersyarat dalam dokumen komponen Anda. AWSTOE mengevaluasi ekspresi bersyarat dalam urutan kondisi yang ditentukan. Untuk informasi selengkapnya tentang operator perbandingan untuk dokumen komponen, lihat[Gunakan operator perbandingan dalam dokumen AWSTOE komponen](toe-comparison-operators.md).

**dan**  
Dengan `and` operator, Anda dapat mengevaluasi dua atau lebih perbandingan sebagai ekspresi tunggal. Ekspresi mengevaluasi `true` kapan semua kondisi dalam daftar benar. Jika tidak, ekspresi mengevaluasi. `false`  
**Contoh:**  
Contoh berikut melakukan dua perbandingan - string dan angka. Kedua perbandingan itu benar, sehingga ekspresi dievaluasi menjadi benar.

```
and:
  - stringEquals: 'test_string'
    value: 'test_string'
  - numberEquals: 1
    value: 1
```
Contoh berikut juga melakukan dua perbandingan. Perbandingan pertama salah, di mana evaluasi berhenti dan perbandingan kedua dilewati. Ekspresi mengevaluasi. `false`  

```
and:
  - stringEquals: 'test_string'
    value: 'Hello world!'
  - numberEquals: 1
    value: 1
```

**atau**  
Dengan `or` operator, Anda dapat mengevaluasi dua atau lebih perbandingan sebagai ekspresi tunggal. Ekspresi mengevaluasi `true` kapan salah satu perbandingan yang ditentukan benar. Jika tidak ada perbandingan yang ditentukan yang dievaluasi`true`, ekspresi mengevaluasi. `false`  
**Contoh:**  
Contoh berikut melakukan dua perbandingan - string dan angka. Perbandingan pertama benar, sehingga ekspresi dievaluasi `true` dan perbandingan kedua dilewati.

```
or:
  - stringEquals: 'test_string'
    value: 'test_string'
  - numberEquals: 1
    value: 3
```
Contoh berikut juga melakukan dua perbandingan. Perbandingan pertama salah, dan evaluasi berlanjut. Perbandingan kedua benar, sehingga ekspresi mengevaluasi. `true`  

```
or:
  - stringEquals: 'test_string'
    value: 'Hello world!'
  - numberEquals: 1
    value: 1
```
Dalam contoh terakhir, kedua perbandingan itu salah, sehingga ekspresi dievaluasi. `false`  

```
or:
  - stringEquals: 'test_string'
    value: 'Hello world!'
  - numberEquals: 1
    value: 3
```

**tidak**  
Dengan `not` operator, Anda dapat meniadakan satu perbandingan. Ekspresi mengevaluasi `true` apakah perbandingannya salah. Jika perbandingannya benar, maka ekspresi dievaluasi. `false`  
**Contoh:**  
Contoh berikut melakukan perbandingan string. Perbandingannya salah, sehingga ekspresi mengevaluasi`true`.

```
not:
  - stringEquals: 'test_string'
    value: 'Hello world!'
```
Contoh berikut juga melakukan perbandingan string. Perbandingannya benar, sehingga ekspresi mengevaluasi`false`.  

```
not:
  - stringEquals: 'test_string'
    value: 'test_string'
```

# Gunakan konstruksi perulangan di AWSTOE
<a name="toe-looping-constructs"></a>

Bagian ini memberikan informasi untuk membantu Anda membuat konstruksi perulangan di. AWSTOE Konstruksi perulangan mendefinisikan urutan instruksi yang berulang. Anda dapat menggunakan jenis konstruksi perulangan berikut di: AWSTOE
+ `for`konstruksi - Iterasi atas urutan bilangan bulat yang dibatasi.
+ `forEach`membangun
  + `forEach`loop dengan daftar masukan - Iterasi atas kumpulan string yang terbatas. 
  + `forEach`loop dengan daftar terbatas - Iterasi di atas kumpulan string terbatas yang bergabung dengan pembatas.

**catatan**  
Konstruksi perulangan hanya mendukung tipe data string.

**Topics**
+ [Variabel iterasi referensi](#toe-loop-iteration-variables)
+ [Jenis konstruksi perulangan](#toe-loop-types)
+ [Bidang langkah](#toe-loop-step-fields)
+ [Output langkah dan iterasi](#toe-loop-step-output)

## Variabel iterasi referensi
<a name="toe-loop-iteration-variables"></a>

Untuk merujuk pada indeks dan nilai variabel iterasi saat ini, ekspresi referensi `{{ loop.* }}` harus digunakan dalam badan input dari langkah yang berisi konstruksi perulangan. Ekspresi ini tidak dapat digunakan untuk merujuk ke variabel iterasi dari konstruksi perulangan dari langkah lain.

Ekspresi referensi terdiri dari anggota berikut:
+ `{{ loop.index }}`— Posisi ordinal dari iterasi saat ini, yang diindeks di. `0` 
+ `{{ loop.value }}`— Nilai yang terkait dengan variabel iterasi saat ini. 

### Nama loop
<a name="toe-loop-iteration-variables-names"></a>

 Semua konstruksi perulangan memiliki bidang nama opsional untuk identifikasi. Jika nama loop disediakan, dapat digunakan untuk merujuk ke variabel iterasi di badan input langkah. Untuk merujuk pada indeks iterasi dan nilai loop bernama, gunakan `{{ <loop_name>.* }}` dengan `{{ loop.* }}` di badan input langkah. Ekspresi ini tidak dapat digunakan untuk merujuk pada konstruksi perulangan bernama dari langkah lain. 

Ekspresi referensi terdiri dari anggota berikut:
+ `{{ <loop_name>.index }}`— Posisi ordinal dari iterasi saat ini dari loop bernama, yang diindeks di. `0`
+ `{{ <loop_name>.value }}`— Nilai yang terkait dengan variabel iterasi saat ini dari loop bernama.

### Selesaikan ekspresi referensi
<a name="toe-loop-iteration-variables-expressions"></a>

 AWSTOE Mengatasi ekspresi referensi sebagai berikut: 
+ `{{ <loop_name>.* }}`— AWSTOE menyelesaikan ekspresi ini menggunakan logika berikut:
  + Jika loop dari langkah yang sedang berjalan cocok dengan `<loop_name>` nilainya, maka ekspresi referensi menyelesaikan konstruksi perulangan dari langkah yang sedang berjalan.
  + `<loop_name>`menyelesaikan ke konstruksi perulangan bernama jika muncul dalam langkah yang sedang berjalan.
+ `{{ loop.* }}`— AWSTOE menyelesaikan ekspresi menggunakan konstruksi perulangan yang ditentukan dalam langkah yang sedang berjalan.

Jika ekspresi referensi digunakan dalam langkah yang tidak mengandung loop, maka AWSTOE tidak menyelesaikan ekspresi dan mereka muncul di langkah tanpa penggantian. 

**catatan**  
Ekspresi referensi harus diapit tanda kutip ganda untuk ditafsirkan dengan benar oleh kompiler YAMAL.

## Jenis konstruksi perulangan
<a name="toe-loop-types"></a>

Bagian ini memberikan informasi dan contoh tentang jenis konstruksi perulangan yang dapat digunakan dalam. AWSTOE

**Topics**
+ [`for`lingkaran](#toe-loop-types-for)
+ [`forEach`loop dengan daftar input](#toe-loop-types-foreach)
+ [`forEach`loop dengan daftar terbatas](#toe-loop-types-foreach-delimited)

### `for`lingkaran
<a name="toe-loop-types-for"></a>

`for`Loop iterasi pada rentang bilangan bulat yang ditentukan dalam batas yang diuraikan oleh awal dan akhir variabel. Nilai iterasi ada di set `[start, end]` dan termasuk nilai batas.

AWSTOE memverifikasi`start`,`end`, dan `updateBy` nilai untuk memastikan bahwa kombinasi tidak menghasilkan loop tak terbatas.

`for`skema lingkaran

```
  - name: "StepName"
    action: "ActionModule"
    loop:
      name: "string"
      for:
        start: int
        end: int
        updateBy: int
inputs:
  ...
```


**`for`masukan loop**  

| Bidang | Deskripsi | Tipe | Diperlukan | Default | 
| --- | --- | --- | --- | --- | 
|  `name`  | Nama unik dari loop. Itu harus unik dibandingkan dengan nama loop lain dalam fase yang sama. |  String  |  Tidak  |  ""  | 
|  `start`  | Nilai awal iterasi. Tidak menerima ekspresi rantai.  |  Bilangan Bulat  |  Ya  |  T/A  | 
| `end` | Nilai akhir iterasi. Tidak menerima ekspresi rantai.  | Bilangan Bulat | Ya | T/A | 
| `updateBy` | Perbedaan dimana nilai iterasi diperbarui melalui penambahan. Itu harus nilai negatif atau positif bukan nol. Tidak menerima ekspresi rantai.  | Bilangan Bulat | Ya | T/A | 

`for`contoh masukan loop

```
  - name: "CalculateFileUploadLatencies"
    action: "ExecutePowerShell"
    loop:
      for:
        start: 100000
        end: 1000000
        updateBy: 100000
    inputs:
      commands:
        - |
          $f = new-object System.IO.FileStream c:\temp\test{{ loop.index }}.txt, Create, ReadWrite
          $f.SetLength({{ loop.value }}MB)
          $f.Close()
        - c:\users\administrator\downloads\latencyTest.exe --file c:\temp\test{{ loop.index }}.txt
        - AWS s3 cp c:\users\administrator\downloads\latencyMetrics.json s3://bucket/latencyMetrics.json
        - |
          Remove-Item -Path c:\temp\test{{ loop.index }}.txt
          Remove-Item -Path c:\users\administrator\downloads\latencyMetrics.json
```

### `forEach`loop dengan daftar input
<a name="toe-loop-types-foreach"></a>

`forEach`Loop iterasi pada daftar eksplisit nilai, yang dapat berupa string dan ekspresi dirantai. 

`forEach`loop dengan skema daftar masukan

```
  - name: "StepName"
    action: "ActionModule"
    loop:
      name: "string"
      forEach:
        - "string"
    inputs:
  ...
```


**`forEach`loop dengan masukan daftar masukan**  

| Bidang | Deskripsi | Tipe | Diperlukan | Default | 
| --- | --- | --- | --- | --- | 
|  `name`  | Nama unik dari loop. Itu harus unik dibandingkan dengan nama loop lain dalam fase yang sama. |  String  |  Tidak  |  ""  | 
|  Daftar string loop `forEach`  |  Daftar string untuk iterasi. Menerima ekspresi berantai sebagai string dalam daftar. Ekspresi berantai harus diapit oleh tanda kutip ganda agar kompiler YAMAL dapat menafsirkannya dengan benar.  |  Daftar string  |  Ya  |  T/A  | 

`forEach`loop dengan contoh daftar masukan 1

```
  - name: "ExecuteCustomScripts"
    action: "ExecuteBash"
    loop:
      name: BatchExecLoop
      forEach:
        - /tmp/script1.sh
        - /tmp/script2.sh
        - /tmp/script3.sh
    inputs:
      commands:
        - echo "Count {{ BatchExecLoop.index }}"
        - sh "{{ loop.value }}"
        - |
          retVal=$?
          if [ $retVal -ne 0 ]; then
            echo "Failed"
          else
            echo "Passed"
         fi
```

`forEach`loop dengan contoh daftar masukan 2

```
  - name: "RunMSIWithDifferentArgs"
    action: "ExecuteBinary"
    loop:
      name: MultiArgLoop
      forEach:
        - "ARG1=C:\Users ARG2=1"
        - "ARG1=C:\Users"
        - "ARG1=C:\Users ARG3=C:\Users\Administrator\Documents\f1.txt"
    inputs:
      commands:
        path: "c:\users\administrator\downloads\runner.exe"
        args:
          - "{{ MultiArgLoop.value }}"
```

`forEach`loop dengan contoh daftar masukan 3

```
  - name: "DownloadAllBinaries"
    action: "S3Download"
    loop:
      name: MultiArgLoop
      forEach:
        - "bin1.exe"
        - "bin10.exe"
        - "bin5.exe"
    inputs:
      - source: "s3://bucket/{{ loop.value }}"
        destination: "c:\temp\{{ loop.value }}"
```

### `forEach`loop dengan daftar terbatas
<a name="toe-loop-types-foreach-delimited"></a>

Loop iterasi atas string yang berisi nilai-nilai yang dipisahkan oleh pembatas. Untuk mengulangi konstituen string, AWSTOE gunakan pembatas untuk membagi string menjadi array yang cocok untuk iterasi. 

`forEach`loop dengan skema daftar yang dibatasi

```
  - name: "StepName"
    action: "ActionModule"
    loop:
      name: "string"
      forEach:
        list: "string"
        delimiter: ".,;:\n\t -_"
    inputs:
  ...
```


**`forEach`loop dengan input daftar yang dibatasi**  

| Bidang | Deskripsi | Tipe | Diperlukan | Default | 
| --- | --- | --- | --- | --- | 
|  `name`  | Nama unik yang diberikan ke loop. Ini harus unik jika dibandingkan dengan nama loop lain dalam fase yang sama. |  String  |  Tidak  |  ""  | 
|  `list`  | String yang terdiri dari string konstituen bergabung dengan karakter pembatas umum. Juga menerima ekspresi dirantai. Dalam kasus ekspresi berantai, pastikan bahwa ekspresi tersebut diapit oleh tanda kutip ganda untuk interpretasi yang benar oleh kompiler YAMAL. | Tali |  Ya  |  T/A  | 
| `delimiter` | Karakter yang digunakan untuk memisahkan string dalam blok. Default adalah karakter koma. Hanya satu karakter pembatas yang diizinkan dari daftar yang diberikan: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-looping-constructs.html) Ekspresi rantai tidak dapat digunakan. | String | Tidak | Koma: "," | 

**catatan**  
Nilai diperlakukan sebagai `list` string yang tidak dapat diubah. Jika sumber `list` diubah selama runtime, itu tidak akan tercermin selama menjalankan.

`forEach`loop dengan daftar yang dibatasi contoh 1

Contoh ini menggunakan pola ekspresi rantai berikut untuk merujuk ke output langkah lain:`<phase_name>.<step_name>.[inputs | outputs].<var_name>`.

```
  - name: "RunMSIs"
    action: "ExecuteBinary"
    loop:
      forEach:
        list: "{{ build.GetAllMSIPathsForInstallation.outputs.stdout }}"
        delimiter: "\n"
    inputs:
      commands:
        path: "{{ loop.value }}"
```

`forEach`loop dengan contoh daftar terbatas 2

```
  - name: "UploadMetricFiles"
    action: "S3Upload"
    loop:
      forEach:
        list: "/tmp/m1.txt,/tmp/m2.txt,/tmp/m3.txt,..."
    inputs:
      commands:
        - source: "{{ loop.value }}"
          destination: "s3://bucket/key/{{ loop.value }}"
```

## Bidang langkah
<a name="toe-loop-step-fields"></a>

Loop adalah bagian dari langkah. Bidang apa pun yang terkait dengan menjalankan langkah tidak diterapkan pada iterasi individu. Bidang langkah hanya berlaku pada tingkat langkah, sebagai berikut:
+ *TimeoutSeconds* - Semua iterasi loop harus dijalankan dalam jangka waktu yang ditentukan oleh bidang ini. Jika loop AWSTOE habis waktu, jalankan kebijakan coba lagi langkah tersebut dan setel ulang parameter batas waktu untuk setiap upaya baru. Jika loop run melebihi nilai batas waktu setelah mencapai jumlah maksimum percobaan ulang, pesan kegagalan langkah menyatakan bahwa loop run telah habis waktunya. 
+ *OnFailure* - Penanganan kegagalan diterapkan pada langkah sebagai berikut:
  + Jika *onFailure* disetel ke`Abort`, AWSTOE keluar dari loop dan mencoba ulang langkah sesuai dengan kebijakan coba lagi. Setelah jumlah maksimum percobaan ulang, AWSTOE tandai langkah saat ini sebagai gagal, dan berhenti menjalankan proses.

    AWSTOE menetapkan kode status untuk fase induk dan dokumen ke`Failed`.
**catatan**  
Tidak ada langkah lebih lanjut yang berjalan setelah langkah gagal.
  + Jika *onFailure* disetel ke`Continue`, AWSTOE keluar dari loop dan mencoba ulang langkah sesuai dengan kebijakan coba lagi. Setelah jumlah maksimum percobaan ulang, AWSTOE tandai langkah saat ini sebagai gagal, dan lanjutkan untuk menjalankan langkah berikutnya.

    AWSTOE menetapkan kode status untuk fase induk dan dokumen ke`Failed`.
  + Jika *onFailure* disetel ke`Ignore`, AWSTOE keluar dari loop dan mencoba ulang langkah sesuai dengan kebijakan coba lagi. Setelah jumlah maksimum percobaan ulang, AWSTOE tandai langkah saat ini sebagai`IgnoredFailure`, dan lanjutkan untuk menjalankan langkah berikutnya.

    AWSTOE menetapkan kode status untuk fase induk dan dokumen ke`SuccessWithIgnoredFailure`.
**catatan**  
Ini masih dianggap sebagai proses yang berhasil, tetapi termasuk informasi untuk memberi tahu Anda bahwa satu atau lebih langkah gagal dan diabaikan.
+ *MaxAttracts — Untuk setiap percobaan* ulang, seluruh langkah dan semua iterasi dijalankan dari awal.
+ *status* — Status keseluruhan dari menjalankan langkah. `status`tidak mewakili status iterasi individu. Status langkah dengan loop ditentukan sebagai berikut:
  + Jika iterasi tunggal gagal dijalankan, status langkah menunjuk ke kegagalan.
  + Jika semua iterasi berhasil, status langkah menunjukkan kesuksesan.
+ *StartTime* — Waktu mulai keseluruhan dari menjalankan langkah. Tidak mewakili waktu mulai iterasi individu.
+ *EndTime* — Waktu akhir keseluruhan dari menjalankan langkah. Tidak mewakili waktu akhir iterasi individu.
+ *FailureMessage* — Termasuk indeks iterasi yang gagal jika terjadi kesalahan non-timeout. Jika terjadi kesalahan batas waktu, pesan menyatakan bahwa loop run telah gagal. Pesan kesalahan individual untuk setiap iterasi tidak disediakan untuk meminimalkan ukuran pesan kegagalan.

## Output langkah dan iterasi
<a name="toe-loop-step-output"></a>

Setiap iterasi berisi output. Pada akhir loop run, AWSTOE mengkonsolidasikan semua output iterasi yang berhasil di. `detailedOutput.json` Output konsolidasi adalah pengumpulan nilai yang termasuk dalam kunci output yang sesuai seperti yang didefinisikan dalam skema output modul tindakan. Contoh berikut menunjukkan bagaimana output dikonsolidasikan:

**Output dari `ExecuteBash` untuk Iterasi 1**

```
{
	"stdout":"Hello"
}
```

**Output dari `ExecuteBash` untuk Iterasi 2**

```
{
	"stdout":"World"
}
```

**Output dari `ExecuteBash` untuk Langkah**

```
{
	"stdout":"Hello\nWorld"
}
```

Misalnya,, `ExecuteBash``ExecutePowerShell`, dan `ExecuteBinary` merupakan modul tindakan yang kembali `STDOUT` sebagai output modul tindakan. `STDOUT`pesan digabungkan dengan karakter baris baru untuk menghasilkan output keseluruhan dari langkah masuk`detailedOutput.json`.

AWSTOE tidak akan mengkonsolidasikan output dari iterasi yang gagal.

# Modul aksi yang didukung oleh manajer AWSTOE komponen
<a name="toe-action-modules"></a>

Layanan pembuatan gambar, seperti EC2 Image Builder, AWSTOE menggunakan modul tindakan untuk membantu mengonfigurasi instans EC2 yang digunakan untuk membangun dan menguji gambar mesin yang disesuaikan. Bagian ini menjelaskan fitur modul AWSTOE tindakan yang umum digunakan, dan cara mengonfigurasinya, termasuk contoh.

Komponen ditulis dengan dokumen YAMM plaintext. Untuk informasi selengkapnya tentang sintaks dokumen, lihat[Gunakan kerangka dokumen AWSTOE komponen untuk komponen kustom](toe-use-documents.md).

**catatan**  
Semua modul tindakan menggunakan akun yang sama dengan agen Systems Manager saat dijalankan, yang ada `root` di Linux, dan `NT Authority\SYSTEM` di Windows.

Referensi silang berikut mengkategorikan modul tindakan berdasarkan jenis tindakan yang mereka lakukan.

 

**Eksekusi umum**
+ [Menegaskan (Linux, Windows, macOS)](#action-modules-assertion)
+ [ExecuteBash (Linux, macOS)](#action-modules-executebash)
+ [ExecuteBinary (Linux, Windows, macOS)](#action-modules-executebinary)
+ [ExecuteDocument (Linux, Windows, macOS)](#action-modules-executedocument)
+ [ExecutePowerShell (Jendela)](#action-modules-executepowershell)

 

**Unduh dan unggah file**
+ [S3Unduh (Linux, Windows, macOS)](#action-modules-s3download)
+ [S3Unggah (Linux, Windows, macOS)](#action-modules-s3upload)
+ [WebDownload (Linux, Windows, macOS)](#action-modules-webdownload)

 

**Operasi sistem file**
+ [AppendFile (Linux, Windows, macOS)](#action-modules-appendfile)
+ [CopyFile (Linux, Windows, macOS)](#action-modules-copyfile)
+ [CopyFolder (Linux, Windows, macOS)](#action-modules-copyfolder)
+ [CreateFile (Linux, Windows, macOS)](#action-modules-createfile)
+ [CreateFolder (Linux, Windows, macOS)](#action-modules-createfolder)
+ [CreateSymlink (Linux, Windows, macOS)](#action-modules-createsymlink)
+ [DeleteFile (Linux, Windows, macOS)](#action-modules-deletefile)
+ [DeleteFolder (Linux, Windows, macOS)](#action-modules-deletefolder)
+ [ListFiles (Linux, Windows, macOS)](#action-modules-listfiles)
+ [MoveFile (Linux, Windows, macOS)](#action-modules-movefile)
+ [MoveFolder (Linux, Windows, macOS)](#action-modules-movefolder)
+ [ReadFile (Linux, Windows, macOS)](#action-modules-readfile)
+ [SetFileEncoding (Linux, Windows, macOS)](#action-modules-setfileencoding)
+ [SetFileOwner (Linux, Windows, macOS)](#action-modules-setfileowner)
+ [SetFolderOwner (Linux, Windows, macOS)](#action-modules-setfolderowner)
+ [SetFilePermissions (Linux, Windows, macOS)](#action-modules-setfilepermissions)
+ [SetFolderPermissions (Linux, Windows, macOS)](#action-modules-setfolderpermissions)

 

**Tindakan instalasi perangkat lunak**
+ [InstallMSI (Windows)](#action-modules-install-msi)
+ [UninstallMSI (Windows)](#action-modules-uninstall-msi)

 

**Tindakan sistem**
+ [Reboot (Linux, Windows)](#action-modules-reboot)
+ [SetRegistry (Jendela)](#action-modules-setregistry)
+ [UpdateOS (Linux, Windows)](#action-modules-updateos)

## Modul eksekusi umum
<a name="action-modules-general-execution"></a>

Bagian berikut berisi rincian untuk modul tindakan yang menjalankan perintah dan mengontrol alur kerja eksekusi.

**Topics**
+ [Menegaskan (Linux, Windows, macOS)](#action-modules-assertion)
+ [ExecuteBash (Linux, macOS)](#action-modules-executebash)
+ [ExecuteBinary (Linux, Windows, macOS)](#action-modules-executebinary)
+ [ExecuteDocument (Linux, Windows, macOS)](#action-modules-executedocument)
+ [ExecutePowerShell (Jendela)](#action-modules-executepowershell)

### Menegaskan (Linux, Windows, macOS)
<a name="action-modules-assertion"></a>

Modul tindakan **Assert** melakukan perbandingan nilai menggunakan [Operator perbandingan](toe-comparison-operators.md) atau [Operator logis](toe-logical-operators.md) sebagai input. Hasil ekspresi operator (benar atau salah) menunjukkan status keberhasilan atau kegagalan keseluruhan untuk langkah tersebut.

Jika perbandingan atau ekspresi operator logis mengevaluasi`true`, langkah ditandai sebagai`Success`. Jika tidak, langkahnya ditandai sebagai`Failed`. Jika langkah gagal, `onFailure` parameter menentukan hasil dari langkah tersebut.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | 
| --- | --- | --- | --- | 
| input | Berisi perbandingan tunggal atau operator logis. Catatan, operator logika dapat berisi lebih dari satu operator perbandingan. | Ini adalah variabel, tergantung pada operator | Ya | 

**Contoh masukan: Perbandingan sederhana menggunakan operator `stringEquals` perbandingan**

Contoh ini mengevaluasi. `true`

```
- name: StringComparison
  action: Assert
  inputs:
    stringEquals: '2.1.1'
    value: '{{ validate.ApplicationVersion.outputs.stdout }}'
```

**Contoh masukan: Perbandingan Regex menggunakan operator perbandingan `patternMatches`**

Contoh-contoh ini semua mengevaluasi`true`.

```
- name: Letters only
  action: Assert
  inputs:
    patternMatches: '^[a-zA-Z]+$'
    value: 'ThisIsOnlyLetters'

- name: Letters and spaces only
  action: Assert
  inputs:
    patternMatches: '^[a-zA-Z\s]+$'
    value: 'This text contains spaces'
  
- name: Numbers only
  action: Assert
  inputs:
    patternMatches: '^[0-9]+$'
    value: '1234567890'
```

**Contoh masukan: Perbandingan bersarang dengan operator logis dan variabel berantai**

Contoh berikut menunjukkan perbandingan bersarang dengan operator logis yang menggunakan perbandingan dengan variabel berantai. `Assert`Mengevaluasi `true` apakah salah satu dari berikut ini benar:
+ Yang `ApplicationVersion` lebih besar dari `2.0` dan `CPUArchitecture` sama. `arm64`
+ Yang `CPUArchitecture` sama. `x86_64`

```
- name: NestedComparisons
  action: Assert
  inputs:
    or: # <- first level deep
      - and: # <- second level deep
          - numberGreaterThan: 2.0 # <- third level deep
            value: '{{ validate.ApplicationVersion.outputs.stdout }}'
          - stringEquals: 'arm64'
            value: '{{ validate.CPUArchitecture.outputs.stdout }}'
      - stringEquals: 'x86_64'
        value: '{{ validate.CPUArchitecture.outputs.stdout }}'
```

**Output:**

Output dari sebuah `Assert` adalah keberhasilan atau kegagalan langkah.

### ExecuteBash (Linux, macOS)
<a name="action-modules-executebash"></a>

Modul **ExecuteBash**aksi memungkinkan Anda menjalankan skrip bash dengan kode/perintah shell sebaris. Modul ini mendukung Linux. 

Semua perintah dan instruksi yang Anda tentukan di blok perintah diubah menjadi file (misalnya,`input.sh`) dan dijalankan dengan shell bash. Hasil menjalankan file shell adalah kode keluar dari langkah tersebut. 

**ExecuteBash**Modul menangani sistem restart jika skrip keluar dengan kode keluar dari. `194` Saat dimulai, aplikasi melakukan salah satu tindakan berikut:
+ Aplikasi menyerahkan kode keluar ke pemanggil jika dijalankan oleh Agen Systems Manager. Agen Systems Manager menangani reboot sistem dan menjalankan langkah yang sama yang memulai restart, seperti yang dijelaskan dalam [Memulai Ulang Instans Terkelola dari Skrip](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html).
+ Aplikasi menyimpan arus`executionstate`, mengonfigurasi pemicu restart untuk menjalankan kembali aplikasi, dan memulai ulang sistem.

Setelah sistem restart, aplikasi menjalankan langkah yang sama yang memulai restart. Jika Anda memerlukan fungsi ini, Anda harus menulis skrip idempoten yang dapat menangani beberapa pemanggilan dari perintah shell yang sama.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | 
| --- | --- | --- | --- | 
| commands | Berisi daftar instruksi atau perintah untuk dijalankan sesuai sintaks bash. YAML multi-baris diizinkan. | Daftar | Ya | 

**Contoh masukan: Sebelum dan sesudah reboot**

```
name: ExitCode194Example
description: This shows how the exit code can be used to restart a system with ExecuteBash
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: RestartTrigger
        action: ExecuteBash
        inputs:
          commands:
            - |
              REBOOT_INDICATOR=/var/tmp/reboot-indicator
              if [ -f "${REBOOT_INDICATOR}" ]; then
                echo 'The reboot file exists. Deleting it and exiting with success.'
                rm "${REBOOT_INDICATOR}"
                exit 0
              fi
              echo 'The reboot file does not exist. Creating it and triggering a restart.'
              touch "${REBOOT_INDICATOR}"
              exit 194
```


**Output**  

| Bidang | Deskripsi | Tipe | 
| --- | --- | --- | 
| stdout | Output standar eksekusi perintah. | string | 

Jika Anda memulai reboot dan mengembalikan kode keluar `194` sebagai bagian dari modul tindakan, build akan dilanjutkan pada langkah modul tindakan yang sama yang memulai reboot. Jika Anda memulai reboot tanpa kode keluar, proses pembuatan mungkin gagal.

**Contoh keluaran: Sebelum reboot (pertama kali melalui dokumen)**

```
{
	“stdout”: “The reboot file does not exist. Creating it and triggering a restart."
}
```

**Contoh keluaran: Setelah reboot, (kedua kalinya melalui dokumen)**

```
{
	“stdout”: “The reboot file exists. Deleting it and exiting with success."
}
```

### ExecuteBinary (Linux, Windows, macOS)
<a name="action-modules-executebinary"></a>

Modul **ExecuteBinary**tindakan memungkinkan Anda menjalankan file biner dengan daftar argumen baris perintah.

**ExecuteBinary**Modul ini menangani sistem restart jika file biner keluar dengan kode keluar dari `194` (Linux) atau `3010` (Windows). Ketika ini terjadi, aplikasi melakukan salah satu tindakan berikut:
+ Aplikasi menyerahkan kode keluar ke pemanggil jika dijalankan oleh Agen Systems Manager. Agen Systems Manager menangani memulai ulang sistem dan menjalankan langkah yang sama yang memulai restart, seperti yang dijelaskan dalam [Memulai Ulang Instans Terkelola dari Skrip](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html).
+ Aplikasi menyimpan arus`executionstate`, mengonfigurasi pemicu restart untuk menjalankan kembali aplikasi, dan memulai ulang sistem.

Setelah sistem restart, aplikasi menjalankan langkah yang sama yang memulai restart. Jika Anda memerlukan fungsi ini, Anda harus menulis skrip idempoten yang dapat menangani beberapa pemanggilan dari perintah shell yang sama.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | 
| --- | --- | --- | --- | 
| path | Path ke file biner untuk eksekusi. | Tali | Ya | 
| arguments | Berisi daftar argumen baris perintah untuk digunakan saat menjalankan biner. | Daftar String | Tidak | 

**Contoh masukan: instal .NET**

```
  - name: "InstallDotnet"
    action: ExecuteBinary
    inputs:
      path: C:\PathTo\dotnet_installer.exe
      arguments:
        - /qb
        - /norestart
```


**Output**  

| Bidang | Deskripsi | Tipe | 
| --- | --- | --- | 
| stdout | Output standar eksekusi perintah. | string | 

**Contoh keluaran**

```
{
	"stdout": "success"
}
```

### ExecuteDocument (Linux, Windows, macOS)
<a name="action-modules-executedocument"></a>

Modul **ExecuteDocument**tindakan menambahkan dukungan untuk dokumen komponen bersarang, menjalankan beberapa dokumen komponen dari satu dokumen. AWSTOE memvalidasi dokumen yang diteruskan dalam parameter input pada waktu berjalan.

**Pembatasan**
+ Modul tindakan ini berjalan satu kali, tanpa percobaan ulang yang diizinkan, dan tidak ada opsi untuk menetapkan batas waktu tunggu. **ExecuteDocument**menetapkan nilai default berikut, dan mengembalikan kesalahan jika Anda mencoba untuk mengubahnya.
  + `timeoutSeconds`: -1
  + `maxAttempts`: 1
**catatan**  
Anda dapat membiarkan nilai-nilai ini kosong, dan AWSTOE menggunakan nilai default.
+ Penyarangan dokumen diperbolehkan, hingga kedalaman tiga tingkat, tetapi tidak lebih dari itu. Tiga tingkat bersarang diterjemahkan ke empat tingkat dokumen, karena tingkat atas tidak bersarang. Dalam skenario ini, dokumen tingkat terendah tidak boleh memanggil dokumen lain.
+ Eksekusi siklik dokumen komponen tidak diperbolehkan. Setiap dokumen yang menyebut dirinya di luar konstruksi perulangan, atau yang memanggil dokumen lain yang lebih tinggi dalam rantai eksekusi saat ini, memulai siklus yang dapat menghasilkan loop tanpa akhir. Ketika AWSTOE mendeteksi eksekusi siklik, itu menghentikan eksekusi dan mencatat kegagalan.

![\[Pembatasan tingkat bersarang untuk modul ExecuteDocument tindakan.\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/images/toe-component-document-nesting.png)


Jika dokumen komponen mencoba menjalankannya sendiri, atau menjalankan salah satu dokumen komponen yang lebih tinggi dalam rantai eksekusi saat ini, eksekusi gagal.

**Masukan**


| Nama Kunci | Deskripsi | Tipe | Diperlukan | 
| --- | --- | --- | --- | 
| document |  Jalur dokumen komponen. Pilihan yang valid meliputi: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-action-modules.html)  | Tali | Ya | 
| document-s3-bucket-owner |  ID akun pemilik bucket S3 untuk bucket S3 tempat dokumen komponen disimpan. *(Disarankan jika Anda menggunakan S3 URIs dalam dokumen komponen Anda.)*  | String | Tidak | 
| phases |  Fase untuk dijalankan dalam dokumen komponen, dinyatakan sebagai daftar dipisahkan koma. Jika tidak ada fase yang ditentukan, maka semua fase berjalan.  | String | Tidak | 
| parameters |  Parameter masukan yang diteruskan ke dokumen komponen saat runtime sebagai pasangan nilai kunci.  | Daftar Peta Parameter | Tidak | 

**Masukan peta parameter**


| Nama Kunci | Deskripsi | Tipe | Diperlukan | 
| --- | --- | --- | --- | 
| name |  Nama parameter input untuk diteruskan ke dokumen komponen yang sedang dijalankan modul **ExecuteDocument**tindakan.  | Tali | Ya | 
| value |  Nilai parameter input.  | Tali | Ya | 

**Contoh masukan**  
Contoh berikut menunjukkan variasi input untuk dokumen komponen Anda, tergantung pada jalur instalasi Anda.

**Contoh masukan: Jalur dokumen lokal**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        inputs:
          document: Sample-1.yaml
          phases: build
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Contoh masukan: URI S3 sebagai jalur dokumen**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        inputs:
          document: s3://my-bucket/Sample-1.yaml
          document-s3-bucket-owner: 123456789012
          phases: build,validate
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Contoh masukan: Komponen EC2 Image Builder ARN sebagai jalur dokumen**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        inputs:
          document: arn:aws:imagebuilder:us-west-2:aws:component/Sample-Test/1.0.0
          phases: test
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Menggunakan ForEach loop untuk menjalankan dokumen**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        loop:
          name: 'myForEachLoop'
          forEach:
            - Sample-1.yaml
            - Sample-2.yaml
        inputs:
          document: "{{myForEachLoop.value}}"
          phases: test
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Menggunakan loop For untuk menjalankan dokumen**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        loop:
          name: 'myForLoop'
          for:
            start: 1
            end: 2
            updateBy: 1
        inputs:
          document: "Sample-{{myForLoop.value}}.yaml"
          phases: test
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Output**  
AWSTOE membuat file output yang disebut `detailedoutput.json` setiap kali dijalankan. File berisi rincian tentang setiap fase dan langkah dari setiap dokumen komponen yang dipanggil saat sedang berjalan. Untuk modul **ExecuteDocument**tindakan, Anda dapat menemukan ringkasan runtime singkat di `outputs` lapangan, dan detail tentang fase, langkah, dan dokumen yang dijalankan di`detailedOutput`.

```
{
	\"executedStepCount\":1,\"executionId\":\"97054e22-06cc-11ec-9b14-acde48001122\",\"failedStepCount\":0,\"failureMessage\":\"\",\"ignoredFailedStepCount\":0,\"logUrl\":\"\",\"status\":\"success\"
}",
```

Setiap objek ringkasan keluaran dokumen komponen berisi rincian berikut, seperti yang ditunjukkan di sini, dengan nilai sampel:
+ executedStepCount“:1
+ “ExecutionID” :"12345a67-89bc-01de-2f34-abcd56789012"
+ “failedStepCount“:0
+ “FailureMessage”: "”
+ “ignoredFailedStepHitung” :0
+ “logUrl”: "”
+ “status” :"sukses”

**Contoh keluaran**  
Contoh berikut menunjukkan output dari modul **ExecuteDocument**tindakan ketika eksekusi bersarang terjadi. Dalam contoh ini, dokumen `main.yaml` komponen berhasil menjalankan dokumen `Sample-1.yaml` komponen.

```
{
    "executionId": "12345a67-89bc-01de-2f34-abcd56789012",
    "status": "success",
    "startTime": "2021-08-26T17:20:31-07:00",
    "endTime": "2021-08-26T17:20:31-07:00",
    "failureMessage": "",
    "documents": [
        {
            "name": "",
            "filePath": "main.yaml",
            "status": "success",
            "description": "",
            "startTime": "2021-08-26T17:20:31-07:00",
            "endTime": "2021-08-26T17:20:31-07:00",
            "failureMessage": "",
            "phases": [
                {
                    "name": "build",
                    "status": "success",
                    "startTime": "2021-08-26T17:20:31-07:00",
                    "endTime": "2021-08-26T17:20:31-07:00",
                    "failureMessage": "",
                    "steps": [
                        {
                            "name": "ExecuteNestedDocument",
                            "status": "success",
                            "failureMessage": "",
                            "timeoutSeconds": -1,
                            "onFailure": "Abort",
                            "maxAttempts": 1,
                            "action": "ExecuteDocument",
                            "startTime": "2021-08-26T17:20:31-07:00",
                            "endTime": "2021-08-26T17:20:31-07:00",
                            "inputs": "[{\"document\":\"Sample-1.yaml\",\"document-s3-bucket-owner\":\"\",\"phases\":\"\",\"parameters\":null}]",
                            "outputs": "[{\"executedStepCount\":1,\"executionId\":\"98765f43-21ed-09cb-8a76-fedc54321098\",\"failedStepCount\":0,\"failureMessage\":\"\",\"ignoredFailedStepCount\":0,\"logUrl\":\"\",\"status\":\"success\"}]",
                            "loop": null,
                            "detailedOutput": [
                                {
                                    "executionId": "98765f43-21ed-09cb-8a76-fedc54321098",
                                    "status": "success",
                                    "startTime": "2021-08-26T17:20:31-07:00",
                                    "endTime": "2021-08-26T17:20:31-07:00",
                                    "failureMessage": "",
                                    "documents": [
                                        {
                                            "name": "",
                                            "filePath": "Sample-1.yaml",
                                            "status": "success",
                                            "description": "",
                                            "startTime": "2021-08-26T17:20:31-07:00",
                                            "endTime": "2021-08-26T17:20:31-07:00",
                                            "failureMessage": "",
                                            "phases": [
                                                {
                                                    "name": "build",
                                                    "status": "success",
                                                    "startTime": "2021-08-26T17:20:31-07:00",
                                                    "endTime": "2021-08-26T17:20:31-07:00",
                                                    "failureMessage": "",
                                                    "steps": [
                                                        {
                                                            "name": "ExecuteBashStep",
                                                            "status": "success",
                                                            "failureMessage": "",
                                                            "timeoutSeconds": 7200,
                                                            "onFailure": "Abort",
                                                            "maxAttempts": 1,
                                                            "action": "ExecuteBash",
                                                            "startTime": "2021-08-26T17:20:31-07:00",
                                                            "endTime": "2021-08-26T17:20:31-07:00",
                                                            "inputs": "[{\"commands\":[\"echo \\\"Hello World!\\\"\"]}]",
                                                            "outputs": "[{\"stdout\":\"Hello World!\"}]",
                                                            "loop": null,
                                                            "detailedOutput": null
                                                        }]
                                                }]
                                        }]
                                }]
                        }]
                
                }]
        }]
}
```

### ExecutePowerShell (Jendela)
<a name="action-modules-executepowershell"></a>

Modul **ExecutePowerShell**tindakan memungkinkan Anda menjalankan PowerShell skrip dengan kode/perintah shell sebaris. Modul ini mendukung platform Windows dan Windows PowerShell.

Semua yang commands/instructions ditentukan dalam blok perintah diubah menjadi file skrip (misalnya,`input.ps1`) dan dijalankan menggunakan WindowsPowerShell. Hasil menjalankan file shell adalah kode keluar.

**ExecutePowerShell**Modul menangani sistem restart jika perintah shell keluar dengan kode keluar dari. `3010` Saat dimulai, aplikasi melakukan salah satu tindakan berikut: 
+ Menyerahkan kode keluar ke pemanggil jika dijalankan oleh Agen Systems Manager. Agen Systems Manager menangani reboot sistem dan menjalankan langkah yang sama yang memulai restart, seperti yang dijelaskan dalam [Memulai Ulang Instans Terkelola dari Skrip](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html).
+ Menyimpan arus`executionstate`, mengonfigurasi pemicu restart untuk menjalankan kembali aplikasi, dan me-reboot sistem.

Setelah sistem restart, aplikasi menjalankan langkah yang sama yang memulai restart. Jika Anda memerlukan fungsi ini, Anda harus menulis skrip idempoten yang dapat menangani beberapa pemanggilan dari perintah shell yang sama.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | 
| --- | --- | --- | --- | 
| commands | Berisi daftar instruksi atau perintah untuk dijalankan sesuai PowerShell sintaks. YAML multi-baris diizinkan. | Daftar String | Ya. Harus menentukan `commands` atau`file`, tidak keduanya.  | 
| file | Berisi path ke file PowerShell script. PowerShell akan berjalan melawan file ini menggunakan argumen baris -file perintah. Jalur harus menunjuk ke .ps1 file. | String | Ya. Harus menentukan `commands` atau`file`, tidak keduanya.  | 

**Contoh masukan: Sebelum dan sesudah reboot**

```
name: ExitCode3010Example
description: This shows how the exit code can be used to restart a system with ExecutePowerShell
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: RestartTrigger
        action: ExecutePowerShell
        inputs:
          commands:
            - |
              $rebootIndicator = Join-Path -Path $env:SystemDrive -ChildPath 'reboot-indicator'
              if (Test-Path -Path $rebootIndicator) {
                Write-Host 'The reboot file exists. Deleting it and exiting with success.'
                Remove-Item -Path $rebootIndicator -Force | Out-Null
                [System.Environment]::Exit(0)
              }
              Write-Host 'The reboot file does not exist. Creating it and triggering a restart.'
              New-Item -Path $rebootIndicator -ItemType File | Out-Null
              [System.Environment]::Exit(3010)
```


**Output**  

| Bidang | Deskripsi | Tipe | 
| --- | --- | --- | 
| stdout | Output standar eksekusi perintah. | string | 

Jika Anda menjalankan reboot dan mengembalikan kode keluar `3010` sebagai bagian dari modul tindakan, build akan dilanjutkan pada langkah modul tindakan yang sama yang memulai reboot. Jika Anda menjalankan reboot tanpa kode keluar, proses build mungkin gagal.

**Contoh keluaran: Sebelum reboot (pertama kali melalui dokumen)**

```
{
	“stdout”: “The reboot file does not exist. Creating it and triggering a restart."
}
```

**Contoh keluaran: Setelah reboot, (kedua kalinya melalui dokumen)**

```
{
	“stdout”: “The reboot file exists. Deleting it and exiting with success."
}
```

## Modul unduhan dan unggah file
<a name="action-modules-download-upload"></a>

Bagian berikut berisi detail untuk modul tindakan yang mengunggah atau mengunduh file.

**Topics**
+ [S3Unduh (Linux, Windows, macOS)](#action-modules-s3download)
+ [S3Unggah (Linux, Windows, macOS)](#action-modules-s3upload)
+ [WebDownload (Linux, Windows, macOS)](#action-modules-webdownload)

### S3Unduh (Linux, Windows, macOS)
<a name="action-modules-s3download"></a>

Dengan modul `S3Download` tindakan, Anda dapat mengunduh objek Amazon S3, atau sekumpulan objek, ke file atau folder lokal yang Anda tentukan dengan jalur. `destination` Jika ada file yang sudah ada di lokasi yang ditentukan, dan `overwrite` bendera disetel ke true, `S3Download` timpa file tersebut.

`source`Lokasi Anda dapat menunjuk ke objek tertentu di Amazon S3, atau Anda dapat menggunakan key prefix dengan wildcard asterisk `*` () untuk mengunduh sekumpulan objek yang cocok dengan jalur awalan key. Saat Anda menentukan key prefix di `source` lokasi Anda, modul `S3Download` tindakan akan mengunduh semua yang cocok dengan awalan (termasuk file dan folder). Pastikan bahwa key prefix diakhiri dengan garis miring maju, diikuti dengan tanda bintang (`/*`), sehingga Anda mengunduh semua yang cocok dengan awalan. Sebagai contoh: `s3://my-bucket/my-folder/*`.

Jika `S3Download` tindakan untuk key prefix tertentu gagal selama download, konten folder tidak digulung kembali ke statusnya sebelum kegagalan. Folder tujuan tetap seperti pada saat kegagalan.

**Kasus penggunaan yang didukung**  
Modul `S3Download` tindakan mendukung kasus penggunaan berikut:
+ Objek Amazon S3 diunduh ke folder lokal, seperti yang ditentukan dalam jalur unduhan.
+ Objek Amazon S3 (dengan awalan kunci di jalur file Amazon S3) diunduh ke folder lokal yang ditentukan, yang secara rekursif menyalin semua objek Amazon S3 yang cocok dengan awalan key ke folder lokal.

**Persyaratan IAM**  
Peran IAM yang Anda kaitkan dengan profil instans Anda harus memiliki izin untuk menjalankan modul `S3Download` tindakan. Kebijakan IAM berikut harus dilampirkan pada peran IAM yang terkait dengan profil instans:
+ **File tunggal**: `s3:GetObject` melawan bucket/object (misalnya,`arn:aws:s3:::BucketName/*`).
+ **Beberapa file**: `s3:ListBucket` melawan bucket/object (misalnya,`arn:aws:s3:::BucketName`) dan `s3:GetObject` melawan bucket/object (misalnya,`arn:aws:s3:::BucketName/*`).


**Input**  

|  Key  |  Deskripsi  |  Tipe  |  Diperlukan  |  Default  | 
| --- | --- | --- | --- | --- | 
|  `source`  |  Bucket Amazon S3 yang merupakan sumber unduhan Anda. Anda dapat menentukan path ke objek tertentu, atau menggunakan key prefix, yang diakhiri dengan garis miring maju, diikuti dengan wildcard asterisk (`/*`), untuk mengunduh sekumpulan objek yang cocok dengan key prefix.  |  Tali  |  Ya  |  N/A  | 
|  `destination`  |  Jalur lokal tempat objek Amazon S3 diunduh. Untuk mengunduh satu file, Anda harus menentukan nama file sebagai bagian dari jalur. Misalnya, `/myfolder/package.zip`.  |  Tali  |  Ya  |  N/A  | 
|  `expectedBucketOwner`  |  ID akun pemilik yang diharapkan dari bucket yang disediakan di `source` jalur. Kami menyarankan Anda memverifikasi kepemilikan bucket Amazon S3 yang ditentukan dalam sumbernya.  |  String  |  Tidak  |  N/A  | 
|  `overwrite`  |  Ketika disetel ke true, jika file dengan nama yang sama sudah ada di folder tujuan untuk jalur lokal yang ditentukan, file unduhan menimpa file lokal. Ketika disetel ke false, file yang ada di sistem lokal dilindungi agar tidak ditimpa, dan modul tindakan gagal dengan kesalahan unduhan. Sebagai contoh, `Error: S3Download: File already exists and "overwrite" property for "destination" file is set to false. Cannot download.`.  |  Boolean  |  Tidak  |  true  | 

**catatan**  
Untuk contoh berikut, jalur folder Windows dapat diganti dengan jalur Linux. Misalnya, `C:\myfolder\package.zip` bisa diganti dengan`/myfolder/package.zip`.

**Contoh masukan: salin objek Amazon S3 ke file lokal**  
Contoh berikut menunjukkan cara menyalin objek Amazon S3 ke file lokal.

```
  - name: DownloadMyFile
    action: S3Download
    inputs:
      - source: s3://amzn-s3-demo-source-bucket/path/to/package.zip
        destination: C:\myfolder\package.zip
        expectedBucketOwner: 123456789022
        overwrite: false
      - source: s3://amzn-s3-demo-source-bucket/path/to/package.zip
        destination: C:\myfolder\package.zip
        expectedBucketOwner: 123456789022
        overwrite: true
      - source: s3://amzn-s3-demo-source-bucket/path/to/package.zip
        destination: C:\myfolder\package.zip
        expectedBucketOwner: 123456789022
```

**Contoh masukan: salin semua objek Amazon S3 di bucket Amazon S3 dengan key prefix ke folder lokal**  
Contoh berikut menunjukkan cara menyalin semua objek Amazon S3 di bucket Amazon S3 dengan awalan key ke folder lokal. Amazon S3 tidak memiliki konsep folder, oleh karena itu semua objek yang cocok dengan key prefix disalin. Jumlah maksimum objek yang dapat diunduh adalah 1000.

```
  - name: MyS3DownloadKeyprefix
    action: S3Download
    maxAttempts: 3
    inputs:
      - source: s3://amzn-s3-demo-source-bucket/path/to/*
        destination: C:\myfolder\
        expectedBucketOwner: 123456789022
        overwrite: false
      - source: s3://amzn-s3-demo-source-bucket/path/to/*
        destination: C:\myfolder\
        expectedBucketOwner: 123456789022
        overwrite: true
      - source: s3://amzn-s3-demo-source-bucket/path/to/*
        destination: C:\myfolder\
        expectedBucketOwner: 123456789022
```

**Output**  
Tidak ada.

### S3Unggah (Linux, Windows, macOS)
<a name="action-modules-s3upload"></a>

Dengan modul tindakan **S3Upload**, Anda dapat mengunggah file dari file sumber atau folder ke lokasi Amazon S3. Anda dapat menggunakan wildcard (`*`) di jalur yang ditentukan untuk lokasi sumber Anda untuk mengunggah semua file yang jalurnya cocok dengan pola wildcard.

Jika tindakan **S3Upload** rekursif gagal, file apa pun yang telah diunggah akan tetap berada di bucket Amazon S3 tujuan.

**Kasus penggunaan yang didukung**
+ File lokal ke objek Amazon S3.
+ File lokal dalam folder (dengan wildcard) ke awalan kunci Amazon S3.
+ Salin folder lokal (harus `recurse` disetel ke`true`) ke Amazon S3 key prefix.

**Persyaratan IAM**  
Peran IAM yang Anda kaitkan dengan profil instans Anda harus memiliki izin untuk menjalankan modul `S3Upload` tindakan. Kebijakan IAM berikut harus dilampirkan pada peran IAM yang terkait dengan profil instans. Kebijakan harus memberikan `s3:PutObject` izin ke bucket Amazon S3 target. Misalnya,`arn:aws:s3:::BucketName/*`).


**Input**  

|  Key  |  Deskripsi  |  Tipe  |  Diperlukan  |  Default  | 
| --- | --- | --- | --- | --- | 
|  `source`  |  Jalur lokal tempat sumber files/folders berasal. `source`Mendukung wildcard asterisk ()`*`.  |  Tali  |  Ya  |  N/A  | 
|  `destination`  |  Jalur untuk bucket Amazon S3 tujuan tempat file sumber/folder diunggah.  |  Tali  |  Ya  |  N/A  | 
|  `recurse`  |  Saat disetel ke`true`, lakukan **S3Upload** secara rekursif.  |  String  |  Tidak  |  `false`  | 
|  `expectedBucketOwner`  |  ID akun pemilik yang diharapkan untuk bucket Amazon S3 yang ditentukan di jalur tujuan. Kami menyarankan Anda memverifikasi kepemilikan bucket Amazon S3 yang ditentukan di tujuan.  |  String  |  Tidak  |  N/A  | 

**Contoh masukan: salin file lokal ke objek Amazon S3**  
Contoh berikut menunjukkan cara menyalin file lokal ke objek Amazon S3.

```
  - name: MyS3UploadFile
    action: S3Upload
    onFailure: Abort
    maxAttempts: 3
    inputs:
      - source: C:\myfolder\package.zip
        destination: s3://amzn-s3-demo-destination-bucket/path/to/package.zip
        expectedBucketOwner: 123456789022
```

**Contoh masukan: salin semua file dalam folder lokal ke bucket Amazon S3 dengan key prefix**  
Contoh berikut menunjukkan cara menyalin semua file di folder lokal ke bucket Amazon S3 dengan key prefix. Contoh ini tidak menyalin sub-folder atau isinya karena tidak `recurse` ditentukan, dan defaultnya. `false`

```
  - name: MyS3UploadMultipleFiles
    action: S3Upload
    onFailure: Abort
    maxAttempts: 3
    inputs:
      - source: C:\myfolder\*
        destination: s3://amzn-s3-demo-destination-bucket/path/to/
        expectedBucketOwner: 123456789022
```

**Contoh masukan: salin semua file dan folder secara rekursif dari folder lokal ke bucket Amazon S3**  
Contoh berikut menunjukkan cara menyalin semua file dan folder secara rekursif dari folder lokal ke bucket Amazon S3 dengan key prefix.

```
  - name: MyS3UploadFolder
    action: S3Upload
    onFailure: Abort
    maxAttempts: 3
    inputs:
      - source: C:\myfolder\*
        destination: s3://amzn-s3-demo-destination-bucket/path/to/
        recurse: true
        expectedBucketOwner: 123456789022
```

**Output**  
Tidak ada.

### WebDownload (Linux, Windows, macOS)
<a name="action-modules-webdownload"></a>

Modul **WebDownload**tindakan memungkinkan Anda mengunduh file dan sumber daya dari lokasi terpencil melalui HTTP/HTTPS protokol (*disarankan HTTPS*). Tidak ada batasan jumlah atau ukuran unduhan. Modul ini menangani coba lagi dan logika backoff eksponensial. 

Setiap operasi pengunduhan dialokasikan maksimal 5 upaya untuk berhasil sesuai dengan input pengguna. Upaya ini berbeda dari yang ditentukan di `maxAttempts` bidang dokumen`steps`, yang terkait dengan kegagalan modul tindakan.

Modul tindakan ini secara implisit menangani pengalihan. Semua kode status HTTP, kecuali`200`, menghasilkan kesalahan.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Default | 
| --- | --- | --- | --- | --- | 
| source |  HTTP/HTTPS URL yang valid (HTTPS direkomendasikan), yang mengikuti standar RFC 3986. Ekspresi rantai diizinkan. | Tali |  Ya  | N/A | 
| destination | Sebuah file absolut atau relatif atau jalur folder pada sistem lokal. Jalur folder harus diakhiri dengan/. Jika mereka tidak berakhir dengan/, mereka akan diperlakukan sebagai jalur file. Modul ini membuat file atau folder yang diperlukan untuk unduhan yang berhasil. Ekspresi rantai diizinkan. | Tali | Ya | N/A | 
| overwrite | Saat diaktifkan, timpa file yang ada di sistem lokal dengan file atau sumber daya yang diunduh. Saat tidak diaktifkan, file apa pun yang ada di sistem lokal tidak ditimpa, dan modul tindakan gagal dengan kesalahan. Ketika timpa diaktifkan dan checksum dan algoritma ditentukan, maka modul tindakan mengunduh file hanya jika checksum dan hash dari file yang sudah ada sebelumnya tidak cocok.  | Boolean | Tidak | true | 
| checksum | Ketika Anda menentukan checksum, itu diperiksa terhadap hash dari file yang diunduh yang dihasilkan dengan algoritma yang disediakan. Agar verifikasi file diaktifkan, checksum dan algoritme harus disediakan. Ekspresi rantai diizinkan.  | String | Tidak | N/A | 
| algorithm | Algoritma yang digunakan untuk menghitung checksum. Pilihannya adalahMD5, SHA1, SHA256, dan SHA512. Agar verifikasi file diaktifkan, checksum dan algoritme harus disediakan. Ekspresi rantai diizinkan.  | String | Tidak | N/A | 
| ignoreCertificateErrors | Validasi sertifikat SSL diabaikan saat diaktifkan. | Boolean | Tidak | false | 


**Output**  

| Nama Kunci | Deskripsi | Tipe | 
| --- | --- | --- | 
| destination | String berbatasan karakter baris baru yang menentukan jalur tujuan tempat file atau sumber daya yang diunduh disimpan. | String | 

**Contoh masukan: unduh file jarak jauh ke tujuan lokal**

```
  - name: DownloadRemoteFile
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://testdomain/path/to/java14.zip
        destination: C:\testfolder\package.zip
```

**Output:**

```
{
	"destination": "C:\\testfolder\\package.zip"
}
```

**Contoh masukan: unduh lebih dari satu file jarak jauh ke lebih dari satu tujuan lokal**

```
  - name: DownloadRemoteFiles
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://testdomain/path/to/java14.zip
        destination: /tmp/java14_renamed.zip
      - source: https://testdomain/path/to/java14.zip
        destination: /tmp/create_new_folder_and_add_java14_as_zip/
```

**Output:**

```
{
	"destination": "/tmp/create_new_folder/java14_renamed.zip\n/tmp/create_new_folder_and_add_java14_as_zip/java14.zip"
}
```

**Contoh masukan: unduh satu file jarak jauh tanpa menimpa tujuan lokal, dan unduh file jarak jauh lainnya dengan verifikasi file**

```
  - name: DownloadRemoteMultipleProperties
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://testdomain/path/to/java14.zip
        destination: C:\create_new_folder\java14_renamed.zip
        overwrite: false
      - source: https://testdomain/path/to/java14.zip
        destination: C:\create_new_folder_and_add_java14_as_zip\
        checksum: ac68bbf921d953d1cfab916cb6120864
        algorithm: MD5
        overwrite: true
```

**Output:**

```
{
	"destination": "C:\\create_new_folder\\java14_renamed.zip\nC:\\create_new_folder_and_add_java14_as_zip\\java14.zip"
}
```

**Contoh masukan: unduh file jarak jauh dan abaikan validasi sertifikasi SSL**

```
  - name: DownloadRemoteIgnoreValidation
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://www.bad-ssl.com/resource
        destination: /tmp/downloads/
        ignoreCertificateErrors: true
```

**Output:**

```
{
	"destination": "/tmp/downloads/resource"
}
```

## Modul operasi sistem file
<a name="action-modules-file-system-operations"></a>

Bagian berikut berisi rincian untuk modul tindakan yang melakukan operasi sistem file.

**Topics**
+ [AppendFile (Linux, Windows, macOS)](#action-modules-appendfile)
+ [CopyFile (Linux, Windows, macOS)](#action-modules-copyfile)
+ [CopyFolder (Linux, Windows, macOS)](#action-modules-copyfolder)
+ [CreateFile (Linux, Windows, macOS)](#action-modules-createfile)
+ [CreateFolder (Linux, Windows, macOS)](#action-modules-createfolder)
+ [CreateSymlink (Linux, Windows, macOS)](#action-modules-createsymlink)
+ [DeleteFile (Linux, Windows, macOS)](#action-modules-deletefile)
+ [DeleteFolder (Linux, Windows, macOS)](#action-modules-deletefolder)
+ [ListFiles (Linux, Windows, macOS)](#action-modules-listfiles)
+ [MoveFile (Linux, Windows, macOS)](#action-modules-movefile)
+ [MoveFolder (Linux, Windows, macOS)](#action-modules-movefolder)
+ [ReadFile (Linux, Windows, macOS)](#action-modules-readfile)
+ [SetFileEncoding (Linux, Windows, macOS)](#action-modules-setfileencoding)
+ [SetFileOwner (Linux, Windows, macOS)](#action-modules-setfileowner)
+ [SetFolderOwner (Linux, Windows, macOS)](#action-modules-setfolderowner)
+ [SetFilePermissions (Linux, Windows, macOS)](#action-modules-setfilepermissions)
+ [SetFolderPermissions (Linux, Windows, macOS)](#action-modules-setfolderpermissions)

### AppendFile (Linux, Windows, macOS)
<a name="action-modules-appendfile"></a>

Modul **AppendFile**tindakan menambahkan konten tertentu ke konten file yang sudah ada sebelumnya.

Jika nilai encoding file berbeda dari nilai encoding (`utf-8`) default, maka Anda dapat menentukan nilai encoding file dengan menggunakan opsi. `encoding` Secara default, `utf-16` dan `utf-32` diasumsikan menggunakan pengkodean endian kecil. 

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ File yang ditentukan tidak ada saat runtime.
+ Anda tidak memiliki izin menulis untuk memodifikasi konten file.
+ Modul mengalami kesalahan selama operasi file.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Jalur file. | Tali | Ya | N/A | N/A | Ya | 
| content | Konten yang akan ditambahkan ke file. | String | Tidak | Empty string | N/A | Ya | 
| encoding | Standar pengkodean. | String | Tidak | utf8 | utf8,utf-8,utf16,utf-16,utf16-LE, utf-16-LEutf16-BE,utf-16-BE,utf32,utf-32,utf32-LE,utf-32-LE,utf32-BE, dan utf-32-BE. Nilai opsi pengkodean tidak peka huruf besar/kecil. | Ya | 

**Contoh masukan: tambahkan file tanpa pengkodean (Linux)**

```
  - name: AppendingFileWithOutEncodingLinux
    action: AppendFile
    inputs:
      - path: ./Sample.txt
        content: "The string to be appended to the file"
```

**Contoh masukan: tambahkan file tanpa pengkodean (Windows)**

```
  - name: AppendingFileWithOutEncodingWindows
    action: AppendFile
    inputs:
      - path: C:\MyFolder\MyFile.txt
        content: "The string to be appended to the file"
```

**Contoh masukan: tambahkan file dengan encoding (Linux)**

```
  - name: AppendingFileWithEncodingLinux
    action: AppendFile
    inputs:
      - path: /FolderName/SampleFile.txt
        content: "The string to be appended to the file"
        encoding: UTF-32
```

**Contoh masukan: tambahkan file dengan pengkodean (Windows)**

```
  - name: AppendingFileWithEncodingWindows
    action: AppendFile
    inputs:
      - path: C:\MyFolderName\SampleFile.txt
        content: "The string to be appended to the file"
        encoding: UTF-32
```

**Contoh masukan: tambahkan file dengan string kosong (Linux)**

```
  - name: AppendingEmptyStringLinux
    action: AppendFile
    inputs:
      - path: /FolderName/SampleFile.txt
```

**Contoh masukan: tambahkan file dengan string kosong (Windows)**

```
  - name: AppendingEmptyStringWindows
    action: AppendFile
    inputs:
      - path: C:\MyFolderName\SampleFile.txt
```

**Output**  
Tidak ada.

### CopyFile (Linux, Windows, macOS)
<a name="action-modules-copyfile"></a>

Modul **CopyFile**tindakan menyalin file dari sumber yang ditentukan ke tujuan yang ditentukan. Secara default, modul secara rekursif membuat folder tujuan jika tidak ada saat runtime.

Jika file dengan nama yang ditentukan sudah ada di folder yang ditentukan, modul tindakan, secara default, menimpa file yang ada. Anda dapat mengganti perilaku default ini dengan menyetel opsi overwrite ke. `false` Ketika opsi overwrite diatur ke`false`, dan sudah ada file di lokasi yang ditentukan dengan nama yang ditentukan, modul tindakan akan mengembalikan kesalahan. Opsi ini bekerja sama dengan `cp` perintah di Linux, yang menimpa secara default.

Nama file sumber dapat menyertakan wildcard (`*`). Karakter wildcard diterima hanya setelah pemisah jalur file terakhir (`/`atau`\`). Jika karakter wildcard disertakan dalam nama file sumber, semua file yang cocok dengan wildcard disalin ke folder tujuan. Jika Anda ingin memindahkan lebih dari satu file dengan menggunakan karakter wildcard, input ke `destination` opsi harus diakhiri dengan pemisah jalur file (`/`atau`\`), yang menunjukkan bahwa input tujuan adalah folder.

Jika nama file tujuan berbeda dari nama file sumber, Anda dapat menentukan nama file tujuan menggunakan `destination` opsi. Jika Anda tidak menentukan nama file tujuan, nama file sumber digunakan untuk membuat file tujuan. Setiap teks yang mengikuti pemisah jalur file terakhir (`/`atau`\`) diperlakukan sebagai nama file. Jika Anda ingin menggunakan nama file yang sama dengan file sumber, maka input `destination` opsi harus diakhiri dengan pemisah jalur file (`/`atau`\`). 

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ Anda tidak memiliki izin untuk membuat file di folder yang ditentukan.
+ File sumber tidak ada saat runtime.
+ Sudah ada folder dengan nama file yang ditentukan dan `overwrite` opsi diatur ke`false`.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | Jalur file sumber. | Tali | Ya | N/A | N/A | Ya | 
| destination | Jalur file tujuan. | Tali | Ya | N/A | N/A | Ya | 
| overwrite | Ketika diatur ke false, file tujuan tidak akan diganti ketika sudah ada file di lokasi yang ditentukan dengan nama yang ditentukan. | Boolean | Tidak | true | N/A | Ya | 

**Contoh masukan: salin file (Linux)**

```
  - name: CopyingAFileLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
```

**Contoh masukan: salin file (Windows)**

```
  - name: CopyingAFileWindows
    action: CopyFile
    inputs:
      - source: C:\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
```

**Contoh masukan: salin file menggunakan nama file sumber (Linux)**

```
  - name: CopyingFileWithSourceFileNameLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/
```

**Contoh masukan: salin file menggunakan nama file sumber (Windows)**

```
  - name: CopyingFileWithSourceFileNameWindows
    action: CopyFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\
```

**Contoh masukan: salin file menggunakan karakter wildcard (Linux)**

```
  - name: CopyingFilesWithWildCardLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**Contoh masukan: salin file menggunakan karakter wildcard (Windows)**

```
  - name: CopyingFilesWithWildCardWindows
    action: CopyFile
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder\
```

**Contoh masukan: salin file tanpa menimpa (Linux)**

```
  - name: CopyingFilesWithoutOverwriteLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
        overwrite: false
```

**Contoh masukan: salin file tanpa menimpa (Windows)**

```
  - name: CopyingFilesWithoutOverwriteWindows
    action: CopyFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
        overwrite: false
```

**Output**  
Tidak ada.

### CopyFolder (Linux, Windows, macOS)
<a name="action-modules-copyfolder"></a>

Modul **CopyFolder**tindakan menyalin folder dari sumber yang ditentukan ke tujuan yang ditentukan. Input untuk `source` opsi adalah folder yang akan disalin, dan input untuk `destination` opsi adalah folder tempat konten folder sumber disalin. Secara default, modul secara rekursif membuat folder tujuan jika tidak ada saat runtime.

Jika folder dengan nama yang ditentukan sudah ada di folder yang ditentukan, modul tindakan, secara default, menimpa folder yang ada. Anda dapat mengganti perilaku default ini dengan menyetel opsi overwrite ke. `false` Ketika opsi overwrite diatur ke`false`, dan sudah ada folder di lokasi yang ditentukan dengan nama yang ditentukan, modul tindakan akan mengembalikan kesalahan.

Nama folder sumber dapat menyertakan wildcard (`*`). Karakter wildcard diterima hanya setelah pemisah jalur file terakhir (`/`atau`\`). Jika karakter wildcard disertakan dalam nama folder sumber, semua folder yang cocok dengan wildcard akan disalin ke folder tujuan. Jika Anda ingin menyalin lebih dari satu folder dengan menggunakan karakter wildcard, input ke `destination` opsi harus diakhiri dengan pemisah jalur file (`/`atau`\`), yang menunjukkan bahwa input tujuan adalah folder.

Jika nama folder tujuan berbeda dari nama folder sumber, Anda dapat menentukan nama folder tujuan menggunakan `destination` opsi. Jika Anda tidak menentukan nama folder tujuan, nama folder sumber digunakan untuk membuat folder tujuan. Teks apa pun yang mengikuti pemisah jalur file terakhir (`/`atau`\`) diperlakukan sebagai nama folder. Jika Anda ingin menggunakan nama folder yang sama dengan folder sumber, maka input `destination` opsi harus diakhiri dengan pemisah jalur file (`/`atau`\`). 

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ Anda tidak memiliki izin untuk membuat folder di folder yang ditentukan.
+ Folder sumber tidak ada saat runtime.
+ Sudah ada folder dengan nama folder yang ditentukan dan `overwrite` opsi diatur ke`false`.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | Jalur folder sumber. | Tali | Ya | N/A | N/A | Ya | 
| destination | Jalur folder tujuan. | Tali | Ya | N/A | N/A | Ya | 
| overwrite | Ketika diatur ke false, folder tujuan tidak akan diganti ketika sudah ada folder di lokasi yang ditentukan dengan nama yang ditentukan. | Boolean | Tidak | true | N/A | Ya | 

**Contoh masukan: salin folder (Linux)**

```
  - name: CopyingAFolderLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/SampleFolder
        destination: /MyFolder/destinationFolder
```

**Contoh masukan: salin folder (Windows)**

```
  - name: CopyingAFolderWindows
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\destinationFolder
```

**Contoh masukan: salin folder menggunakan nama folder sumber (Linux)**

```
  - name: CopyingFolderSourceFolderNameLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/SourceFolder
        destination: /MyFolder/
```

**Contoh masukan: salin folder menggunakan nama folder sumber (Windows)**

```
  - name: CopyingFolderSourceFolderNameWindows
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\
```

**Contoh masukan: salin folder menggunakan karakter wildcard (Linux)**

```
  - name: CopyingFoldersWithWildCardLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**Contoh masukan: salin folder menggunakan karakter wildcard (Windows)**

```
  - name: CopyingFoldersWithWildCardWindows
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder\
```

**Contoh masukan: salin folder tanpa menimpa (Linux)**

```
  - name: CopyingFoldersWithoutOverwriteLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/SourceFolder
        destination: /MyFolder/destinationFolder
        overwrite: false
```

**Contoh masukan: salin folder tanpa menimpa (Windows)**

```
  - name: CopyingFoldersWithoutOverwrite
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\SourceFolder
        destination: C:\MyFolder\destinationFolder
        overwrite: false
```

**Output**  
Tidak ada.

### CreateFile (Linux, Windows, macOS)
<a name="action-modules-createfile"></a>

Modul **CreateFile**tindakan membuat file di lokasi tertentu. Secara default, jika diperlukan, modul juga secara rekursif membuat folder induk.

Jika file sudah ada di folder yang ditentukan, modul tindakan, secara default, memotong atau menimpa file yang ada. Anda dapat mengganti perilaku default ini dengan menyetel opsi overwrite ke. `false` Ketika opsi overwrite diatur ke`false`, dan sudah ada file di lokasi yang ditentukan dengan nama yang ditentukan, modul tindakan akan mengembalikan kesalahan.

Jika nilai encoding file berbeda dari nilai encoding (`utf-8`) default, maka Anda dapat menentukan nilai encoding file dengan menggunakan opsi. `encoding` Secara default, `utf-16` dan `utf-32` diasumsikan menggunakan pengkodean endian kecil. 

`owner`,`group`, dan `permissions` merupakan input opsional. Input untuk `permissions` harus berupa nilai string. File dibuat dengan nilai default bila tidak disediakan. Opsi ini tidak didukung pada platform Windows. Modul tindakan ini memvalidasi dan mengembalikan kesalahan jika`owner`,`group`, dan `permissions` opsi digunakan pada platform Windows.

Modul tindakan ini dapat membuat file dengan izin yang ditentukan oleh `umask` nilai default sistem operasi. Anda harus menetapkan `umask` nilai jika Anda ingin mengganti nilai default.

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ Anda tidak memiliki izin untuk membuat file atau folder di folder induk yang ditentukan.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Jalur file. | Tali | Ya | N/A | N/A | Ya | 
| content | Isi teks file. | String | Tidak | N/A | N/A | Ya | 
| encoding | Standar pengkodean. | String | Tidak | utf8 | utf8,utf-8,utf16,utf-16,utf16-LE, utf-16-LEutf16-BE,utf-16-BE,utf32,utf-32,utf32-LE,utf-32-LE,utf32-BE, dan utf-32-BE. Nilai opsi pengkodean tidak peka huruf besar/kecil. | Ya | 
| owner | Nama pengguna atau ID. | String | Tidak | N/A | N/A | Tidak didukung di Windows. | 
| group | Nama grup atau ID. | String | Tidak | Pengguna saat ini. | N/A | Tidak didukung di Windows. | 
| permissions | Izin file. | String | Tidak | 0666 | N/A | Tidak didukung di Windows. | 
| overwrite | Jika nama file yang ditentukan sudah ada, setel nilai ini untuk false mencegah file terpotong atau ditimpa secara default. | Boolean | Tidak | true | N/A | Ya | 

**Contoh masukan: buat file tanpa menimpa (Linux)**

```
  - name: CreatingFileWithoutOverwriteLinux
    action: CreateFile
    inputs:
      - path: /home/UserName/Sample.txt
        content: The text content of the sample file.
        overwrite: false
```

**Contoh masukan: buat file tanpa menimpa (Windows)**

```
  - name: CreatingFileWithoutOverwriteWindows
    action: CreateFile
    inputs:
      - path: C:\Temp\Sample.txt
        content: The text content of the sample file.
        overwrite: false
```

**Contoh masukan: buat file dengan properti file**

```
  - name: CreatingFileWithFileProperties
    action: CreateFile
    inputs:
      - path: SampleFolder/Sample.txt
        content: The text content of the sample file.
        encoding: UTF-16
        owner: Ubuntu
        group: UbuntuGroup
        permissions: 0777
     - path: SampleFolder/SampleFile.txt
        permissions: 755
      - path: SampleFolder/TextFile.txt
        encoding: UTF-16
        owner: root
        group: rootUserGroup
```

**Contoh masukan: buat file tanpa properti file**

```
  - name: CreatingFileWithoutFileProperties
    action: CreateFile
    inputs:
      - path: ./Sample.txt
      - path: Sample1.txt
```

**Contoh masukan: buat file kosong untuk melewati bagian dalam skrip pembersihan Linux**

```
  - name: CreateSkipCleanupfile
    action: CreateFile
    inputs:
      - path: <skip section file name>
```

Untuk informasi selengkapnya, lihat [Ganti skrip pembersihan Linux](security-best-practices.md#override-linux-cleanup-script)

**Output**  
Tidak ada.

### CreateFolder (Linux, Windows, macOS)
<a name="action-modules-createfolder"></a>

Modul **CreateFolder**tindakan membuat folder di lokasi tertentu. Secara default, jika diperlukan, modul juga secara rekursif membuat folder induk.

Jika folder sudah ada di folder yang ditentukan, modul tindakan, secara default, memotong atau menimpa folder yang ada. Anda dapat mengganti perilaku default ini dengan menyetel opsi overwrite ke. `false` Ketika opsi overwrite diatur ke`false`, dan sudah ada folder di lokasi yang ditentukan dengan nama yang ditentukan, modul tindakan akan mengembalikan kesalahan.

`owner`,`group`, dan `permissions` merupakan input opsional. Input untuk `permissions` harus berupa nilai string. Opsi ini tidak didukung pada platform Windows. Modul tindakan ini memvalidasi dan mengembalikan kesalahan jika`owner`,`group`, dan `permissions` opsi digunakan pada platform Windows.

Modul tindakan ini dapat membuat folder dengan izin yang ditentukan oleh `umask` nilai default sistem operasi. Anda harus menetapkan `umask` nilai jika Anda ingin mengganti nilai default.

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ Anda tidak memiliki izin untuk membuat folder di lokasi yang ditentukan.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Jalur folder. | Tali | Ya | N/A | N/A | Ya | 
| owner | Nama pengguna atau ID. | String | Tidak | Pengguna saat ini. | N/A | Tidak didukung di Windows. | 
| group | Nama grup atau ID. | String | Tidak | Kelompok pengguna saat ini. | N/A | Tidak didukung di Windows. | 
| permissions | Izin folder. | String | Tidak | 0777 | N/A | Tidak didukung di Windows. | 
| overwrite | Jika nama file yang ditentukan sudah ada, setel nilai ini untuk false mencegah file terpotong atau ditimpa secara default. | Boolean | Tidak | true | N/A | Ya | 

**Contoh masukan: buat folder (Linux)**

```
  - name: CreatingFolderLinux
    action: CreateFolder
    inputs:
      - path: /Sample/MyFolder/
```

**Contoh masukan: buat folder (Windows)**

```
  - name: CreatingFolderWindows
    action: CreateFolder
    inputs:
      - path: C:\MyFolder
```

**Contoh masukan: buat folder yang menentukan properti folder**

```
  - name: CreatingFolderWithFolderProperties
    action: CreateFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
        owner: SampleOwnerName
        group: SampleGroupName
        permissions: 0777
      - path: /Sample/MyFolder/SampleFoler/
        permissions: 777
```

**Contoh masukan: buat folder yang menimpa folder yang ada, jika ada.**

```
  - name: CreatingFolderWithOverwrite
    action: CreateFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
        overwrite: true
```

**Output**  
Tidak ada.

### CreateSymlink (Linux, Windows, macOS)
<a name="action-modules-createsymlink"></a>

Modul **CreateSymlink**tindakan membuat tautan simbolis, atau file yang berisi referensi ke file lain. Modul ini tidak didukung pada platform Windows. 

Masukan untuk `target` opsi `path` dan dapat berupa jalur absolut atau relatif. Jika input untuk `path` opsi adalah jalur relatif, itu diganti dengan jalur absolut saat tautan dibuat.

Secara default, ketika tautan dengan nama yang ditentukan sudah ada di folder yang ditentukan, modul tindakan mengembalikan kesalahan. Anda dapat mengganti perilaku default ini dengan menyetel `force` opsi ke`true`. Ketika `force` opsi diatur ke`true`, modul akan menimpa tautan yang ada.

Jika folder induk tidak ada, modul tindakan akan membuat folder secara rekursif, secara default.

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ File target tidak ada saat runtime.
+ Sebuah file link nonsymbolic dengan nama yang ditentukan sudah ada.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Jalur file. | Tali | Ya | N/A | N/A | Tidak didukung di Windows. | 
| target | Jalur file target yang ditunjuk oleh tautan simbolis. | Tali | Ya | N/A | N/A | Tidak didukung di Windows. | 
| force | Memaksa pembuatan tautan ketika tautan dengan nama yang sama sudah ada. | Boolean | Tidak | false | N/A | Tidak didukung di Windows. | 

**Contoh masukan: buat tautan simbolis yang memaksa pembuatan tautan**

```
  - name: CreatingSymbolicLinkWithForce
    action: CreateSymlink
    inputs:
      - path: /Folder2/Symboliclink.txt
        target: /Folder/Sample.txt
        force: true
```

**Contoh masukan: buat tautan simbolis yang tidak memaksa pembuatan tautan**

```
  - name: CreatingSymbolicLinkWithOutForce
    action: CreateSymlink
    inputs:
      - path: Symboliclink.txt
        target: /Folder/Sample.txt
```

**Output**  
Tidak ada.

### DeleteFile (Linux, Windows, macOS)
<a name="action-modules-deletefile"></a>

Modul **DeleteFile**tindakan menghapus file atau file di lokasi tertentu.

Input dari `path` harus berupa path file yang valid atau path file dengan karakter wild card (`*`) dalam nama file. Ketika karakter wildcard ditentukan dalam nama file, semua file dalam folder yang sama yang cocok dengan wildcard akan dihapus. 

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ Anda tidak memiliki izin untuk melakukan operasi penghapusan.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Jalur file. | Tali | Ya | N/A | N/A | Ya | 

**Contoh masukan: hapus satu file (Linux)**

```
  - name: DeletingSingleFileLinux
    action: DeleteFile
    inputs:
      - path: /SampleFolder/MyFolder/Sample.txt
```

**Contoh masukan: hapus satu file (Windows)**

```
  - name: DeletingSingleFileWindows
    action: DeleteFile
    inputs:
      - path: C:\SampleFolder\MyFolder\Sample.txt
```

**Contoh masukan: hapus file yang diakhiri dengan “log” (Linux)**

```
  - name: DeletingFileEndingWithLogLinux
    action: DeleteFile
    inputs:
      - path: /SampleFolder/MyFolder/*log
```

**Contoh masukan: hapus file yang diakhiri dengan “log” (Windows)**

```
  - name: DeletingFileEndingWithLogWindows
    action: DeleteFile
    inputs:
      - path: C:\SampleFolder\MyFolder\*log
```

**Contoh masukan: hapus semua file dalam folder tertentu (Linux)**

```
  - name: DeletingAllFilesInAFolderLinux
    action: DeleteFile
    inputs:
      - path: /SampleFolder/MyFolder/*
```

**Contoh masukan: hapus semua file dalam folder tertentu (Windows)**

```
  - name: DeletingAllFilesInAFolderWindows
    action: DeleteFile
    inputs:
      - path: C:\SampleFolder\MyFolder\*
```

**Output**  
Tidak ada.

### DeleteFolder (Linux, Windows, macOS)
<a name="action-modules-deletefolder"></a>

Modul **DeleteFolder**tindakan menghapus folder.

Jika folder tidak kosong, Anda harus mengatur `force` opsi `true` untuk menghapus folder dan isinya. Jika Anda tidak mengatur `force` opsi ke`true`, dan folder yang Anda coba hapus tidak kosong, modul tindakan mengembalikan kesalahan. Nilai default dari `force` opsi ini adalah`false`.

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ Anda tidak memiliki izin untuk melakukan operasi penghapusan.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Jalur folder. | Tali | Ya | N/A | N/A | Ya | 
| force | Menghapus folder apakah folder kosong atau tidak. | Boolean | Tidak | false | N/A | Ya | 

**Contoh masukan: hapus folder yang tidak kosong menggunakan `force` opsi (Linux)** 

```
  - name: DeletingFolderWithForceOptionLinux
    action: DeleteFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
        force: true
```

**Contoh masukan: hapus folder yang tidak kosong menggunakan `force` opsi (Windows)** 

```
  - name: DeletingFolderWithForceOptionWindows
    action: DeleteFolder
    inputs:
      - path: C:\Sample\MyFolder\Sample\
        force: true
```

**Contoh masukan: hapus folder (Linux)** 

```
  - name: DeletingFolderWithOutForceLinux
    action: DeleteFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
```

**Contoh masukan: hapus folder (Windows)** 

```
  - name: DeletingFolderWithOutForce
    action: DeleteFolder
    inputs:
      - path: C:\Sample\MyFolder\Sample\
```

**Output**  
Tidak ada.

### ListFiles (Linux, Windows, macOS)
<a name="action-modules-listfiles"></a>

Modul **ListFiles**tindakan mencantumkan file dalam folder tertentu. Ketika opsi rekursif diatur ke`true`, itu mencantumkan file dalam subfolder. Modul ini tidak mencantumkan file dalam subfolder secara default.

Untuk membuat daftar semua file dengan nama yang cocok dengan pola tertentu, gunakan `fileNamePattern` opsi untuk menyediakan pola. `fileNamePattern`Opsi menerima nilai wildcard (`*`). Ketika `fileNamePattern` disediakan, semua file yang cocok dengan format nama file yang ditentukan dikembalikan. 

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ Folder yang ditentukan tidak ada saat runtime.
+ Anda tidak memiliki izin untuk membuat file atau folder di folder induk yang ditentukan.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Jalur folder. | Tali | Ya | N/A | N/A | Ya | 
| fileNamePattern | Pola yang cocok untuk mencantumkan semua file dengan nama yang cocok dengan pola. | String | Tidak | N/A | N/A | Ya | 
| recursive | Daftar file dalam folder secara rekursif. | Boolean | Tidak | false | N/A | Ya | 

**Contoh masukan: daftar file dalam folder tertentu (Linux)**

```
  - name: ListingFilesInSampleFolderLinux
    action: ListFiles
    inputs:
      - path: /Sample/MyFolder/Sample
```

**Contoh masukan: daftar file dalam folder tertentu (Windows)**

```
  - name: ListingFilesInSampleFolderWindows
    action: ListFiles
    inputs:
      - path: C:\Sample\MyFolder\Sample
```

**Contoh masukan: daftar file yang diakhiri dengan “log” (Linux)**

```
  - name: ListingFilesWithEndingWithLogLinux
    action: ListFiles
    inputs:
      - path: /Sample/MyFolder/
        fileNamePattern: *log
```

**Contoh masukan: daftar file yang diakhiri dengan “log” (Windows)**

```
  - name: ListingFilesWithEndingWithLogWindows
    action: ListFiles
    inputs:
      - path: C:\Sample\MyFolder\
        fileNamePattern: *log
```

**Contoh masukan: daftar file secara rekursif**

```
  - name: ListingFilesRecursively
    action: ListFiles
    inputs:
      - path: /Sample/MyFolder/
        recursive: true
```


**Output**  

| Nama Kunci | Deskripsi | Tipe | 
| --- | --- | --- | 
| files | Daftar file. | String | 

**Contoh keluaran**

```
{
	"files": "/sample1.txt,/sample2.txt,/sample3.txt"
}
```

### MoveFile (Linux, Windows, macOS)
<a name="action-modules-movefile"></a>

Modul **MoveFile**tindakan memindahkan file dari sumber yang ditentukan ke tujuan yang ditentukan.

Jika file sudah ada di folder yang ditentukan, modul tindakan, secara default, menimpa file yang ada. Anda dapat mengganti perilaku default ini dengan menyetel opsi overwrite ke. `false` Ketika opsi overwrite diatur ke`false`, dan sudah ada file di lokasi yang ditentukan dengan nama yang ditentukan, modul tindakan akan mengembalikan kesalahan. Opsi ini bekerja sama dengan `mv` perintah di Linux, yang menimpa secara default.

Nama file sumber dapat menyertakan wildcard (`*`). Karakter wildcard diterima hanya setelah pemisah jalur file terakhir (`/`atau`\`). Jika karakter wildcard disertakan dalam nama file sumber, semua file yang cocok dengan wildcard disalin ke folder tujuan. Jika Anda ingin memindahkan lebih dari satu file dengan menggunakan karakter wildcard, input ke `destination` opsi harus diakhiri dengan pemisah jalur file (`/`atau`\`), yang menunjukkan bahwa input tujuan adalah folder.

Jika nama file tujuan berbeda dari nama file sumber, Anda dapat menentukan nama file tujuan menggunakan `destination` opsi. Jika Anda tidak menentukan nama file tujuan, nama file sumber digunakan untuk membuat file tujuan. Setiap teks yang mengikuti pemisah jalur file terakhir (`/`atau`\`) diperlakukan sebagai nama file. Jika Anda ingin menggunakan nama file yang sama dengan file sumber, maka input `destination` opsi harus diakhiri dengan pemisah jalur file (`/`atau`\`). 

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ Anda tidak memiliki izin untuk membuat file di folder yang ditentukan.
+ File sumber tidak ada saat runtime.
+ Sudah ada folder dengan nama file yang ditentukan dan `overwrite` opsi diatur ke`false`.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | Jalur file sumber. | Tali | Ya | N/A | N/A | Ya | 
| destination | Jalur file tujuan. | Tali | Ya | N/A | N/A | Ya | 
| overwrite | Ketika diatur ke false, file tujuan tidak akan diganti ketika sudah ada file di lokasi yang ditentukan dengan nama yang ditentukan. | Boolean | Tidak | true | N/A | Ya | 

**Contoh masukan: memindahkan file (Linux)**

```
  - name: MovingAFileLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
```

**Contoh masukan: memindahkan file (Windows)**

```
  - name: MovingAFileWindows
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
```

**Contoh masukan: memindahkan file menggunakan nama file sumber (Linux)**

```
  - name: MovingFileWithSourceFileNameLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/
```

**Contoh masukan: memindahkan file menggunakan nama file sumber (Windows)**

```
  - name: MovingFileWithSourceFileNameWindows
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder
```

**Contoh masukan: memindahkan file menggunakan karakter wildcard (Linux)**

```
  - name: MovingFilesWithWildCardLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**Contoh masukan: memindahkan file menggunakan karakter wildcard (Windows)**

```
  - name: MovingFilesWithWildCardWindows
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder
```

**Contoh masukan: memindahkan file tanpa menimpa (Linux)**

```
  - name: MovingFilesWithoutOverwriteLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
        overwrite: false
```

**Contoh masukan: memindahkan file tanpa menimpa (Windows)**

```
  - name: MovingFilesWithoutOverwrite
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
        overwrite: false
```

**Output**  
Tidak ada.

### MoveFolder (Linux, Windows, macOS)
<a name="action-modules-movefolder"></a>

Modul **MoveFolder**tindakan memindahkan folder dari sumber yang ditentukan ke tujuan yang ditentukan. Input untuk `source` opsi adalah folder untuk dipindahkan, dan input ke `destination` opsi adalah folder tempat konten folder sumber dipindahkan.

Jika folder induk tujuan atau input ke `destination` opsi tidak ada saat runtime, perilaku default modul adalah membuat folder secara rekursif di tujuan yang ditentukan.

Jika folder dengan folder yang sama dengan folder sumber sudah ada di folder tujuan, modul tindakan, secara default, menimpa folder yang ada. Anda dapat mengganti perilaku default ini dengan menyetel opsi overwrite ke. `false` Ketika opsi overwrite diatur ke`false`, dan sudah ada folder di lokasi yang ditentukan dengan nama yang ditentukan, modul tindakan akan mengembalikan kesalahan.

Nama folder sumber dapat menyertakan wildcard (`*`). Karakter wildcard diterima hanya setelah pemisah jalur file terakhir (`/`atau`\`). Jika karakter wildcard disertakan dalam nama folder sumber, semua folder yang cocok dengan wildcard akan disalin ke folder tujuan. Jika Anda ingin memindahkan lebih dari satu folder dengan menggunakan karakter wildcard, input ke `destination` opsi harus diakhiri dengan pemisah jalur file (`/`atau`\`), yang menunjukkan bahwa input tujuan adalah folder.

Jika nama folder tujuan berbeda dari nama folder sumber, Anda dapat menentukan nama folder tujuan menggunakan `destination` opsi. Jika Anda tidak menentukan nama folder tujuan, nama folder sumber digunakan untuk membuat folder tujuan. Teks apa pun yang mengikuti pemisah jalur file terakhir (`/`atau`\`) diperlakukan sebagai nama folder. Jika Anda ingin menggunakan nama folder yang sama dengan folder sumber, maka input `destination` opsi harus diakhiri dengan pemisah jalur file (`/`atau`\`). 

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ Anda tidak memiliki izin untuk membuat folder di folder tujuan.
+ Folder sumber tidak ada saat runtime.
+ Sudah ada folder dengan nama yang ditentukan dan `overwrite` opsi diatur ke`false`.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | Jalur folder sumber. | Tali | Ya | N/A | N/A | Ya | 
| destination | Jalur folder tujuan. | Tali | Ya | N/A | N/A | Ya | 
| overwrite | Ketika diatur ke false, folder tujuan tidak akan diganti ketika sudah ada folder di lokasi yang ditentukan dengan nama yang ditentukan. | Boolean | Tidak | true | N/A | Ya | 

**Contoh masukan: pindahkan folder (Linux)**

```
  - name: MovingAFolderLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/SourceFolder
        destination: /MyFolder/destinationFolder
```

**Contoh masukan: pindahkan folder (Windows)**

```
  - name: MovingAFolderWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\SourceFolder
        destination: C:\MyFolder\destinationFolder
```

**Contoh masukan: pindahkan folder menggunakan nama folder sumber (Linux)**

```
  - name: MovingFolderWithSourceFolderNameLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/SampleFolder
        destination: /MyFolder/
```

**Contoh masukan: pindahkan folder menggunakan nama folder sumber (Windows)**

```
  - name: MovingFolderWithSourceFolderNameWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\
```

**Contoh masukan: pindahkan folder menggunakan karakter wildcard (Linux)**

```
  - name: MovingFoldersWithWildCardLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**Contoh masukan: pindahkan folder menggunakan karakter wildcard (Windows)**

```
  - name: MovingFoldersWithWildCardWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder\
```

**Contoh masukan: pindahkan folder tanpa menimpa (Linux)**

```
  - name: MovingFoldersWithoutOverwriteLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/SampleFolder
    destination: /MyFolder/destinationFolder
    overwrite: false
```

**Contoh masukan: pindahkan folder tanpa menimpa (Windows)**

```
  - name: MovingFoldersWithoutOverwriteWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\destinationFolder
        overwrite: false
```

**Output**  
Tidak ada.

### ReadFile (Linux, Windows, macOS)
<a name="action-modules-readfile"></a>

Modul **ReadFile**tindakan membaca konten file teks dari jenis string. Modul ini dapat digunakan untuk membaca konten file untuk digunakan dalam langkah-langkah selanjutnya melalui rantai atau untuk membaca data ke `console.log` file. Jika jalur yang ditentukan adalah link simbolik, modul ini mengembalikan isi dari file target. Modul ini hanya mendukung file teks.

Jika nilai encoding file berbeda dari nilai encoding (`utf-8`) default, maka Anda dapat menentukan nilai encoding file dengan menggunakan opsi. `encoding` Secara default, `utf-16` dan `utf-32` diasumsikan menggunakan pengkodean endian kecil. 

Secara default, modul ini tidak dapat mencetak konten file ke `console.log` file. Anda dapat mengganti setelan ini dengan menyetel `printFileContent` properti ke`true`.

Modul ini hanya dapat mengembalikan isi file. Itu tidak dapat mengurai file, seperti file Excel atau JSON.

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ File tidak ada saat runtime.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Jalur file. | Tali | Ya | N/A | N/A | Ya | 
| encoding | Standar pengkodean. | String | Tidak | utf8 | utf8,utf-8,utf16,utf-16,utf16-LE, utf-16-LEutf16-BE,utf-16-BE,utf32,utf-32,utf32-LE,utf-32-LE,utf32-BE, dan utf-32-BE. Nilai opsi pengkodean tidak peka huruf besar/kecil. | Ya | 
| printFileContent | Mencetak konten file ke console.log file. | Boolean | Tidak | false | N/A | Ya. | 

**Contoh masukan: membaca file (Linux)**

```
  - name: ReadingFileLinux
    action: ReadFile
    inputs:
      - path: /home/UserName/SampleFile.txt
```

**Contoh masukan: membaca file (Windows)**

```
  - name: ReadingFileWindows
    action: ReadFile
    inputs:
      - path: C:\Windows\WindowsUpdate.log
```

**Contoh masukan: membaca file dan menentukan standar pengkodean**

```
  - name: ReadingFileWithFileEncoding
    action: ReadFile
    inputs:
      - path: /FolderName/SampleFile.txt
        encoding: UTF-32
```

**Contoh masukan: membaca file dan mencetak ke `console.log` file**

```
  - name: ReadingFileToConsole
    action: ReadFile
    inputs:
      - path: /home/UserName/SampleFile.txt
        printFileContent: true
```


**Output**  

| Bidang | Deskripsi | Tipe | 
| --- | --- | --- | 
| content | Konten file. | string | 

**Contoh keluaran**

```
{
	"content" : "The file content"
}
```

### SetFileEncoding (Linux, Windows, macOS)
<a name="action-modules-setfileencoding"></a>

Modul **SetFileEncoding**tindakan memodifikasi properti encoding dari file yang ada. Modul ini dapat mengonversi pengkodean file dari `utf-8` ke standar pengkodean yang ditentukan. Secara default, `utf-16` dan `utf-32` diasumsikan sebagai pengkodean endian kecil.

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ Anda tidak memiliki izin untuk melakukan modifikasi yang ditentukan.
+ File tidak ada saat runtime.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Jalur file. | Tali | Ya | N/A | N/A | Ya | 
| encoding | Standar pengkodean. | String | Tidak | utf8 | utf8,utf-8,utf16,utf-16,utf16-LE, utf-16-LEutf16-BE,utf-16-BE,utf32,utf-32,utf32-LE,utf-32-LE,utf32-BE, dan utf-32-BE. Nilai opsi pengkodean tidak peka huruf besar/kecil. | Ya | 

**Contoh masukan: mengatur properti pengkodean file**

```
  - name: SettingFileEncodingProperty
    action: SetFileEncoding
    inputs:
      - path: /home/UserName/SampleFile.txt
        encoding: UTF-16
```

**Output**  
Tidak ada.

### SetFileOwner (Linux, Windows, macOS)
<a name="action-modules-setfileowner"></a>

Modul **SetFileOwner**tindakan memodifikasi properti `owner` dan `group` pemilik file yang ada. Jika file yang ditentukan adalah tautan simbolis, modul memodifikasi `owner` properti file sumber. Modul ini tidak didukung pada platform Windows. 

Modul ini menerima nama pengguna dan grup sebagai input. Jika nama grup tidak disediakan, modul akan menetapkan pemilik grup file ke grup tempat pengguna berada.

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ Anda tidak memiliki izin untuk melakukan modifikasi yang ditentukan.
+ Nama pengguna atau grup yang ditentukan tidak ada saat runtime.
+ File tidak ada saat runtime.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Jalur file. | Tali | Ya | N/A | N/A | Tidak didukung di Windows. | 
| owner | Nama pengguna. | string | Ya | N/A | N/A | Tidak didukung di Windows. | 
| group | Nama grup pengguna. | String | Tidak | Nama grup tempat pengguna berada. | N/A | Tidak didukung di Windows. | 

**Contoh masukan: mengatur properti pemilik file tanpa menentukan nama grup pengguna**

```
  - name: SettingFileOwnerPropertyNoGroup
    action: SetFileOwner
    inputs:
      - path: /home/UserName/SampleText.txt
        owner: LinuxUser
```

**Contoh masukan: mengatur properti pemilik file dengan menentukan pemilik dan grup pengguna**

```
  - name: SettingFileOwnerProperty
    action: SetFileOwner
    inputs:
      - path: /home/UserName/SampleText.txt
        owner: LinuxUser
        group: LinuxUserGroup
```

**Output**  
Tidak ada.

### SetFolderOwner (Linux, Windows, macOS)
<a name="action-modules-setfolderowner"></a>

Modul **SetFolderOwner**tindakan secara rekursif memodifikasi properti `owner` dan `group` pemilik folder yang ada. Secara default, modul dapat memodifikasi kepemilikan untuk semua konten dalam folder. Anda dapat mengatur `recursive` opsi `false` untuk mengganti perilaku ini. Modul ini tidak didukung pada platform Windows. 

Modul ini menerima nama pengguna dan grup sebagai input. Jika nama grup tidak disediakan, modul akan menetapkan pemilik grup file ke grup tempat pengguna berada.

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ Anda tidak memiliki izin untuk melakukan modifikasi yang ditentukan.
+ Nama pengguna atau grup yang ditentukan tidak ada saat runtime.
+ Folder tidak ada saat runtime.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Jalur folder. | Tali | Ya | N/A | N/A | Tidak didukung di Windows. | 
| owner | Nama pengguna. | string | Ya | N/A | N/A | Tidak didukung di Windows. | 
| group | Nama grup pengguna. | String | Tidak | Nama grup tempat pengguna berada. | N/A | Tidak didukung di Windows. | 
| recursive | Mengganti perilaku default memodifikasi kepemilikan untuk semua konten folder saat disetel ke. false | Boolean | Tidak | true | N/A | Tidak didukung di Windows. | 

**Contoh masukan: mengatur properti pemilik folder tanpa menentukan nama grup pengguna**

```
  - name: SettingFolderPropertyWithOutGroup
    action: SetFolderOwner
    inputs:
      - path: /SampleFolder/
        owner: LinuxUser
```

**Contoh masukan: atur properti pemilik folder tanpa mengesampingkan kepemilikan semua konten dalam folder**

```
  - name: SettingFolderPropertyWithOutRecursively
    action: SetFolderOwner
    inputs:
      - path: /SampleFolder/
        owner: LinuxUser
        recursive: false
```

**Contoh masukan: mengatur properti kepemilikan file dengan menentukan nama grup pengguna**

```
  - name: SettingFolderPropertyWithGroup
    action: SetFolderOwner
    inputs:
      - path: /SampleFolder/
        owner: LinuxUser
        group: LinuxUserGroup
```

**Output**  
Tidak ada.

### SetFilePermissions (Linux, Windows, macOS)
<a name="action-modules-setfilepermissions"></a>

Modul **SetFilePermissions**tindakan memodifikasi file `permissions` yang ada. Modul ini tidak didukung pada platform Windows. 

Input untuk `permissions` harus berupa nilai string.

Modul tindakan ini dapat membuat file dengan izin yang ditentukan oleh nilai umask default dari sistem operasi. Anda harus menetapkan `umask` nilai jika Anda ingin mengganti nilai default.

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ Anda tidak memiliki izin untuk melakukan modifikasi yang ditentukan.
+ File tidak ada saat runtime.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Jalur file. | Tali | Ya | N/A | N/A | Tidak didukung di Windows. | 
| permissions | Izin file. | Tali | Ya | N/A | N/A | Tidak didukung di Windows. | 

**Contoh masukan: memodifikasi izin file**

```
  - name: ModifyingFilePermissions
    action: SetFilePermissions
    inputs:
      - path: /home/UserName/SampleFile.txt
        permissions: 766
```

**Output**  
Tidak ada.

### SetFolderPermissions (Linux, Windows, macOS)
<a name="action-modules-setfolderpermissions"></a>

Modul **SetFolderPermissions**tindakan secara rekursif memodifikasi folder `permissions` yang ada dan semua subfile dan subfoldernya. Secara default, modul ini dapat memodifikasi izin untuk semua isi folder yang ditentukan. Anda dapat mengatur `recursive` opsi `false` untuk mengganti perilaku ini. Modul ini tidak didukung pada platform Windows. 

Input untuk `permissions` harus berupa nilai string. 

Modul tindakan ini dapat memodifikasi izin sesuai dengan nilai umask default dari sistem operasi. Anda harus menetapkan `umask` nilai jika Anda ingin mengganti nilai default.

Modul tindakan mengembalikan kesalahan ketika hal berikut terjadi:
+ Anda tidak memiliki izin untuk melakukan modifikasi yang ditentukan.
+ Folder tidak ada saat runtime.
+ Modul tindakan mengalami kesalahan saat melakukan operasi.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | Didukung di semua platform | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Jalur folder. | Tali | Ya | N/A | N/A | Tidak didukung di Windows. | 
| permissions | Izin folder. | Tali | Ya | N/A | N/A | Tidak didukung di Windows. | 
| recursive | Mengganti perilaku default memodifikasi izin untuk semua konten folder saat disetel ke. false | Boolean | Tidak | true | N/A | Tidak didukung di Windows. | 

**Contoh masukan: atur izin folder**

```
  - name: SettingFolderPermissions
    action: SetFolderPermissions
    inputs:
      - path: SampleFolder/
        permissions: 0777
```

**Contoh masukan: atur izin folder tanpa memodifikasi izin untuk semua isi folder**

```
  - name: SettingFolderPermissionsNoRecursive
    action: SetFolderPermissions
    inputs:
      - path: /home/UserName/SampleFolder/
        permissions: 777
        recursive: false
```

**Output**  
Tidak ada.

## Tindakan instalasi perangkat lunak
<a name="action-modules-software-install-actions"></a>

Bagian berikut menjelaskan modul tindakan yang menginstal atau menghapus perangkat lunak.

**Persyaratan IAM**  
Jika jalur unduhan instalasi Anda adalah URI S3, maka peran IAM yang Anda kaitkan dengan profil instans Anda harus memiliki izin untuk menjalankan modul `S3Download` tindakan. Untuk memberikan izin yang diperlukan, lampirkan kebijakan `S3:GetObject` IAM ke peran IAM yang terkait dengan profil instans Anda, dan tentukan jalur untuk bucket Anda. Misalnya,`arn:aws:s3:::BucketName/*`).

**Input MSI Kompleks**  
Jika string masukan Anda berisi karakter kutipan ganda (`"`), Anda harus menggunakan salah satu metode berikut untuk memastikan bahwa string tersebut ditafsirkan dengan benar:
+ Anda dapat menggunakan tanda kutip tunggal (') di bagian luar string Anda, untuk menampungnya, dan tanda kutip ganda (“) di dalam string Anda, seperti yang ditunjukkan pada contoh berikut.

  ```
  properties:
    COMPANYNAME: '"Acme ""Widgets"" and ""Gizmos."""'
  ```

  Dalam hal ini, jika Anda perlu menggunakan tanda kutip di dalam string Anda, Anda harus menghindarinya. Ini berarti menggunakan kutipan tunggal lain (') sebelum apostrof.
+ Anda dapat menggunakan tanda kutip ganda (“) di bagian luar string Anda, untuk menampungnya. Dan Anda dapat melarikan diri dari tanda kutip ganda di dalam string Anda, menggunakan karakter garis miring terbalik (`\`), seperti yang ditunjukkan pada contoh berikut.

  ```
  properties:
    COMPANYNAME: "\"Acme \"\"Widgets\"\" and \"\"Gizmos.\"\"\""
  ```

Kedua metode ini meneruskan nilai `COMPANYNAME="Acme ""Widgets"" and ""Gizmos."""` ke **msiexec** perintah.

**Topics**
+ [InstallMSI (Windows)](#action-modules-install-msi)
+ [UninstallMSI (Windows)](#action-modules-uninstall-msi)

### InstallMSI (Windows)
<a name="action-modules-install-msi"></a>

Modul `InstallMSI` tindakan menginstal aplikasi Windows menggunakan file MSI. Anda dapat menentukan file MSI menggunakan jalur lokal, URI objek S3, atau URL web. Opsi reboot mengkonfigurasi perilaku reboot sistem.

AWSTOE menghasilkan **msiexec** perintah berdasarkan parameter input untuk modul tindakan. Nilai untuk parameter input `path` (lokasi file MSI) dan `logFile` (lokasi file log) harus diapit tanda kutip (“).

Kode keluar MSI berikut dianggap berhasil:
+ 0 (Sukses)
+ 1614 (ERROR\$1PRODUCT\$1UNINSTALLED)
+ 1641 (Reboot Dimulai)
+ 3010 (Diperlukan Reboot)


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | 
| --- | --- | --- | --- | --- | --- | 
| path |  Tentukan lokasi file MSI menggunakan salah satu dari berikut ini: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-action-modules.html) Ekspresi rantai diperbolehkan.  | Tali | Ya | N/A | N/A | 
| reboot |  Konfigurasikan perilaku reboot sistem yang mengikuti keberhasilan menjalankan modul tindakan. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-action-modules.html)  | String | Tidak | Allow | Allow, Force, Skip | 
| logOptions |  Tentukan opsi yang akan digunakan untuk logging instalasi MSI. Bendera yang ditentukan diteruskan ke penginstal MSI, bersama dengan parameter baris `/L` perintah untuk mengaktifkan logging. Jika tidak ada flag yang ditentukan, AWSTOE gunakan nilai default. Untuk informasi selengkapnya tentang opsi log untuk MSI, lihat [Opsi Baris Perintah](https://learn.microsoft.com/en-us/windows/win32/msi/command-line-options) dalam dokumentasi produk *Penginstal Microsoft Windows*.  | String | Tidak | \$1VX | i,w,e,a,r,u,c,m,o,p,v,x,\$1,\$1,\$1 | 
| logFile |  Jalur absolut atau relatif ke lokasi file log. Jika jalur file log tidak ada, itu dibuat. Jika jalur file log tidak disediakan, AWSTOE tidak menyimpan log instalasi MSI.  | String | Tidak | N/A | N/A | 
| properties |  Pasangan nilai kunci properti logging MSI, misalnya: `TARGETDIR: "C:\target\location"`   Catatan: Modifikasi properti berikut tidak diperbolehkan: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-action-modules.html)  | Peta [String] String | Tidak | N/A | N/A | 
| ignoreAuthenticodeSignatureErrors |  Tandai untuk mengabaikan kesalahan validasi tanda tangan authenticode untuk penginstal yang ditentukan di jalur. **Get-AuthenticodeSignature**Perintah ini digunakan untuk memvalidasi installer. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-action-modules.html)  | Boolean | Tidak | false | true, false | 
| allowUnsignedInstaller |  Tandai untuk memungkinkan menjalankan penginstal yang tidak ditandatangani yang ditentukan di jalur. **Get-AuthenticodeSignature**Perintah ini digunakan untuk memvalidasi installer. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-action-modules.html)  | Boolean | Tidak | false | true, false | 

**Contoh**  
Contoh berikut menunjukkan variasi bagian input untuk dokumen komponen Anda, tergantung pada jalur instalasi Anda.

**Contoh masukan: instalasi jalur dokumen lokal**

```
- name: local-path-install
  steps:
    - name: LocalPathInstaller
      action: InstallMSI
      inputs:
        path: C:\sample.msi
        logFile: C:\msilogs\local-path-install.log
        logOptions: '*VX'
        reboot: Allow
        properties:
          COMPANYNAME: '"Amazon Web Services"'
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: true
```

**Contoh masukan: Instalasi jalur Amazon S3**

```
- name: s3-path-install
  steps:
    - name: S3PathInstaller
      action: InstallMSI
      inputs:
        path: s3://<bucket-name>/sample.msi
        logFile: s3-path-install.log
        reboot: Force
        ignoreAuthenticodeSignatureErrors: false
        allowUnsignedInstaller: true
```

**Contoh masukan: instalasi jalur web**

```
- name: web-path-install
  steps:
    - name: WebPathInstaller
      action: InstallMSI
      inputs:
        path: https://<some-path>/sample.msi
        logFile: web-path-install.log
        reboot: Skip
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: false
```

**Output**  
Berikut ini adalah contoh output dari modul `InstallMSI` tindakan.

```
{
	"logFile": "web-path-install.log",
	"msiExitCode": 0,
	"stdout": ""
}
```

### UninstallMSI (Windows)
<a name="action-modules-uninstall-msi"></a>

Modul `UninstallMSI` tindakan memungkinkan Anda untuk menghapus aplikasi Windows menggunakan file MSI. Anda dapat menentukan lokasi file MSI menggunakan jalur file lokal, URI objek S3, atau URL web. Opsi reboot mengkonfigurasi perilaku reboot sistem.

AWSTOE menghasilkan **msiexec** perintah berdasarkan parameter input untuk modul tindakan. Lokasi file MSI (`path`) dan lokasi file log (`logFile`) secara eksplisit diapit tanda kutip ganda (“) saat menghasilkan perintah. **msiexec**

Kode keluar MSI berikut dianggap berhasil:
+ 0 (Sukses)
+ 1605 (ERROR\$1UNKNOWN\$1PRODUCT)
+ 1614 (ERROR\$1PRODUCT\$1UNINSTALLED)
+ 1641 (Reboot Dimulai)
+ 3010 (Diperlukan Reboot)


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Nilai default | Nilai yang dapat diterima | 
| --- | --- | --- | --- | --- | --- | 
| path |  Tentukan lokasi file MSI menggunakan salah satu dari berikut ini: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-action-modules.html) Ekspresi rantai diperbolehkan.  | Tali | Ya | N/A | N/A | 
| reboot |  Mengkonfigurasi perilaku reboot sistem yang mengikuti keberhasilan menjalankan modul tindakan. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-action-modules.html)  | String | Tidak | Allow | Allow, Force, Skip | 
| logOptions |  Tentukan opsi yang akan digunakan untuk logging instalasi MSI. Bendera yang ditentukan diteruskan ke penginstal MSI, bersama dengan parameter baris `/L` perintah untuk mengaktifkan logging. Jika tidak ada flag yang ditentukan, AWSTOE gunakan nilai default. Untuk informasi selengkapnya tentang opsi log untuk MSI, lihat [Opsi Baris Perintah](https://docs.microsoft.com/en-us/windows/win32/msi/command-line-options) dalam dokumentasi produk *Penginstal Microsoft Windows*.  | String | Tidak | \$1VX | i,w,e,a,r,u,c,m,o,p,v,x,\$1,\$1,\$1 | 
| logFile |  Jalur absolut atau relatif ke lokasi file log. Jika jalur file log tidak ada, itu dibuat. Jika jalur file log tidak disediakan, AWSTOE tidak menyimpan log instalasi MSI.  | String | Tidak | N/A | N/A | 
| properties |  Pasangan nilai kunci properti logging MSI, misalnya: `TARGETDIR: "C:\target\location"`   Catatan: Modifikasi properti berikut tidak diperbolehkan: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-action-modules.html)  | Peta [String] String | Tidak | N/A | N/A | 
| ignoreAuthenticodeSignatureErrors |  Tandai untuk mengabaikan kesalahan validasi tanda tangan authenticode untuk penginstal yang ditentukan di jalur. **Get-AuthenticodeSignature**Perintah ini digunakan untuk memvalidasi installer. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-action-modules.html)  | Boolean | Tidak | false | true, false | 
| allowUnsignedInstaller |  Tandai untuk memungkinkan menjalankan penginstal yang tidak ditandatangani yang ditentukan di jalur. **Get-AuthenticodeSignature**Perintah ini digunakan untuk memvalidasi installer. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-action-modules.html)  | Boolean | Tidak | false | true, false | 

**Contoh**  
Contoh berikut menunjukkan variasi bagian input untuk dokumen komponen Anda, tergantung pada jalur instalasi Anda.

**Contoh masukan: hapus instalasi jalur dokumen lokal**

```
- name: local-path-uninstall
  steps:
    - name: LocalPathUninstaller
      action: UninstallMSI
      inputs:
        path: C:\sample.msi
        logFile: C:\msilogs\local-path-uninstall.log
        logOptions: '*VX'
        reboot: Allow
        properties:
          COMPANYNAME: '"Amazon Web Services"'
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: true
```

**Contoh masukan: hapus instalasi jalur Amazon S3**

```
- name: s3-path-uninstall
  steps:
    - name: S3PathUninstaller
      action: UninstallMSI
      inputs:
        path: s3://<bucket-name>/sample.msi
        logFile: s3-path-uninstall.log
        reboot: Force
        ignoreAuthenticodeSignatureErrors: false
        allowUnsignedInstaller: true
```

**Contoh masukan: hapus instalasi jalur web**

```
- name: web-path-uninstall
  steps:
    - name: WebPathUninstaller
      action: UninstallMSI
      inputs:
        path: https://<some-path>/sample.msi
        logFile: web-path-uninstall.log
        reboot: Skip
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: false
```

**Output**  
Berikut ini adalah contoh output dari modul `UninstallMSI` tindakan.

```
{
	"logFile": "web-path-uninstall.log",
	"msiExitCode": 0,
	"stdout": ""
}
```

## Modul tindakan sistem
<a name="action-modules-system-actions"></a>

Bagian berikut menjelaskan modul tindakan yang melakukan tindakan sistem atau memperbarui pengaturan sistem.

**Topics**
+ [Reboot (Linux, Windows)](#action-modules-reboot)
+ [SetRegistry (Jendela)](#action-modules-setregistry)
+ [UpdateOS (Linux, Windows)](#action-modules-updateos)

### Reboot (Linux, Windows)
<a name="action-modules-reboot"></a>

Modul aksi **Reboot me-reboot** instance. Ini memiliki opsi yang dapat dikonfigurasi untuk menunda dimulainya reboot. Secara default, `delaySeconds` diatur ke`0`, yang berarti bahwa tidak ada penundaan. Batas waktu langkah tidak didukung untuk modul tindakan Reboot, karena tidak berlaku saat instance di-boot ulang.

Jika aplikasi dipanggil oleh Agen Systems Manager, itu menyerahkan kode keluar (`3010`untuk Windows, `194` untuk Linux) ke Agen Systems Manager. Agen Systems Manager menangani reboot sistem seperti yang dijelaskan dalam [Memulai Ulang Instans Terkelola dari](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html) Skrip.

Jika aplikasi dipanggil pada host sebagai proses mandiri, ia menyimpan status eksekusi saat ini, mengonfigurasi pemicu auto-run pasca-reboot untuk menjalankan kembali aplikasi setelah reboot, dan kemudian reboot sistem.

**Pemicu auto-run pasca-reboot:**
+ **Jendela**. AWSTOE membuat entri Penjadwal Tugas Windows dengan pemicu yang berjalan secara otomatis di `SystemStartup`
+ **Linux**. AWSTOE menambahkan pekerjaan di crontab yang berjalan secara otomatis setelah sistem reboot.

```
@reboot /download/path/awstoe run --document s3://bucket/key/doc.yaml
```

Pemicu ini dibersihkan saat aplikasi dimulai.

**Percobaan ulang**  
Secara default, jumlah maksimum percobaan ulang diatur ke Systems Manager`CommandRetryLimit`. Jika jumlah reboot melebihi batas coba lagi, otomatisasi gagal. Anda dapat mengubah batas dengan mengedit file konfigurasi agen Systems Manager (`Mds.CommandRetryLimit`). Lihat [Konfigurasi Runtime](https://github.com/aws/amazon-ssm-agent/blob/mainline/README.md#runtime-configuration) di agen Systems Manager open source.

Untuk menggunakan modul tindakan **Reboot**, untuk langkah-langkah yang berisi reboot `exitcode` (misalnya,`3010`), Anda harus menjalankan biner aplikasi sebagai`sudo user`.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | Default | 
| --- | --- | --- | --- | --- | 
| delaySeconds | Menunda jumlah waktu tertentu sebelum memulai reboot. | Bilangan Bulat |  Tidak  |  `0`  | 

**Contoh masukan: langkah reboot**

```
  - name: RebootStep
    action: Reboot
    onFailure: Abort
    maxAttempts: 2
    inputs:
      delaySeconds: 60
```

**Keluaran**

Tidak ada.

Ketika modul **Reboot** selesai, Image Builder melanjutkan ke langkah berikutnya dalam build.

### SetRegistry (Jendela)
<a name="action-modules-setregistry"></a>

Modul **SetRegistry**tindakan menerima daftar input dan memungkinkan Anda untuk mengatur nilai untuk kunci registri yang ditentukan. Jika kunci registri tidak ada, itu dibuat di jalur yang ditentukan. Fitur ini hanya berlaku untuk Windows.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | 
| --- | --- | --- | --- | 
| path | Jalur kunci registri. | Tali | Ya | 
| name | Nama kunci registri. | Tali | Ya | 
| value | Nilai kunci registri. | String/Number/Array | Ya | 
| type | Jenis nilai kunci registri. | Tali | Ya | 

**Awalan jalur yang didukung**
+ `HKEY_CLASSES_ROOT / HKCR:`
+ `HKEY_USERS / HKU:`
+ `HKEY_LOCAL_MACHINE / HKLM:`
+ `HKEY_CURRENT_CONFIG / HKCC:`
+ `HKEY_CURRENT_USER / HKCU:`

**Jenis yang didukung**
+ `BINARY`
+ `DWORD`
+ `QWORD`
+ `SZ`
+ `EXPAND_SZ`
+ `MULTI_SZ`

**Contoh masukan: atur nilai kunci registri**

```
  - name: SetRegistryKeyValues
    action: SetRegistry
    maxAttempts: 3
    inputs:
      - path: HKLM:\SOFTWARE\MySoftWare
        name: MyName
        value: FirstVersionSoftware
        type: SZ
      - path: HKEY_CURRENT_USER\Software\Test
        name: Version
        value: 1.1
        type: DWORD
```

**Keluaran**

Tidak ada.

### UpdateOS (Linux, Windows)
<a name="action-modules-updateos"></a>

Modul tindakan **updateOS** menambahkan dukungan untuk menginstal pembaruan Windows dan Linux. Ini menginstal semua pembaruan yang tersedia secara default. Atau, Anda dapat mengonfigurasi daftar satu atau lebih pembaruan spesifik untuk modul tindakan yang akan diinstal. Anda juga dapat menentukan pembaruan untuk dikecualikan dari instalasi.

Jika daftar “sertakan” dan “kecualikan” disediakan, daftar pembaruan yang dihasilkan hanya dapat mencakup yang tercantum dalam daftar “sertakan” yang tidak tercantum dalam daftar “kecualikan”.

**catatan**  
**UpdateOS** tidak mendukung Amazon Linux 2023 (). AL2023 Kami menyarankan Anda memperbarui AMI dasar Anda ke versi baru yang disertakan dengan setiap rilis. Untuk alternatif lain, lihat [Mengontrol pembaruan yang diterima dari rilis mayor dan minor](https://docs.aws.amazon.com/linux/al2023/ug/deterministic-upgrades.html#controlling-release-updates) di *Panduan Pengguna Amazon Linux 2023*.
+ **Jendela**. Pembaruan diinstal dari sumber pembaruan yang dikonfigurasi pada mesin target.
+ **Linux**. Aplikasi memeriksa manajer paket yang didukung di platform Linux dan menggunakan salah satu `yum` atau manajer `apt-get` paket. Jika keduanya tidak didukung, kesalahan dikembalikan. Anda harus memiliki `sudo` izin untuk menjalankan modul tindakan **updateOS**. Jika Anda tidak memiliki `sudo` izin, maka `error.Input` dikembalikan.


**Input**  

| Nama Kunci | Deskripsi | Tipe | Diperlukan | 
| --- | --- | --- | --- | 
| include |  Untuk Windows, Anda dapat menentukan yang berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-action-modules.html) Untuk Linux, Anda dapat menentukan satu atau lebih paket untuk dimasukkan dalam daftar pembaruan untuk instalasi.  | Daftar String | Tidak | 
| exclude |  Untuk Windows, Anda dapat menentukan yang berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/imagebuilder/latest/userguide/toe-action-modules.html) Untuk Linux, Anda dapat menentukan satu atau lebih paket yang akan dikecualikan dari daftar pembaruan untuk instalasi.  | Daftar String | Tidak | 

**Contoh masukan: tambahkan dukungan untuk menginstal pembaruan Linux**

```
  - name: UpdateMyLinux
    action: UpdateOS
    onFailure: Abort
    maxAttempts: 3
    inputs:
      exclude:
        - ec2-hibinit-agent
```

**Contoh masukan: tambahkan dukungan untuk menginstal pembaruan Windows**

```
  - name: UpdateWindowsOperatingSystem
    action: UpdateOS
    onFailure: Abort
    maxAttempts: 3
    inputs:
      include:
        - KB1234567
        - '*Security*'
```

**Keluaran**

Tidak ada.

# Konfigurasikan input untuk perintah AWSTOE run
<a name="toe-run-config-input"></a>

Untuk merampingkan input baris perintah untuk AWSTOE **run** perintah Anda, Anda dapat menyertakan pengaturan untuk parameter perintah dan opsi dalam file konfigurasi input format JSON dengan ekstensi `.json` file. AWSTOE dapat membaca file Anda dari salah satu lokasi berikut:
+ Sebuah path file lokal (*./config.json*).
+ Ember S3 (*s3://<bucket-path>/<bucket-name>/config.json*).

Saat Anda memasukkan **run** perintah, Anda dapat menentukan file konfigurasi input menggunakan **--config** parameter. Misalnya:

```
awstoe run --config <file-path>/config.json
```

**File konfigurasi masukan**  
File JSON konfigurasi input mencakup pasangan nilai kunci untuk semua pengaturan yang dapat Anda berikan secara langsung melalui parameter dan opsi **run** perintah. Jika Anda menentukan pengaturan di file konfigurasi input dan **run** perintah, sebagai parameter atau opsi, aturan prioritas berikut berlaku:

**Aturan diutamakan**

1. Pengaturan yang diberikan langsung ke **run** perintah di AWS CLI, melalui parameter atau opsi, mengesampingkan nilai apa pun yang ditentukan dalam file konfigurasi input untuk pengaturan yang sama.

1. Pengaturan dalam file konfigurasi input mengesampingkan nilai default komponen.

1. Jika tidak ada pengaturan lain yang diteruskan ke dalam dokumen komponen, itu dapat menerapkan nilai default, jika ada.

Ada dua pengecualian untuk aturan ini - dokumen dan parameter. Pengaturan ini bekerja secara berbeda dalam konfigurasi input dan sebagai parameter perintah. Jika Anda menggunakan file konfigurasi input, Anda tidak boleh menentukan parameter ini langsung ke **run** perintah. Melakukannya akan menghasilkan kesalahan.

**Pengaturan komponen**  
File konfigurasi input berisi pengaturan berikut. Untuk merampingkan file Anda, Anda dapat meninggalkan pengaturan opsional apa pun yang tidak diperlukan. Semua pengaturan adalah opsional kecuali dinyatakan lain.
+ **cwIgnoreFailures**(Boolean) - Abaikan kegagalan logging dari CloudWatch Log.
+ **cwLogGroup**(String) — `LogGroup` Nama untuk CloudWatch Log.
+ **cwLogRegion**(String) - AWS Wilayah yang berlaku untuk CloudWatch Log.
+ **cwLogStream**(String) - `LogStream` Nama untuk CloudWatch Log, yang mengarahkan ke AWSTOE mana untuk streaming `console.log` file.
+ **Documents3 BucketOwner** (String) — ID akun pemilik bucket untuk dokumen berbasis S3 URI.
+ **documents** (array of objects, required) - Sebuah array objek JSON yang mewakili dokumen komponen YAMAL yang AWSTOE **run** menjalankan perintah. Setidaknya satu dokumen komponen harus ditentukan.

  Setiap objek terdiri dari bidang-bidang berikut:
  + **path** (String, required) - Lokasi file dari dokumen komponen YAMAL. Ini harus salah satu dari yang berikut:
    + Sebuah path file lokal (*./component-doc-example.yaml*).
    + URI S3 (`s3://bucket/key`).
    + Versi build komponen Image Builder ARN (arn:aws:imagebuilder:us-west-:component/ /2021.12.02/1). *2:123456789012* *my-example-component*
  + **parameter** (array objek) — Sebuah array objek pasangan kunci-nilai, masing-masing mewakili parameter spesifik komponen yang diteruskan **run** perintah ketika menjalankan dokumen komponen. Parameter adalah opsional untuk komponen. Dokumen komponen mungkin atau mungkin tidak memiliki parameter yang ditentukan.

    Setiap objek terdiri dari bidang-bidang berikut:
    + **name** (String, required) — Nama parameter komponen.
    + **value** (String, required) — Nilai untuk diteruskan ke dokumen komponen untuk parameter bernama.

    Untuk mempelajari lebih lanjut tentang parameter komponen, lihat bagian **Parameter** di [Gunakan variabel dalam dokumen komponen kustom Anda](toe-user-defined-variables.md) halaman.
+ **ExecutonId** (String) — Ini adalah ID unik yang berlaku untuk eksekusi perintah saat ini. **run** ID ini disertakan dalam nama file keluaran dan log, untuk mengidentifikasi file-file tersebut secara unik, dan menautkannya ke eksekusi perintah saat ini. Jika pengaturan ini ditinggalkan, buat AWSTOE GUID.
+ **LogDirectory** (String) - Direktori tujuan tempat AWSTOE menyimpan semua file log dari eksekusi perintah ini. Secara default, direktori ini terletak di dalam direktori induk berikut:`TOE_<DATETIME>_<EXECUTIONID>`. Jika Anda tidak menentukan direktori log, AWSTOE gunakan direktori kerja saat ini (`.`).
+ **LogS3 BucketName** (String) - Jika log komponen disimpan di Amazon S3 (disarankan) AWSTOE , unggah log aplikasi komponen ke bucket S3 yang disebutkan dalam parameter ini.
+ **LogS3 BucketOwner** (String) - Jika log komponen disimpan di Amazon S3 (disarankan), ini adalah ID akun pemilik untuk bucket AWSTOE tempat menulis file log.
+ **LogS3 KeyPrefix** (String) - Jika log komponen disimpan di Amazon S3 (disarankan), ini adalah awalan kunci objek S3 untuk lokasi log di bucket.
+ **parameter** (array objek) — Sebuah array objek pasangan kunci-nilai yang mewakili parameter yang berlaku secara global untuk semua komponen yang termasuk dalam eksekusi **run** perintah saat ini.
  + **name** (String, required) — Nama parameter global.
  + **value** (String, required) — Nilai untuk diteruskan ke semua dokumen komponen untuk parameter bernama.
+ **phase** (String) - Daftar dipisahkan koma yang menentukan fase mana yang akan dijalankan dari dokumen komponen YAMAL. Jika dokumen komponen menyertakan fase tambahan, itu tidak akan berjalan.
+ **StateDirectory** (String) - Jalur file tempat file pelacakan negara disimpan.
+ **trace** (Boolean) - Mengaktifkan logging verbose ke konsol.

**Contoh**  
Contoh berikut menunjukkan file konfigurasi input yang menjalankan `build` dan `test` fase untuk dua dokumen komponen:`sampledoc.yaml`, dan`conversation-intro.yaml`. Setiap dokumen komponen memiliki parameter yang hanya berlaku untuk dirinya sendiri, dan keduanya menggunakan satu parameter bersama. `project`Parameter berlaku untuk kedua dokumen komponen.

```
{
   "documents": [
     {
       "path": "<file path>/awstoe/sampledoc.yaml>",
       "parameters": [
         {
           "name": "dayofweek",
           "value": "Monday"
         }
       ]
     },
     {
       "path": "<file path>/awstoe/conversation-intro.yaml>",
       "parameters": [
         {
           "name": "greeting",
           "value": "Hello, HAL."
         }
       ]
     }
   ],
   "phases": "build,test",
   "parameters": [
     {
       "name": "project",
       "value": "examples"
     }
   ],
   "cwLogGroup": "<log_group_name>",
   "cwLogStream": "<log_stream_name>",
   "documentS3BucketOwner": "<owner_aws_account_number>",
   "executionId": "<id_number>",
   "logDirectory": "<local_directory_path>",
   "logS3BucketName": "<bucket_name_for_log_files>",
   "logS3KeyPrefix": "<key_prefix_for_log_files>",
   "logS3BucketOwner": "<owner_aws_account_number>"
 }
```