

Amazon CodeCatalyst tidak lagi terbuka untuk pelanggan baru. Pelanggan yang sudah ada dapat terus menggunakan layanan ini seperti biasa. Lihat informasi yang lebih lengkap di [Cara bermigrasi dari CodeCatalyst](migration.md).

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

# Mengkonfigurasi gambar komputasi dan runtime
<a name="workflows-working-compute"></a>

Dalam CodeCatalyst alur kerja, Anda dapat menentukan image lingkungan komputasi dan runtime yang CodeCatalyst digunakan untuk menjalankan tindakan alur kerja.

*Compute* mengacu pada mesin komputasi (CPU, memori, dan sistem operasi) yang dikelola dan dikelola oleh CodeCatalyst untuk menjalankan tindakan alur kerja.

**catatan**  
Jika komputasi didefinisikan sebagai properti alur kerja, maka komputasi tidak dapat didefinisikan sebagai properti dari tindakan apa pun dalam alur kerja tersebut. Demikian pula, jika komputasi didefinisikan sebagai properti dari tindakan apa pun, itu tidak dapat didefinisikan dalam alur kerja.

*Gambar lingkungan runtime* adalah wadah Docker di mana CodeCatalyst menjalankan tindakan alur kerja. Container Docker berjalan di atas platform komputasi yang Anda pilih, dan menyertakan sistem operasi dan alat tambahan yang mungkin diperlukan oleh tindakan alur kerja, seperti Node.js AWS CLI, dan .tar.

