

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

# Peran IAM tugas Amazon ECS
<a name="task-iam-roles"></a>

Tugas Amazon ECS Anda dapat memiliki peran IAM yang terkait dengannya. Izin yang diberikan dalam peran IAM dijual ke kontainer yang berjalan dalam tugas. Peran ini memungkinkan kode aplikasi Anda (berjalan dalam wadah) untuk menggunakan AWS layanan lain. Peran tugas diperlukan saat aplikasi Anda mengakses AWS layanan lain, seperti Amazon S3.

**catatan**  
Izin ini tidak diakses oleh wadah Amazon ECS dan agen Fargate. Untuk izin IAM yang dibutuhkan Amazon ECS untuk menarik gambar kontainer dan menjalankan tugas, lihat. [Peran IAM pelaksanaan tugas Amazon ECS](task_execution_IAM_role.md)

Berikut ini adalah manfaat menggunakan peran tugas:
+ **Pemisahan masalah**: Jika Anda menggunakan EC2, peran IAM tugas memungkinkan Anda menentukan izin IAM untuk kontainer tanpa memerlukan izin ini ditentukan menggunakan profil instans EC2 (untuk informasi selengkapnya, lihat [ Menggunakan profil instans ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) di Panduan Pengguna). *AWS Identity and Access Management * Oleh karena itu, Anda dapat menerapkan aplikasi secara independen dan seragam pada instans kontainer ECS tanpa perlu mengubah izin IAM yang terkait dengan instans EC2.
+ **Auditabilitas**: Akses dan pencatatan peristiwa tersedia CloudTrail untuk memastikan audit retrospektif. KredenSIAL tugas memiliki konteks '`taskArn`' yang dilampirkan ke sesi, jadi CloudTrail log menunjukkan tugas mana kredenSIAL peran tersebut dijual.
+ **Pengiriman kredenSIAL seragam**: ECS memberikan kredenSIAL peran IAM ke wadah Anda dan membuatnya dapat diakses melalui antarmuka yang terdefinisi dengan baik terlepas dari opsi komputasi yang terkait dengan tugas Anda. Di ECS Fargate, profil instans EC2 tidak tersedia untuk wadah dalam tugas Anda. Peran IAM tugas memungkinkan Anda untuk mengaitkan izin IAM ke kontainer Anda terlepas dari opsi komputasi saat Anda menggunakan AWS SDK atau AWS CLI di wadah Anda. Untuk informasi selengkapnya tentang cara AWS SDK mengakses kredenSIAL ini, lihat Penyedia kreden [ sia kontainer. ](https://docs.aws.amazon.com/sdkref/latest/guide/feature-container-credentials.html)

**penting**  
Kontainer bukan batas keamanan dan penggunaan peran IAM tugas tidak mengubah ini. Setiap tugas yang berjalan di Fargate memiliki batas isolasi sendiri dan tidak berbagi kernel yang mendasarinya, sumber daya CPU, sumber daya memori, atau antarmuka jaringan elastis dengan tugas lain. Untuk beban kerja dengan persyaratan isolasi yang ketat, gunakan Fargate. Untuk instans kontainer EC2, ECS Managed Instans, dan ECS Anywhere, tidak ada isolasi tugas dan kontainer berpotensi mengakses kredenSIAL untuk tugas lain pada instans kontainer yang sama. Mereka juga dapat mengakses izin yang ditetapkan ke peran instance container [ ECS ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html) dan data sensitif lainnya seperti metadata instans dan kredentif peran IAM yang dapat diakses melalui Amazon EC2 Instance Metadata Service (IMDS), serta data dari tugas yang ditempatkan bersama. Ikuti rekomendasi dalam rekomendasi Per [ an ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-iam-roles.html#security-iam-roles-recommendations) untuk mencegah kontainer mengakses Layanan Metadata Instans Amazon EC2 pada instans kontainer Anda (Untuk informasi selengkapnya, lihat [ Menggunakan Layanan Metadata Instans untuk mengakses metadata instans ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) di Panduan * * Pengguna Amazon EC2).   
Perhatikan bahwa ketika Anda menentukan peran IAM untuk tugas, AWS CLI atau SDK lain dalam wadah untuk tugas tersebut menggunakan AWS kredentif yang disediakan oleh peran tugas secara eksklusif dan mereka tidak mewarisi izin IAM apa pun dari Amazon EC2 atau instans eksternal tempat mereka berjalan.

## Membuat peran IAM tugas
<a name="create_task_iam_policy_and_role"></a>

Saat membuat kebijakan IAM untuk tugas Anda untuk digunakan, kebijakan harus menyertakan izin yang Anda inginkan untuk diambil oleh kontainer dalam tugas Anda. Anda dapat menggunakan kebijakan ter AWS kelola yang ada, atau Anda dapat membuat kebijakan khusus dari awal yang memenuhi kebutuhan spesifik Anda. Untuk informasi selengkapnya, lihat [Membuat kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dalam *Panduan Pengguna IAM*.

**penting**  
Untuk tugas Amazon ECS (untuk semua jenis peluncuran), kami sarankan Anda menggunakan kebijakan dan peran IAM untuk tugas Anda. KredenSIAL ini memungkinkan tugas Anda membuat permintaan AWS API tanpa memanggil `sts:AssumeRole` untuk mengambil peran yang sama yang sudah terkait dengan tugas. Jika tugas Anda mengharuskan peran mengambil dirinya sendiri, Anda harus membuat kebijakan kepercayaan yang secara eksplisit memungkinkan peran itu untuk mengambil dirinya sendiri. Untuk informasi selengkapnya, lihat [ Memperbarui kebijakan kepercayaan peran ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-trust-policy.html) di Panduan * * Pengguna IAM.

Setelah kebijakan IAM dibuat, Anda dapat membuat peran IAM yang menyertakan kebijakan yang Anda rujuk dalam definisi tugas Amazon ECS Anda. Anda dapat membuat peran menggunakan kasus ** penggunaan ** Elastic Container Service Task di konsol IAM. Kemudian, Anda dapat melampirkan kebijakan IAM spesifik Anda ke peran yang memberikan kontainer dalam tugas Anda izin yang Anda inginkan. Prosedur berikut menjelaskan cara pembuatannya.

Jika Anda memiliki beberapa definisi tugas atau layanan yang memerlukan izin IAM, Anda harus mempertimbangkan untuk membuat peran untuk setiap definisi tugas atau layanan tertentu dengan izin minimum yang diperlukan untuk operasi tugas sehingga Anda dapat meminimalkan akses yang Anda berikan untuk setiap tugas. 

Untuk informasi tentang titik akhir layanan untuk Wilayah Anda, lihat [ Titik akhir Layanan ](https://docs.aws.amazon.com/general/latest/gr/ecs-service.html#ecs_region) di *Referensi Umum Amazon Web Panduan*.

Peran tugas IAM harus memiliki kebijakan kepercayaan yang menentukan `ecs-tasks.amazonaws.com` layanan. Iz `sts:AssumeRole` in ini memungkinkan tugas Anda untuk mengambil peran IAM yang berbeda dari yang digunakan instans Amazon EC2. Dengan cara ini, tugas Anda tidak mewarisi peran yang terkait dengan instans Amazon EC2. Berikut ini adalah contoh kebijakan kepercayaan. Ganti pengenal wilayah dan tent AWS ukan nomor akun yang Anda gunakan saat meluncurkan tugas.

**penting**  
Saat membuat peran IAM tugas, sebaiknya gunakan kunci `aws:SourceArn` kondisi `aws:SourceAccount` or dalam kebijakan hubungan kepercayaan yang terkait dengan peran tersebut untuk menjangkau izin lebih lanjut guna mencegah masalah keamanan wakil yang membingungkan. Menggunakan kunci `aws:SourceArn` kondisi untuk menentukan cluster tertentu saat ini tidak didukung, Anda harus menggunakan wildcard untuk menentukan semua cluster. Untuk mempelajari lebih lanjut tentang masalah wakil yang membingungkan dan cara melindungi AWS akun Anda, lihat [ Masalah wakil yang bingung ](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) di Panduan * * Pengguna IAM.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":[
               "ecs-tasks.amazonaws.com"
            ]
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "ArnLike":{
            "aws:SourceArn":"arn:aws:ecs:{{us-west-2}}:{{111122223333}}:*"
            },
            "StringEquals":{
               "aws:SourceAccount":"{{111122223333}}"
            }
         }
      }
   ]
}
```

------

Gunakan prosedur berikut untuk membuat kebijakan untuk mengambil objek dari Amazon S3 dengan kebijakan contoh. Ganti semua {{user input}} dengan nilai-nilai Anda sendiri.

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

**Cara menggunakan editor kebijakan JSON untuk membuat kebijakan**

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [ https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Pada panel navigasi di sebelah kiri, pilih **Kebijakan**. 

   Jika ini pertama kalinya Anda memilih **Kebijakan**, akan muncul halaman **Selamat Datang di Kebijakan Terkelola**. Pilih **Memulai**.

1. Di bagian atas halaman, pilih **Buat kebijakan**.

1. Di bagian **Editor kebijakan**, pilih opsi **JSON**.

1. Masukkan dokumen kebijakan JSON berikut:

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "s3:GetObject"
            ],
            "Resource":[
               "arn:aws:s3:::{{my-task-secrets-bucket}}/*"
            ]
         }
      ]
   }
   ```

