

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

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