**Topics**
+ [Jenis komputasi](#compute.types)
+ [Hitung armada](#compute.fleets)
+ [Properti armada sesuai permintaan](#compute.on-demand)
+ [Properti armada yang disediakan](#compute.provisioned-fleets)
+ [Membuat armada yang disediakan](projects-create-compute-resource.md)
+ [Mengedit armada yang disediakan](edit-compute-resource.md)
+ [Menghapus armada yang disediakan](delete-compute-resource.md)
+ [Menetapkan armada atau menghitung untuk suatu tindakan](workflows-assign-compute-resource.md)
+ [Berbagi komputasi di seluruh tindakan](compute-sharing.md)
+ [Menentukan gambar lingkungan runtime](build-images.md)

## Jenis komputasi
<a name="compute.types"></a>

CodeCatalyst menawarkan jenis komputasi berikut:
+ Amazon EC2
+ AWS Lambda

Amazon EC2 menawarkan fleksibilitas yang dioptimalkan selama aksi berjalan dan Lambda menawarkan kecepatan start-up aksi yang dioptimalkan. Lambda mendukung tindakan alur kerja yang lebih cepat berjalan karena latensi start-up yang lebih rendah. Lambda memungkinkan Anda menjalankan alur kerja dasar yang dapat membangun, menguji, dan menyebarkan aplikasi tanpa server dengan runtime umum. Runtime ini termasuk Node.js, Python, Java, .NET, dan Go. Namun, ada beberapa kasus penggunaan yang tidak didukung Lambda, dan jika berdampak pada Anda, gunakan jenis komputasi Amazon EC2:
+ Lambda tidak mendukung gambar lingkungan runtime dari registri tertentu.
+ Lambda tidak mendukung alat yang memerlukan izin root. Untuk alat seperti `yum` atau`rpm`, gunakan jenis komputasi Amazon EC2 atau alat lain yang tidak memerlukan izin root.
+ Lambda tidak mendukung build atau run Docker. Tindakan berikut yang menggunakan image Docker tidak didukung: Deploy AWS CloudFormation stack, Deploy to Amazon ECS, Amazon S3 publish, AWS CDK bootstrap, AWS CDK deploy, invoke, dan Actions. AWS Lambda GitHub GitHub Tindakan berbasis Docker yang berjalan dalam CodeCatalyst GitHub tindakan Tindakan juga tidak didukung dengan komputasi Lambda. Anda dapat menggunakan alternatif yang tidak memerlukan izin root, seperti Podman.
+ Lambda tidak mendukung penulisan ke file di luar. `/tmp` Saat mengonfigurasi tindakan alur kerja, Anda dapat mengonfigurasi ulang alat untuk menginstal atau menulis. `/tmp` Jika Anda memiliki tindakan build yang diinstal`npm`, pastikan Anda mengonfigurasinya untuk `/tmp` diinstal.
+ Lambda tidak mendukung runtime lebih dari 15 menit.

## Hitung armada
<a name="compute.fleets"></a>

CodeCatalyst menawarkan armada komputasi berikut:
+ Armada sesuai permintaan
+ Armada yang disediakan

Dengan armada sesuai permintaan, ketika tindakan alur kerja dimulai, alur kerja menyediakan sumber daya yang dibutuhkan. Mesin-mesin dihancurkan ketika aksi selesai. Anda hanya membayar untuk jumlah menit yang Anda jalankan tindakan Anda. Armada sesuai permintaan dikelola sepenuhnya, dan mencakup kemampuan penskalaan otomatis untuk menangani lonjakan permintaan.

CodeCatalyst juga menawarkan armada yang disediakan yang berisi mesin yang ditenagai oleh Amazon EC2 yang dikelola oleh. CodeCatalyst Dengan armada yang disediakan, Anda mengonfigurasi satu set mesin khusus untuk menjalankan tindakan alur kerja Anda. Mesin-mesin ini tetap menganggur, siap untuk memproses tindakan segera. Dengan armada yang disediakan, mesin Anda selalu berjalan dan akan dikenakan biaya selama disediakan.

Untuk membuat, memperbarui, atau menghapus armada, Anda harus memiliki peran **administrator Space** atau peran **administrator Proyek**.

## Properti armada sesuai permintaan
<a name="compute.on-demand"></a>

CodeCatalyst menyediakan armada sesuai permintaan berikut:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/codecatalyst/latest/userguide/workflows-working-compute.html)

**catatan**  
Spesifikasi untuk armada sesuai permintaan akan bervariasi tergantung pada tingkat penagihan Anda. Untuk informasi selengkapnya, silakan lihat [Harga ](https://codecatalyst.aws/explore/pricing).

Jika tidak ada armada yang dipilih, CodeCatalyst gunakan`Linux.x86-64.Large`.

## Properti armada yang disediakan
<a name="compute.provisioned-fleets"></a>

Armada yang disediakan berisi properti berikut: 

**Sistem operasi**  
Sistem operasi. Sistem operasi berikut tersedia:  
+ Amazon Linux 2
+ Windows Server 2022
**catatan**  
Armada Windows hanya didukung dalam aksi build. Tindakan lain saat ini tidak mendukung Windows.

**Arsitektur **  
Arsitektur prosesor. Arsitektur berikut tersedia:  
+ x86\$164
+ Arm64

**Jenis mesin**  
Jenis mesin untuk setiap contoh. Jenis mesin berikut tersedia:      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/codecatalyst/latest/userguide/workflows-working-compute.html)

**Kapasitas**  
Jumlah awal mesin yang dialokasikan untuk armada, yang mendefinisikan jumlah tindakan yang dapat berjalan secara paralel.

**Mode penskalaan**  
Mendefinisikan perilaku ketika jumlah tindakan melebihi kapasitas armada.    
**Penyediaan kapasitas tambahan sesuai permintaan**  
Mesin tambahan disiapkan sesuai permintaan yang secara otomatis ditingkatkan sebagai respons terhadap tindakan baru yang berjalan, dan kemudian diturunkan ke kapasitas dasar saat tindakan selesai. Ini dapat menimbulkan biaya tambahan, karena Anda membayar per menit untuk setiap mesin yang berjalan.  
**Tunggu hingga kapasitas armada tambahan tersedia**  
Tindakan berjalan ditempatkan dalam antrian sampai mesin tersedia. Ini membatasi biaya tambahan karena tidak ada mesin tambahan yang dialokasikan.

# Membuat armada yang disediakan
<a name="projects-create-compute-resource"></a>

Gunakan petunjuk berikut untuk membuat armada yang disediakan.

**catatan**  
Armada yang disediakan akan dinonaktifkan setelah 2 minggu tidak aktif. Jika digunakan lagi, mereka akan diaktifkan kembali secara otomatis, tetapi aktivasi ulang ini dapat menyebabkan latensi terjadi.

**Untuk membuat armada yang disediakan**

1. **Di panel navigasi, pilih **CI/CD**, lalu pilih Compute.**

1. Pilih **Buat armada yang disediakan.**

1. Di bidang teks **nama armada yang disediakan**, masukkan nama untuk armada Anda.

1. Dari menu drop-down **sistem operasi**, pilih sistem operasi.

1. Dari menu drop-down **tipe Mesin**, pilih jenis mesin untuk mesin Anda.

1. Di bidang teks **Kapasitas**, masukkan jumlah maksimum mesin di armada.

1. Dari menu drop-down **mode Scaling**, pilih perilaku overflow yang diinginkan. Untuk informasi lebih lanjut tentang bidang ini, lihat[Properti armada yang disediakan](workflows-working-compute.md#compute.provisioned-fleets).

1. Pilih **Buat**.

Setelah membuat armada yang disediakan, Anda siap untuk menetapkannya ke suatu tindakan. Lihat informasi yang lebih lengkap di [Menetapkan armada atau menghitung untuk suatu tindakan](workflows-assign-compute-resource.md).

# Mengedit armada yang disediakan
<a name="edit-compute-resource"></a>

Gunakan petunjuk berikut untuk mengedit armada yang disediakan.

**catatan**  
Armada yang disediakan akan dinonaktifkan setelah 2 minggu tidak aktif. Jika digunakan lagi, mereka akan diaktifkan kembali secara otomatis, tetapi aktivasi ulang ini dapat menyebabkan latensi terjadi.

**Untuk mengedit armada yang disediakan**

1. **Di panel navigasi, pilih **CI/CD**, lalu pilih Compute.**

1. Dalam daftar **armada yang disediakan, pilih armada** yang ingin Anda edit.

1. Pilih **Edit**.

1. Di bidang teks **Kapasitas**, masukkan jumlah maksimum mesin di armada.

1. Dari menu drop-down **mode Scaling**, pilih perilaku overflow yang diinginkan. Untuk informasi lebih lanjut tentang bidang ini, lihat[Properti armada yang disediakan](workflows-working-compute.md#compute.provisioned-fleets).

1. Pilih **Simpan**.

# Menghapus armada yang disediakan
<a name="delete-compute-resource"></a>

Gunakan petunjuk berikut untuk menghapus armada yang disediakan.

**Untuk menghapus armada yang disediakan**
**Awas**  
Sebelum menghapus armada yang disediakan, hapus dari semua tindakan dengan menghapus `Fleet` properti dari kode YAMAL tindakan. Setiap tindakan yang terus mereferensikan armada yang disediakan setelah dihapus akan gagal saat tindakan berjalan berikutnya.

1. **Di panel navigasi, pilih **CI/CD**, lalu pilih Compute.**

1. Dalam daftar **armada yang disediakan, pilih armada** yang ingin Anda hapus.

1. Pilih **Hapus**.

1. Masukkan **delete** untuk mengonfirmasi penghapusan.

1. Pilih **Hapus**.

# Menetapkan armada atau menghitung untuk suatu tindakan
<a name="workflows-assign-compute-resource"></a>

Secara default, tindakan alur kerja menggunakan armada `Linux.x86-64.Large` sesuai permintaan dengan jenis komputasi Amazon EC2. Untuk menggunakan armada yang disediakan sebagai gantinya, atau menggunakan armada sesuai permintaan yang berbeda, seperti`Linux.x86-64.2XLarge`, gunakan instruksi berikut.

------
#### [ Visual ]

**Sebelum Anda mulai**
+ Jika Anda ingin menetapkan armada yang disediakan, Anda harus terlebih dahulu membuat armada yang disediakan. Untuk informasi selengkapnya, lihat [Membuat armada yang disediakan](projects-create-compute-resource.md).

**Untuk menetapkan armada yang disediakan atau jenis armada yang berbeda untuk suatu tindakan**

1. Buka CodeCatalyst konsol di [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Pilih proyek Anda.

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih nama alur kerja Anda. Anda dapat memfilter berdasarkan repositori sumber atau nama cabang tempat alur kerja ditentukan, atau memfilter berdasarkan nama atau status alur kerja.

1. Pilih **Edit**.

1. Pilih **Visual**.

1. Dalam diagram alur kerja, pilih tindakan yang ingin Anda tetapkan armada yang disediakan atau jenis armada baru.

1. Pilih tab **Konfigurasi**.

1. Dalam **armada Compute**, lakukan hal berikut:

   Tentukan mesin atau armada yang akan menjalankan alur kerja atau tindakan alur kerja Anda. Dengan armada sesuai permintaan, ketika suatu tindakan dimulai, alur kerja menyediakan sumber daya yang dibutuhkan, dan mesin dihancurkan ketika tindakan selesai. Contoh armada sesuai permintaan:`Linux.x86-64.Large`,. `Linux.x86-64.XLarge` Untuk informasi lebih lanjut tentang armada sesuai permintaan, lihat. [Properti armada sesuai permintaan](workflows-working-compute.md#compute.on-demand)

   Dengan armada yang disediakan, Anda mengonfigurasi satu set mesin khusus untuk menjalankan tindakan alur kerja Anda. Mesin-mesin ini tetap menganggur, siap untuk memproses tindakan segera. Untuk informasi selengkapnya tentang armada yang disediakan, lihat. [Properti armada yang disediakan](workflows-working-compute.md#compute.provisioned-fleets)

   Jika `Fleet` dihilangkan, defaultnya adalah. `Linux.x86-64.Large`

1. (Opsional) Pilih **Validasi** untuk memvalidasi kode YAMAL alur kerja sebelum melakukan.

1. Pilih **Komit**, masukkan pesan komit, dan pilih **Komit** lagi.

------
#### [ YAML ]

**Sebelum Anda mulai**
+ Jika Anda ingin menetapkan armada yang disediakan, Anda harus terlebih dahulu membuat armada yang disediakan. Untuk informasi selengkapnya, lihat [Membuat armada yang disediakan](projects-create-compute-resource.md).

**Untuk menetapkan armada yang disediakan atau jenis armada yang berbeda untuk suatu tindakan**

1. Buka CodeCatalyst konsol di [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Pilih proyek Anda.

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih nama alur kerja Anda. Anda dapat memfilter berdasarkan repositori sumber atau nama cabang tempat alur kerja ditentukan, atau memfilter berdasarkan nama atau status alur kerja.

1. Pilih **Edit**.

1. Pilih **YAMAL.**

1. Temukan tindakan yang ingin Anda tetapkan untuk armada yang disediakan atau jenis armada baru.

1. Dalam aksi, tambahkan `Compute` properti dan atur `Fleet` ke nama armada Anda atau jenis armada sesuai permintaan. Untuk informasi selengkapnya, lihat deskripsi `Fleet` properti di [Membangun dan menguji tindakan YAMB](build-action-ref.md) for your action.

1. (Opsional) Pilih **Validasi** untuk memvalidasi kode YAMAL alur kerja sebelum melakukan.

1. Pilih **Komit**, masukkan pesan komit, dan pilih **Komit** lagi.

------

# Berbagi komputasi di seluruh tindakan
<a name="compute-sharing"></a>

[Secara default, tindakan dalam alur kerja berjalan pada instance terpisah dalam sebuah fleet.](workflows-working-compute.md#compute.fleets) Perilaku ini memberikan tindakan dengan isolasi dan prediktabilitas pada keadaan input. Perilaku default memerlukan konfigurasi eksplisit untuk berbagi konteks seperti file dan variabel antar tindakan. 

Berbagi komputasi adalah kemampuan yang memungkinkan Anda menjalankan semua tindakan dalam alur kerja pada instance yang sama. Menggunakan berbagi komputasi dapat memberikan runtime alur kerja yang lebih cepat karena lebih sedikit waktu yang dihabiskan untuk menyediakan instance. Anda juga dapat berbagi file (artefak) antar tindakan tanpa konfigurasi alur kerja tambahan.

Saat alur kerja dijalankan menggunakan berbagi komputasi, instance dalam armada default atau yang ditentukan dicadangkan selama durasi semua tindakan dalam alur kerja tersebut. Ketika alur kerja berjalan selesai, reservasi instance dilepaskan.

**Topics**
+ [Menjalankan beberapa tindakan pada komputasi bersama](#how-to-compute-share)
+ [Pertimbangan untuk berbagi komputasi](#compare-compute-sharing)
+ [Mengaktifkan berbagi komputasi](#compute-sharing-steps)
+ [Contoh](#compute-sharing-examples)

## Menjalankan beberapa tindakan pada komputasi bersama
<a name="how-to-compute-share"></a>

Anda dapat menggunakan `Compute` atribut dalam definisi YAMAL di tingkat alur kerja untuk menentukan properti tindakan fleet dan compute sharing. Anda juga dapat mengonfigurasi properti komputasi menggunakan editor visual di CodeCatalyst. Untuk menentukan armada, tetapkan nama armada yang ada, atur jenis komputasi ke **EC2**, dan aktifkan berbagi komputasi.

**catatan**  
Berbagi komputasi hanya didukung jika jenis komputasi disetel ke **EC2**, dan tidak didukung untuk sistem operasi Windows Server 2022. Untuk informasi selengkapnya tentang armada komputasi, tipe komputasi, dan properti, lihat. [Mengkonfigurasi gambar komputasi dan runtime](workflows-working-compute.md)

**catatan**  
Jika Anda berada di tingkat Gratis dan Anda menentukan `Linux.x86-64.2XLarge` armada `Linux.x86-64.XLarge` atau secara manual dalam definisi alur kerja YAMAL, tindakan akan tetap berjalan pada armada default ()`Linux.x86-64.Large`. Untuk informasi selengkapnya tentang ketersediaan dan harga komputasi, lihat [tabel untuk opsi tingkatan.](https://codecatalyst.aws/explore/pricing) 

Saat berbagi komputasi diaktifkan, folder yang berisi sumber alur kerja secara otomatis disalin di seluruh tindakan. Anda tidak perlu mengonfigurasi artefak keluaran dan mereferensikannya sebagai artefak masukan di seluruh definisi alur kerja (file YAMAL). Sebagai penulis alur kerja, Anda perlu memasang variabel lingkungan menggunakan input dan output, seperti yang Anda lakukan tanpa menggunakan berbagi komputasi. Jika Anda ingin berbagi folder di antara tindakan di luar sumber alur kerja, pertimbangkan caching file. Untuk informasi selengkapnya, silakan lihat [Berbagi artefak dan file antar tindakan](workflows-working-artifacts.md) dan [Caching file antara alur kerja berjalan](workflows-caching.md).

Repositori sumber tempat file definisi alur kerja Anda berada diidentifikasi oleh label. `WorkflowSource` Saat menggunakan berbagi komputasi, sumber alur kerja diunduh dalam tindakan pertama yang mereferensikannya dan secara otomatis tersedia untuk tindakan selanjutnya dalam alur kerja yang akan digunakan. Setiap perubahan yang dilakukan pada folder yang berisi sumber alur kerja oleh suatu tindakan, seperti menambahkan, memodifikasi, atau menghapus file, juga terlihat dalam tindakan selanjutnya dalam alur kerja. Anda dapat mereferensikan file yang berada di folder sumber alur kerja di salah satu tindakan alur kerja Anda, seperti yang Anda bisa tanpa menggunakan berbagi komputasi. Untuk informasi selengkapnya, lihat [Merujuk file repositori sumber](workflows-sources-reference-files.md).

**catatan**  
Alur kerja berbagi komputasi perlu menentukan urutan tindakan yang ketat, sehingga tindakan paralel tidak dapat diatur. Meskipun artefak keluaran dapat dikonfigurasi pada tindakan apa pun dalam urutan, artefak input tidak didukung.

## Pertimbangan untuk berbagi komputasi
<a name="compare-compute-sharing"></a>

Anda dapat menjalankan alur kerja dengan berbagi komputasi untuk mempercepat alur kerja berjalan dan berbagi konteks antar tindakan dalam alur kerja yang menggunakan instance yang sama. Pertimbangkan hal berikut untuk menentukan apakah menggunakan berbagi komputasi sesuai untuk skenario Anda:


|   | Berbagi komputasi | Tanpa berbagi komputasi | 
| --- | --- | --- | 
|  Jenis komputasi  |  Amazon EC2  |  Amazon EC2, AWS Lambda  | 
|  Penyediaan instans  |  Tindakan berjalan pada contoh yang sama  |  Tindakan berjalan pada instance terpisah  | 
|  Sistem operasi  |  Amazon Linux 2  |  Amazon Linux 2, Windows Server 2022 (hanya tindakan build)  | 
|  Referensi file  |  `$CATALYST_SOURCE_DIR_WorkflowSource`, `/sources/WorkflowSource/`  |  `$CATALYST_SOURCE_DIR_WorkflowSource`, `/sources/WorkflowSource/`  | 
|  Struktur alur kerja  |  Tindakan hanya dapat berjalan secara berurutan  |  Tindakan dapat berjalan paralel  | 
|  Mengakses data di seluruh tindakan alur kerja  |  Akses sumber alur kerja cache () `WorkflowSource`  |  Akses output artefak bersama (memerlukan konfigurasi tambahan)  | 

## Mengaktifkan berbagi komputasi
<a name="compute-sharing-steps"></a>

Gunakan instruksi berikut untuk mengaktifkan berbagi komputasi untuk alur kerja.

------
#### [ Visual ]

**Untuk mengaktifkan berbagi komputasi menggunakan editor visual**

1. Buka CodeCatalyst konsol di [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Pilih proyek Anda.

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih nama alur kerja Anda.

1. Pilih **Edit**.

1. Pilih **Visual**.

1. Pilih **properti Workflow**.

1. Dari menu tarik-turun **tipe Compute**, pilih. **EC2**

1. (Opsional) Dari **armada Compute - menu tarik-turun opsional**, pilih armada yang ingin Anda gunakan untuk menjalankan tindakan alur kerja. Anda dapat memilih armada sesuai permintaan atau membuat dan memilih armada yang disediakan. Untuk informasi selengkapnya, lihat [Membuat armada yang disediakan](projects-create-compute-resource.md) dan [Menetapkan armada atau menghitung untuk suatu tindakan](workflows-assign-compute-resource.md) 

1. Alihkan sakelar untuk mengaktifkan berbagi komputasi dan menjalankan tindakan dalam alur kerja pada armada yang sama.

1. (Opsional) Pilih mode lari untuk alur kerja. Untuk informasi selengkapnya, lihat [Mengonfigurasi perilaku antrian run](workflows-configure-runs.md).

1. Pilih **Komit**, masukkan pesan komit, dan pilih **Komit** lagi.

------
#### [ YAML ]

**Untuk mengaktifkan berbagi komputasi menggunakan editor YAMAL**

1. Buka CodeCatalyst konsol di [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Pilih proyek Anda.

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih nama alur kerja Anda.

1. Pilih **Edit**.

1. Pilih **YAMAL.**

1. Aktifkan berbagi komputasi menyetel `SharedInstance` bidang ke `TRUE` dan `Type` ke`EC2`. Setel `Fleet` ke armada komputasi yang ingin Anda gunakan untuk menjalankan tindakan alur kerja. Anda dapat memilih armada sesuai permintaan atau membuat dan memilih armada yang disediakan. Untuk informasi selengkapnya, lihat [Membuat armada yang disediakan](projects-create-compute-resource.md) dan [Menetapkan armada atau menghitung untuk suatu tindakan](workflows-assign-compute-resource.md)

   Dalam alur kerja YAMAL, tambahkan kode yang mirip dengan berikut ini:

   ```
     Name: MyWorkflow
     SchemaVersion: "1.0"
     Compute: # Define compute configuration.
       Type: EC2
       Fleet: MyFleet # Optionally, choose an on-demand or provisioned fleet.
       SharedInstance: true # Turn on compute sharing. Default is False.
     Actions:
       BuildFirst:
         Identifier: aws/build@v1
         Inputs:
           Sources:
             - WorkflowSource
         Configuration:
           Steps:
             - Run: ...
             ...
   ```

1. (Opsional) Pilih **Validasi** untuk memvalidasi kode YAMAL alur kerja sebelum melakukan.

1. Pilih **Komit**, masukkan pesan komit, dan pilih **Komit** lagi.

------

## Contoh
<a name="compute-sharing-examples"></a>

**Topics**
+ [Contoh: Amazon S3 Publikasikan](#compute-share-s3)

### Contoh: Amazon S3 Publikasikan
<a name="compute-share-s3"></a>

Contoh alur kerja berikut menunjukkan cara melakukan tindakan Publikasikan Amazon S3 Amazon S3 dengan dua cara: pertama menggunakan artefak input dan kemudian menggunakan berbagi komputasi. Dengan berbagi komputasi, artefak input tidak diperlukan karena Anda dapat mengakses cache. `WorkflowSource` Selain itu, artefak keluaran dalam aksi Build tidak lagi diperlukan. Tindakan S3 Publish dikonfigurasi untuk menggunakan `DependsOn` properti eksplisit untuk mempertahankan tindakan berurutan; tindakan Build harus berjalan dengan sukses agar tindakan S3 Publish dapat berjalan.
+ Tanpa berbagi komputasi, Anda perlu menggunakan artefak input dan berbagi output dengan tindakan selanjutnya:

  ```
  Name: S3PublishUsingInputArtifact
  SchemaVersion: "1.0"
  Actions:
    Build:
      Identifier: aws/build@v1
      Outputs:
        Artifacts:
          - Name: ArtifactToPublish
            Files: [output.zip]
      Inputs:
        Sources:
          - WorkflowSource
      Configuration:
        Steps:
          - Run: ./build.sh # Build script that generates output.zip
    PublishToS3:
      Identifier: aws/s3-publish@v1
      Inputs:
        Artifacts:
        - ArtifactToPublish
      Environment:
        Connections:
          - Role: codecatalyst-deployment-role
            Name: dev-deployment-role
        Name: dev-connection
      Configuration:
        SourcePath: output.zip
        DestinationBucketName: amzn-s3-demo-bucket
  ```
+ Saat menggunakan berbagi komputasi dengan `SharedInstance` menyetelnya`TRUE`, Anda dapat menjalankan beberapa tindakan pada instance yang sama dan berbagi artefak dengan menentukan satu sumber alur kerja. Artefak masukan tidak diperlukan dan tidak dapat ditentukan:

  ```
  Name: S3PublishUsingComputeSharing
  SchemaVersion: "1.0"
  Compute: 
    Type: EC2
    Fleet: dev-fleet
    SharedInstance: TRUE
  Actions:
    Build:
      Identifier: aws/build@v1
      Inputs:
        Sources:
          - WorkflowSource
      Configuration:
        Steps:
          - Run: ./build.sh # Build script that generates output.zip
    PublishToS3:
      Identifier: aws/s3-publish@v1
      DependsOn: 
        - Build
      Environment:
        Connections:
          - Role: codecatalyst-deployment-role
            Name: dev-deployment-role
        Name: dev-connection
      Configuration:
        SourcePath: output.zip
        DestinationBucketName: amzn-s3-demo-bucket
  ```

# Menentukan gambar lingkungan runtime
<a name="build-images"></a>

*Gambar lingkungan runtime* adalah wadah Docker di mana CodeCatalyst menjalankan tindakan alur kerja. Container Docker berjalan di atas platform komputasi yang Anda pilih, dan menyertakan sistem operasi dan alat tambahan yang mungkin diperlukan oleh tindakan alur kerja, seperti Node.js AWS CLI, dan .tar.

Secara default, tindakan alur kerja akan berjalan pada salah satu [gambar aktif](#build-curated-images) yang disediakan dan dikelola oleh CodeCatalyst. Hanya tindakan build dan test yang mendukung gambar kustom. Untuk informasi selengkapnya, lihat [Menetapkan image Docker lingkungan runtime kustom ke suatu tindakan](#build-images-specify).

**Topics**
+ [Gambar aktif](#build-curated-images)
+ [Bagaimana jika gambar aktif tidak menyertakan alat yang saya butuhkan?](#build-images-more-tools)
+ [Menetapkan image Docker lingkungan runtime kustom ke suatu tindakan](#build-images-specify)
+ [Contoh](#workflows-working-custom-image-ex)

## Gambar aktif
<a name="build-curated-images"></a>

*Gambar aktif adalah gambar* lingkungan runtime yang sepenuhnya didukung oleh CodeCatalyst dan menyertakan perkakas yang sudah diinstal sebelumnya. Saat ini ada dua set gambar aktif: satu dirilis pada Maret 2024, dan satu lagi dirilis pada November 2022.

Apakah suatu tindakan menggunakan gambar Maret 2024 atau November 2022 tergantung pada tindakannya:
+ [Membuat dan menguji tindakan yang ditambahkan ke alur kerja pada atau setelah 26 Maret 2024 akan menyertakan `Container` bagian dalam definisi YAML mereka yang secara eksplisit menentukan gambar Maret 2024.](#build.default-image) Anda dapat menghapus `Container` bagian tersebut secara opsional untuk kembali ke gambar [November 2022](#build.previous-image).
+ Tindakan pembuatan dan uji yang ditambahkan ke alur kerja sebelum 26 Maret 2024 *tidak* akan menyertakan `Container` bagian dalam definisi YAMLnya, dan akibatnya akan menggunakan gambar [November](#build.previous-image) 2022. Anda dapat menyimpan gambar November 2022, atau Anda dapat meningkatkannya. Untuk memutakhirkan gambar, buka tindakan di editor visual, pilih tab **Konfigurasi**, lalu pilih gambar Maret 2024 dari daftar drop-down gambar **docker lingkungan Runtime**. Pilihan ini akan menambahkan `Container` bagian ke definisi YAMAL tindakan yang diisi dengan gambar Maret 2024 yang sesuai.
+ Semua tindakan lainnya akan menggunakan gambar [November 2022 atau gambar](#build.previous-image) [Maret 2024](#build.default-image). Untuk informasi selengkapnya, lihat dokumentasi tindakan. 

**Topics**
+ [Maret 2024 foto](#build.default-image)
+ [Gambar November 2022](#build.previous-image)

### Maret 2024 foto
<a name="build.default-image"></a>

Gambar Maret 2024 adalah gambar terbaru yang disediakan oleh CodeCatalyst. Ada satu gambar Maret 2024 per kombinasi komputasi type/fleet .

Tabel berikut menunjukkan alat yang diinstal pada setiap gambar Maret 2024.


**Alat gambar Maret 2024**  

| Alat | CodeCatalyst Amazon EC2 untuk Linux x86\$164 - `CodeCatalystLinux_x86_64:2024_03` | CodeCatalyst Lambda untuk Linux x86\$164 - `CodeCatalystLinuxLambda_x86_64:2024_03` | CodeCatalyst Amazon EC2 untuk Linux Arm64 - `CodeCatalystLinux_Arm64:2024_03` | CodeCatalyst Lambda untuk Linux Arm64 - `CodeCatalystLinuxLambda_Arm64:2024_03` | 
| --- | --- | --- | --- | --- | 
| AWS CLI | 2.15.17 | 2.15.17 | 2.15.17 | 2.15.17 | 
| AWS Copilot CLI | 1.32.1 | 1.32.1 | 1.32.1 | 1.32.1 | 
| Docker | 24.0.9 | N/A | 24.0.9 | N/A | 
| Docker Compose | 2.23.3 | N/A | 2.23.3 | N/A | 
| Git | 2.43.0 | 2.43.0 | 2.43.0 | 2.43.0 | 
| Go | 1.21.5 | 1.21.5 | 1.21.5 | 1.21.5 | 
| Gradle | 8.5 | 8.5 | 8.5 | 8.5 | 
| Java | Corretto17 | Corretto17 | Corretto17 | Corretto17 | 
| Maven | 3.9.6 | 3.9.6 | 3.9.6 | 3.9.6 | 
| Node.js | 18.19.0 | 18.19.0 | 18.19.0 | 18.19.0 | 
| npm | 10.2.3 | 10.2.3 | 10.2.3 | 10.2.3 | 
| Python | 3.9.18 | 3.9.18 | 3.9.18 | 3.9.18 | 
| Python3 | 3.11.6 | 3.11.6 | 3.11.6 | 3.11.6 | 
| pip | 22.3.1 | 22.3.1 | 22.3.1 | 22.3.1 | 
| .NET | 8.0.100 | 8.0.100 | 8.0.100 | 8.0.100 | 

### Gambar November 2022
<a name="build.previous-image"></a>

Ada satu gambar November 2022 per type/fleet kombinasi komputasi. Ada juga image Windows November 2022 yang tersedia dengan tindakan build jika Anda telah mengonfigurasi armada [yang disediakan](workflows-working-compute.md#compute.fleets).

Tabel berikut menunjukkan alat yang diinstal pada setiap gambar November 2022.


**Alat gambar November 2022**  

| Alat | CodeCatalyst Amazon EC2 untuk Linux x86\$164 - `CodeCatalystLinux_x86_64:2022_11` | CodeCatalyst Lambda untuk Linux x86\$164 - `CodeCatalystLinuxLambda_x86_64:2022_11` | CodeCatalyst Amazon EC2 untuk Linux Arm64 - `CodeCatalystLinux_Arm64:2022_11` | CodeCatalyst Lambda untuk Linux Arm64 - `CodeCatalystLinuxLambda_Arm64:2022_11` | CodeCatalyst Amazon EC2 untuk Windows x86\$164 - `CodeCatalystWindows_x86_64:2022_11` | 
| --- | --- | --- | --- | --- | --- | 
| AWS CLI | 2.15.17 | 2.15.17 | 2.15.17 | 2.15.17 | 2.13.19 | 
| AWS Copilot CLI | 0.6.0 | 0.6.0 | N/A | N/A | 1.30.1 | 
| Docker | 23.01 | N/A | 23.0.1 | N/A | N/A | 
| Docker Compose | 2.16.0 | N/A | 2.16.0 | N/A | N/A | 
| Git | 2.40.0 | 2.40.0 | 2.39.2 | 2.39.2 | 2.42.0 | 
| Go | 1.20.2 | 1.20.2 | 1.20.1 | 1.20.1 | 1.19 | 
| Gradle | 8.0.2 | 8.0.2 | 8.0.1 | 8.0.1 | 8.3 | 
| Java | Corretto17 | Corretto17 | Corretto17 | Corretto17 | Corretto17 | 
| Maven | 3.9.4 | 3.9.4 | 3.9.0 | 3.9.0 | 3.9.4 | 
| Node.js | 16.20.2 | 16.20.2 | 16.19.1 | 16.14.2 | 16.20.0 | 
| npm | 8.19.4 | 8.19.4 | 8.19.3 | 8.5.0 | 8.19.4 | 
| Python | 3.9.15 | 2.7.18 | 3.11.2 | 2.7.18 | 3.9.13 | 
| Python3 | N/A | 3.9.15 | N/A | 3.11.2 | N/A | 
| pip | 22.2.2 | 22.2.2 | 23.0.1 | 23.0.1 | 22.0.4 | 
| .NET | 6.0.407 | 6.0.407 | 6.0.406 | 6.0.406 | 6.0.414 | 

## Bagaimana jika gambar aktif tidak menyertakan alat yang saya butuhkan?
<a name="build-images-more-tools"></a>

Jika tidak ada [gambar aktif](#build-curated-images) yang disediakan oleh CodeCatalyst menyertakan alat yang Anda butuhkan, Anda memiliki beberapa opsi:
+ Anda dapat memberikan image Docker lingkungan runtime kustom yang menyertakan alat yang diperlukan. Untuk informasi selengkapnya, lihat [Menetapkan image Docker lingkungan runtime kustom ke suatu tindakan](#build-images-specify).
**catatan**  
 Jika Anda ingin memberikan image Docker lingkungan runtime kustom, pastikan gambar kustom Anda telah menginstal Git di dalamnya. 
+ Anda dapat meminta build atau test action alur kerja Anda menginstal alat yang Anda butuhkan.

  Misalnya, Anda dapat menyertakan petunjuk berikut di `Steps` bagian kode YAMP build atau test action:

  ```
  Configuration:
    Steps:
      - Run: ./setup-script
  ```

  *setup-script*Instruksi kemudian akan menjalankan skrip berikut untuk menginstal manajer paket Node (npm):

  ```
  #!/usr/bin/env bash
  echo "Setting up environment"
  
  touch ~/.bashrc
  curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
  source ~/.bashrc 
  nvm install v16.1.0
  source ~/.bashrc
  ```

  Untuk informasi selengkapnya tentang aksi build YAMAL, lihat[Membangun dan menguji tindakan YAMB](build-action-ref.md).

## Menetapkan image Docker lingkungan runtime kustom ke suatu tindakan
<a name="build-images-specify"></a>

Jika Anda tidak ingin menggunakan [gambar Aktif yang disediakan oleh CodeCatalyst, Anda dapat memberikan image](#build-curated-images) Docker lingkungan runtime kustom. Jika Anda ingin memberikan gambar kustom, pastikan Git sudah terpasang di dalamnya. Gambar dapat berada di Docker Hub, Amazon Elastic Container Registry, atau repositori publik apa pun.

Untuk mempelajari cara membuat image Docker kustom, lihat [Containerize aplikasi](https://docs.docker.com/get-started/02_our_app/) dalam dokumentasi Docker.

Gunakan petunjuk berikut untuk menetapkan image Docker lingkungan runtime kustom Anda ke tindakan. Setelah menentukan gambar, CodeCatalyst terapkan ke platform komputasi Anda saat tindakan dimulai.

**catatan**  
**Tindakan berikut tidak mendukung lingkungan runtime kustom Gambar Docker: **Deploy CloudFormation stack, Deploy** **to ECS**, dan **GitHub Actions**. Lingkungan runtime kustom Gambar Docker juga tidak mendukung jenis komputasi Lambda.**

------
#### [ Visual ]

**Untuk menetapkan lingkungan runtime kustom gambar Docker menggunakan editor visual**

1. Buka CodeCatalyst konsol di [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih nama alur kerja Anda. Anda dapat memfilter berdasarkan repositori sumber atau nama cabang tempat alur kerja ditentukan, atau memfilter berdasarkan nama atau status alur kerja.

1. Pilih **Edit**.

1. Pilih **Visual**.

1. Dalam diagram alur kerja, pilih tindakan yang akan menggunakan image Docker lingkungan runtime kustom Anda.

1. Pilih tab **Konfigurasi**.

1. Di dekat bagian bawah, isi bidang berikut.

   **Lingkungan runtime Gambar Docker - opsional**

   Tentukan registri tempat gambar Anda disimpan. Nilai yang valid meliputi:
   + `CODECATALYST`(Editor YAMAL)

     Gambar disimpan dalam CodeCatalyst registri.
   + **Docker Hub** (editor visual) atau `DockerHub` (editor YAMAL)

     Gambar disimpan dalam registri gambar Docker Hub.
   + **Registri lain** (editor visual) atau `Other` (editor YAMAL)

     Gambar disimpan dalam registri gambar khusus. Registri apa pun yang tersedia untuk umum dapat digunakan.
   + **Amazon Elastic Container Registry** (editor visual) atau `ECR` (editor YAMAL)

     Gambar disimpan dalam repositori gambar Amazon Elastic Container Registry. Untuk menggunakan gambar di repositori Amazon ECR, tindakan ini memerlukan akses ke Amazon ECR. Untuk mengaktifkan akses ini, Anda harus membuat [peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) yang mencakup izin berikut dan kebijakan kepercayaan khusus. (Anda dapat mengubah peran yang ada untuk menyertakan izin dan kebijakan, jika Anda mau.)

     Peran IAM harus menyertakan izin berikut dalam kebijakan perannya:
     + `ecr:BatchCheckLayerAvailability`
     + `ecr:BatchGetImage`
     + `ecr:GetAuthorizationToken`
     + `ecr:GetDownloadUrlForLayer`

     Peran IAM harus menyertakan kebijakan kepercayaan khusus berikut:

     Untuk informasi selengkapnya tentang membuat peran IAM, lihat [Membuat peran menggunakan kebijakan kepercayaan khusus (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) di *Panduan Pengguna IAM*.

     Setelah Anda membuat peran, Anda harus menetapkannya ke tindakan melalui lingkungan. Untuk informasi selengkapnya, lihat [Mengaitkan lingkungan dengan tindakan](deploy-environments-add-app-to-environment.md).

   **URL gambar ECR****, gambar **Docker Hub atau URL Gambar****

   Tentukan satu dari yang berikut ini:
   + Jika Anda menggunakan `CODECATALYST` registri, atur gambar ke salah satu [gambar aktif](#build-curated-images) berikut:
     + `CodeCatalystLinux_x86_64:2024_03`
     + `CodeCatalystLinux_x86_64:2022_11`
     + `CodeCatalystLinux_Arm64:2024_03`
     + `CodeCatalystLinux_Arm64:2022_11`
     + `CodeCatalystLinuxLambda_x86_64:2024_03`
     + `CodeCatalystLinuxLambda_x86_64:2022_11`
     + `CodeCatalystLinuxLambda_Arm64:2024_03`
     + `CodeCatalystLinuxLambda_Arm64:2022_11`
     + `CodeCatalystWindows_x86_64:2022_11`
   + Jika Anda menggunakan registri Docker Hub, atur gambar ke nama gambar Docker Hub dan tag opsional.

     Contoh: `postgres:latest`
   + Jika Anda menggunakan registri Amazon ECR, atur gambar ke URI registri Amazon ECR.

     Contoh: `111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-ecs-image-repo`
   + Jika Anda menggunakan registri kustom, atur gambar ke nilai yang diharapkan oleh registri kustom.

1. (Opsional) Pilih **Validasi** untuk memvalidasi kode YAMAL alur kerja sebelum melakukan.

1. Pilih **Komit**, masukkan pesan komit, dan pilih **Komit** lagi.

------
#### [ YAML ]

**Untuk menetapkan image Docker lingkungan runtime kustom menggunakan editor YAMAL**

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih nama alur kerja Anda. Anda dapat memfilter berdasarkan repositori sumber atau nama cabang tempat alur kerja ditentukan, atau memfilter berdasarkan nama atau status alur kerja.

1. Pilih **Edit**.

1. Pilih **YAMAL.**

1. Temukan tindakan yang ingin Anda tetapkan pada image Docker lingkungan runtime.

1. Dalam tindakan, tambahkan `Container` bagian dan yang mendasari `Registry` dan `Image` properti. Untuk informasi selengkapnya, lihat deskripsi`Container`, `Registry` dan `Image` properti di [Tindakan](workflow-reference.md#actions-reference) untuk tindakan Anda.

1. (Opsional) Pilih **Validasi** untuk memvalidasi kode YAMAL alur kerja sebelum melakukan.

1. Pilih **Komit**, masukkan pesan komit, dan pilih **Komit** lagi.

------

## Contoh
<a name="workflows-working-custom-image-ex"></a>

Contoh berikut menunjukkan cara menetapkan image Docker lingkungan runtime kustom ke tindakan dalam file definisi alur kerja.

**Topics**
+ [Contoh: Menggunakan image Docker lingkungan runtime kustom untuk menambahkan dukungan untuk Node.js 18 dengan Amazon ECR](#workflows-working-custom-image-ex-ecr-node18)
+ [Contoh: Menggunakan image Docker lingkungan runtime kustom untuk menambahkan dukungan untuk Node.js 18 dengan Docker Hub](#workflows-working-custom-image-ex-docker-node18)

### Contoh: Menggunakan image Docker lingkungan runtime kustom untuk menambahkan dukungan untuk Node.js 18 dengan Amazon ECR
<a name="workflows-working-custom-image-ex-ecr-node18"></a>

Contoh berikut menunjukkan cara menggunakan image Docker lingkungan runtime kustom untuk menambahkan dukungan untuk Node.js 18 dengan [Amazon](https://gallery.ecr.aws/amazonlinux/amazonlinux) ECR.

```
Configuration:
  Container:
    Registry: ECR
    Image: public.ecr.aws/amazonlinux/amazonlinux:2023
```

### Contoh: Menggunakan image Docker lingkungan runtime kustom untuk menambahkan dukungan untuk Node.js 18 dengan Docker Hub
<a name="workflows-working-custom-image-ex-docker-node18"></a>

Contoh berikut menunjukkan cara menggunakan image Docker lingkungan runtime kustom untuk menambahkan dukungan untuk Node.js 18 dengan [Docker](https://hub.docker.com/_/node) Hub.

```
Configuration:
  Container:
    Registry: DockerHub
    Image: node:18.18.2
```