1. Pilih **Berikutnya**.
**catatan**  
Anda dapat beralih antara opsi editor **Visual** dan **JSON** kapan saja. Namun, jika Anda melakukan perubahan atau memilih **Berikutnya** di editor **Visual**, IAM dapat merestrukturisasi kebijakan Anda untuk mengoptimalkannya bagi editor visual. Untuk informasi selengkapnya, lihat [Restrukturisasi kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_policies.html#troubleshoot_viseditor-restructure) dalam *Panduan Pengguna IAM*.

1. Pada halaman **Tinjau dan buat**, masukkan **Nama kebijakan** dan **Deskripsi** (opsional) untuk kebijakan yang Anda buat. Tinjau **Izin yang ditentukan dalam kebijakan ini** untuk melihat izin yang diberikan oleh kebijakan Anda.

1. Pilih **Buat kebijakan** untuk menyimpan kebijakan baru Anda.

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

Ganti semua {{user input}} dengan nilai-nilai Anda sendiri.

1. Buat file bernama `s3-policy.json` dengan konten berikut.

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

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "s3:GetObject"
            ],
            "Resource":[
               "arn:aws:s3:::{{my-task-secrets-bucket}}/*"
            ]
         }
      ]
   }
   ```

------

1. Gunakan perintah berikut untuk membuat kebijakan IAM menggunakan file dokumen kebijakan JSON. Ganti semua {{user input}} dengan nilai-nilai Anda sendiri.

   ```
   aws iam create-policy \
         --policy-name {{taskRolePolicy}} \
         --policy-document file://{{s3-policy.json}}
   ```

------

Gunakan prosedur berikut untuk membuat peran layanan.

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

**Untuk membuat peran layanan untuk Elastic Container Service (konsol IAM)**

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [ https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Untuk Ti ** pe entitas tepercaya**, pilih **Layanan AWS**.

1. Untuk ** Service atau use case**, pilih ** Elastic Container Service**, lalu pilih kasus ** penggunaan ** Elastic Container Service Task.

1. Pilih **Berikutnya**.

1. Untuk ** Tambah izin**, cari dan pilih kebijakan yang Anda buat.

1. Pilih **Berikutnya**.

1. Untuk **Nama peran**, masukkan nama peran Anda. Untuk contoh ini, ketik `AmazonECSTaskS3BucketRole` untuk memberi nama peran.

1. Tinjau peran lalu pilih **Buat peran**.

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

1. Buat file bernama `ecs-tasks-trust-policy.json` yang berisi kebijakan kepercayaan yang akan digunakan untuk peran IAM tugas. File harus berisi yang berikut ini. Ganti pengenal wilayah dan tent AWS ukan nomor akun yang Anda gunakan saat meluncurkan tugas.

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

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Principal":{
               "Service":[
                  "ecs-tasks.amazonaws.com"
               ]
            },
            "Action":"sts:AssumeRole",
            "Condition":{
               "ArnLike":{
               "aws:SourceArn":"arn:aws:ecs:{{us-west-2}}:{{111122223333}}:*"
               },
               "StringEquals":{
                  "aws:SourceAccount":"{{111122223333}}"
               }
            }
         }
      ]
   }
   ```

------

1. Buat peran IAM bernama `ecsTaskRole` menggunakan kebijakan kepercayaan yang dibuat pada langkah sebelumnya.

   ```
   aws iam create-role \
         --role-name {{ecsTaskRole}} \
         --assume-role-policy-document file://{{ecs-tasks-trust-policy.json}}
   ```

1. Ambil ARN dari kebijakan IAM yang Anda buat menggunakan perintah berikut. Ganti {{taskRolePolicy}} dengan nama kebijakan yang Anda buat.

   ```
   aws iam list-policies --scope Local --query 'Policies[?PolicyName==`{{taskRolePolicy}}`].Arn'
   ```

1. Lampirkan kebijakan IAM yang Anda buat ke `ecsTaskRole` peran. Ganti `policy-arn` dengan ARN dari kebijakan yang Anda buat.

   ```
   aws iam attach-role-policy \
         --role-name {{ecsTaskRole}} \
         --policy-arn arn:aws:iam:111122223333:aws:policy/{{taskRolePolicy}}
   ```

------

Setelah Anda membuat peran, tambahkan izin tambahan ke peran untuk fitur berikut.


|  Fitur  |  Izin tambahan  | 
| --- | --- | 
| Gunakan ECS Exec | [Izin ECS Exec](#ecs-exec-required-iam-permissions) | 
| Gunakan gambar dari repositori Amazon ECR pribadi | [Izin Amazon ECR](#ecr-required-iam-permissions) | 
| Gunakan instans EC2 (Windows dan Linux) | [Konfigurasi tambahan instans Amazon EC2](#task-iam-role-considerations) | 
| Gunakan instance eksternal | [Konfigurasi tambahan instance eksternal](#enable_task_iam_roles) | 
| Menggunakan instans Windows EC2 | [Konfigurasi tambahan instans Windows Amazon EC2](#windows_task_IAM_roles) | 

## Izin Amazon ECR
<a name="ecr-required-iam-permissions"></a>

Izin berikut diperlukan saat kode aplikasi Anda perlu berinteraksi dengan repositori Amazon ECR secara langsung. Perhatikan bahwa untuk implementasi dasar di mana Anda hanya perlu menarik gambar dari Amazon ECR, izin ini tidak diperlukan pada tingkat peran IAM tugas. Sebaliknya, peran eksekusi tugas Amazon ECS harus memiliki izin ini. Untuk informasi selengkapnya tentang peran pelaksanaan tugas, lihat [Peran IAM pelaksanaan tugas Amazon ECS](task_execution_IAM_role.md).

Jika kode aplikasi yang berjalan di wadah perlu berinteraksi dengan Amazon ECR API secara langsung, Anda harus menambahkan izin berikut ke peran IAM tugas dan menyertakan peran IAM tugas dalam definisi tugas Anda. Untuk informasi lebih lanjut, lihat [Menambahkan dan Menghapus Kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) dalam *Panduan Pengguna IAM*.

Gunakan kebijakan berikut untuk peran IAM tugas Anda untuk menambahkan izin Amazon ECR yang diperlukan untuk aplikasi kontainer yang perlu berinteraksi dengan Amazon ECR secara langsung: 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer",
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Izin ECS Exec
<a name="ecs-exec-required-iam-permissions"></a>

[Fitur ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html) ECS Exec memerlukan peran IAM tugas untuk memberikan kontainer izin yang diperlukan untuk komunikasi antara agen SSM terkelola (`execute-command`agen) dan layanan SSM. Anda harus menambahkan izin berikut ke peran IAM tugas dan menyertakan peran IAM tugas dalam definisi tugas Anda. Untuk informasi lebih lanjut, lihat [Menambahkan dan Menghapus Kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) dalam *Panduan Pengguna IAM*.

Gunakan kebijakan berikut untuk peran IAM tugas Anda untuk menambahkan izin SSM yang diperlukan. 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
       "Effect": "Allow",
       "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
       ],
      "Resource": "*"
      }
   ]
}
```

------

## Konfigurasi tambahan instans Amazon EC2
<a name="task-iam-role-considerations"></a>

Sebaiknya batasi izin dalam peran instance kontainer ke daftar izin minimal yang digunakan dalam kebijakan IAM `AmazonEC2ContainerServiceforEC2Role` terkelola. 

Instans Amazon EC2 Anda memerlukan setidaknya versi `1.11.0` agen kontainer untuk menggunakan peran tugas; namun, sebaiknya gunakan versi agen kontainer terbaru. Untuk informasi tentang memeriksa versi agen Anda dan memperbarui ke versi terbaru, lihat [Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md). Jika Anda menggunakan Amazon ECS-optimized AMI, instans Anda membutuhkan setidaknya `1.11.0-1` `ecs-init` paket tersebut. Jika instans Anda menggunakan Amazon ECS-optimized AMI terbaru, maka instans tersebut berisi versi agen kontainer yang diperlukan dan`ecs-init`. Untuk informasi selengkapnya, lihat [AMI Amazon ECS-optimized Linux](ecs-optimized_AMI.md).

Jika Anda tidak menggunakan Amazon ECS-optimized AMI untuk instance kontainer, tambahkan `--net=host` opsi ke **docker run** perintah yang memulai agen dan variabel konfigurasi agen berikut untuk konfigurasi yang Anda inginkan (untuk informasi selengkapnya, lihat[Konfigurasi agen kontainer Amazon ECS](ecs-agent-config.md)):

`ECS_ENABLE_TASK_IAM_ROLE=true`  
Menggunakan peran IAM untuk tugas untuk kontainer dengan mode `bridge` dan `default` jaringan.

`ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true`  
Menggunakan peran IAM untuk tugas untuk kontainer dengan mode `host` jaringan. Variabel ini hanya didukung pada agen versi 1.12.0 dan yang lebih baru.

Untuk contoh run command, lihat [Memperbarui agen kontainer Amazon ECS secara manual (untuk AMI non-Amazon ECS-Optimized )](manually_update_agent.md). Anda juga perlu mengatur perintah jaringan berikut pada instance kontainer Anda sehingga kontainer dalam tugas Anda dapat mengambil AWS kredensialnya:

```
sudo sysctl -w net.ipv4.conf.all.route_localnet=1
sudo iptables -t nat -A PREROUTING -p tcp -d 169.254.170.2 --dport 80 -j DNAT --to-destination 127.0.0.1:51679
sudo iptables -t nat -A OUTPUT -d 169.254.170.2 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 51679
```

Anda harus menyimpan aturan **iptables** ini pada instans kontainer Anda agar dapat bertahan saat booting ulang. Anda dapat menggunakan perintah **iptables-save** dan **iptables-restore** untuk menyimpan aturan **iptables** dan memulihkannya saat booting. Untuk informasi selengkapnya, konsultasikan dokumentasi sistem operasi tertentu Anda.

Untuk mencegah kontainer yang dijalankan oleh tugas yang menggunakan mode `awsvpc` jaringan mengakses informasi kredensia yang diberikan ke profil instans Amazon EC2, sambil tetap mengizinkan izin yang disediakan oleh peran tugas, setel variabel konfigurasi `ECS_AWSVPC_BLOCK_IMDS` agen ke `true` dalam file konfigurasi agen dan mulai ulang agen. Untuk informasi selengkapnya, lihat [Konfigurasi agen kontainer Amazon ECS](ecs-agent-config.md).

Untuk mencegah kontainer yang dijalankan oleh tugas yang menggunakan mode `bridge` jaringan mengakses informasi kredensia yang diberikan ke profil instans Amazon EC2, sambil tetap mengizinkan izin yang disediakan oleh peran tugas, dengan menjalankan **iptables** perintah berikut pada instans Amazon EC2 Anda. Perintah ini tidak mempengaruhi wadah dalam tugas yang menggunakan mode `awsvpc` jaringan `host` atau. Untuk informasi selengkapnya, lihat [Mode jaringan](task_definition_parameters.md#network_mode).
+ 

  ```
  sudo yum install -y iptables-services; sudo iptables --insert DOCKER-USER 1 --in-interface docker+ --destination 169.254.169.254/32 --jump DROP
  ```

  Anda harus menyimpan **iptables** aturan ini di instans Amazon EC2 agar dapat bertahan dari reboot. Saat menggunakan Amazon ECS-optimized AMI, Anda dapat menggunakan perintah berikut. Untuk sistem operasi lain, lihat dokumentasi untuk sistem operasi tersebut.

  ```
  sudo iptables-save | sudo tee /etc/sysconfig/iptables && sudo systemctl enable --now iptables
  ```

## Konfigurasi tambahan instance eksternal
<a name="enable_task_iam_roles"></a>

Instans eksternal Anda memerlukan setidaknya versi agen `1.11.0` kontainer untuk menggunakan peran IAM tugas; namun, sebaiknya gunakan versi agen kontainer terbaru. Untuk informasi tentang memeriksa versi agen Anda dan memperbarui ke versi terbaru, lihat [Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md). Jika Anda menggunakan Amazon ECS-optimized AMI, instans Anda membutuhkan setidaknya `1.11.0-1` `ecs-init` paket tersebut. Jika instans Anda menggunakan Amazon ECS-optimized AMI terbaru, maka instans tersebut berisi versi agen kontainer yang diperlukan dan`ecs-init`. Untuk informasi selengkapnya, lihat [AMI Amazon ECS-optimized Linux](ecs-optimized_AMI.md).

Jika Anda tidak menggunakan Amazon ECS-optimized AMI untuk instance kontainer, tambahkan `--net=host` opsi ke **docker run** perintah yang memulai agen dan variabel konfigurasi agen berikut untuk konfigurasi yang Anda inginkan (untuk informasi selengkapnya, lihat[Konfigurasi agen kontainer Amazon ECS](ecs-agent-config.md)):

`ECS_ENABLE_TASK_IAM_ROLE=true`  
Menggunakan peran IAM untuk tugas untuk kontainer dengan mode `bridge` dan `default` jaringan.

`ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true`  
Menggunakan peran IAM untuk tugas untuk kontainer dengan mode `host` jaringan. Variabel ini hanya didukung pada agen versi 1.12.0 dan yang lebih baru.

Untuk contoh run command, lihat [Memperbarui agen kontainer Amazon ECS secara manual (untuk AMI non-Amazon ECS-Optimized )](manually_update_agent.md). Anda juga perlu mengatur perintah jaringan berikut pada instance kontainer Anda sehingga kontainer dalam tugas Anda dapat mengambil AWS kredensialnya:

```
sudo sysctl -w net.ipv4.conf.all.route_localnet=1
sudo iptables -t nat -A PREROUTING -p tcp -d 169.254.170.2 --dport 80 -j DNAT --to-destination 127.0.0.1:51679
sudo iptables -t nat -A OUTPUT -d 169.254.170.2 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 51679
```

Anda harus menyimpan aturan **iptables** ini pada instans kontainer Anda agar dapat bertahan saat booting ulang. Anda dapat menggunakan perintah **iptables-save** dan **iptables-restore** untuk menyimpan aturan **iptables** dan memulihkannya saat booting. Untuk informasi selengkapnya, konsultasikan dokumentasi sistem operasi tertentu Anda.

## Konfigurasi tambahan instans Windows Amazon EC2
<a name="windows_task_IAM_roles"></a>

**penting**  
Ini hanya berlaku untuk wadah Windows di EC2 yang menggunakan peran tugas.

Peran tugas dengan fitur Windows memerlukan konfigurasi tambahan pada EC2.
+ Ketika Anda meluncurkan instans kontainer, Anda harus mengatur opsi `-EnableTaskIAMRole` skrip data pengguna instans kontainer. Men `EnableTaskIAMRole` ghidupkan fitur peran Task IAM untuk tugas. Contoh:

  ```
  <powershell>
  Import-Module ECSTools
  Initialize-ECSAgent -Cluster '{{windows}}' -EnableTaskIAMRole 
  </powershell>
  ```
+ Anda harus bootstrap kontainer Anda dengan perintah jaringan yang disediakan di [Skrip bootstrap wadah Amazon ECS](#windows_task_IAM_roles_bootstrap).
+ Anda harus membuat peran dan kebijakan IAM untuk tugas Anda. Untuk informasi selengkapnya, lihat [Membuat peran IAM tugas](#create_task_iam_policy_and_role).
+ Peran IAM untuk penyedia kredensia tugas menggunakan port 80 pada instance kontainer. Oleh karena itu, jika Anda mengonfigurasi peran IAM untuk tugas pada instance kontainer Anda, kontainer Anda tidak dapat menggunakan port 80 untuk port host di pemetaan port apa pun. Untuk mengekspos kontainer Anda pada port 80, kami sarankan mengonfigurasi layanan untuk kontainer yang menggunakan penyeimbangan beban. Anda dapat menggunakan port 80 pada penyeimbang beban. Dengan demikian, lalu lintas dapat diarahkan ke port host lain pada instans kontainer Anda. Untuk informasi selengkapnya, lihat [Menggunakan penyeimbangan beban untuk mendistribusikan lalu lintas layanan Amazon ECS](service-load-balancing.md).
+ Jika instans Windows Anda dihidupkan ulang, Anda harus menghapus antarmuka proxy dan menginisialisasi agen kontainer Amazon ECS lagi untuk mengembalikan proxy kredensi.

### Skrip bootstrap wadah Amazon ECS
<a name="windows_task_IAM_roles_bootstrap"></a>

Sebelum kontainer dapat mengakses proxy kredensial pada instans kontainer untuk mendapatkan kredensial, kontainer harus di-bootstrap dengan perintah jaringan yang diperlukan. Skrip contoh kode berikut harus dijalankan pada kontainer Anda ketika dimulai.

**catatan**  
Anda tidak perlu menjalankan skrip ini saat Anda menggunakan mode jaringan `awsvpc` pada Windows.

Jika Anda menjalankan wadah Windows yang menyertakan Powershell, maka gunakan skrip berikut:

```
# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"). You may
# not use this file except in compliance with the License. A copy of the
# License is located at
#
#	http://aws.amazon.com/apache2.0/
#
# or in the "license" file accompanying this file. This file is distributed
# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
# express or implied. See the License for the specific language governing
# permissions and limitations under the License.
 
$gateway = (Get-NetRoute | Where { $_.DestinationPrefix -eq '0.0.0.0/0' } | Sort-Object RouteMetric | Select NextHop).NextHop
$ifIndex = (Get-NetAdapter -InterfaceDescription "Hyper-V Virtual Ethernet*" | Sort-Object | Select ifIndex).ifIndex
New-NetRoute -DestinationPrefix 169.254.170.2/32 -InterfaceIndex $ifIndex -NextHop $gateway -PolicyStore ActiveStore # credentials API
New-NetRoute -DestinationPrefix 169.254.169.254/32 -InterfaceIndex $ifIndex -NextHop $gateway -PolicyStore ActiveStore # metadata API
```

Jika Anda menjalankan wadah Windows yang hanya memiliki shell Command, maka gunakan skrip berikut:

```
# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"). You may
# not use this file except in compliance with the License. A copy of the
# License is located at
#
#	http://aws.amazon.com/apache2.0/
#
# or in the "license" file accompanying this file. This file is distributed
# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
# express or implied. See the License for the specific language governing
# permissions and limitations under the License.
 
for /f "tokens=1" %i  in ('netsh interface ipv4 show interfaces ^| findstr /x /r ".*vEthernet.*"') do set interface=%i
for /f "tokens=3" %i  in ('netsh interface ipv4 show addresses %interface% ^| findstr /x /r ".*Default.Gateway.*"') do set gateway=%i
netsh interface ipv4 add route prefix=169.254.170.2/32 interface="%interface%" nexthop="%gateway%" store=active # credentials API
netsh interface ipv4 add route prefix=169.254.169.254/32 interface="%interface%" nexthop="%gateway%" store=active # metadata API
```