

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

# Memantau Kontainer Amazon ECS dengan ECS Exec
<a name="ecs-exec"></a>

Dengan Amazon ECS Exec, Anda dapat langsung berinteraksi dengan kontainer tanpa perlu terlebih dahulu berinteraksi dengan sistem operasi wadah host, membuka port masuk, atau mengelola kunci SSH. Anda dapat menggunakan ECS Exec untuk menjalankan perintah di atau mendapatkan shell ke wadah yang berjalan pada instans Amazon EC2 atau di. AWS Fargate Hal tersebut mempermudah pengumpulan informasi diagnostik dan memecahkan masalah kesalahan dengan cepat. Misalnya, dalam konteks pengembangan, Anda dapat menggunakan ECS Exec untuk berinteraksi dengan mudah dengan berbagai proses dalam wadah Anda dan memecahkan masalah aplikasi Anda. Dan dalam skenario produksi, Anda dapat menggunakannya untuk mendapatkan akses break-glass ke kontainer Anda untuk men-debug masalah. 

Anda dapat menjalankan perintah dalam wadah Linux atau Windows yang sedang berjalan menggunakan ECS Exec dari Amazon ECS API, AWS Command Line Interface (AWS CLI) AWS SDKs, atau AWS Copilot CLI. [Untuk detail tentang penggunaan ECS Exec, serta panduan video, menggunakan Copilot AWS CLI, lihat dokumentasi Copilot. GitHub](https://aws.github.io/copilot-cli/docs/commands/svc-exec/)

Anda juga dapat menggunakan ECS Exec untuk mempertahankan kebijakan kontrol akses yang lebih ketat. Dengan mengaktifkan fitur ini secara selektif, Anda dapat mengendalikan siapa yang dapat menjalankan perintah dan ditugas mana mereka dapat menjalankan perintah tersebut. Dengan log dari setiap perintah dan outputnya, Anda dapat menggunakan ECS Exec untuk melihat tugas mana yang dijalankan dan Anda dapat menggunakan CloudTrail untuk mengaudit siapa yang mengakses wadah.

## Pertimbangan-pertimbangan
<a name="ecs-exec-considerations"></a>

Pertimbangkan hal berikut saat menggunakan ECS Exec:
+ ECS Exec mungkin tidak berfungsi seperti yang diharapkan saat berjalan pada sistem operasi yang tidak didukung oleh Systems Manager. Untuk informasi tentang sistem operasi yang didukung, lihat [Jenis sistem operasi](https://docs.aws.amazon.com/systems-manager/latest/userguide/operating-systems-and-machine-types.html#prereqs-os-linux) di *Panduan AWS Systems Manager Pengguna*.
+ ECS Exec didukung untuk tugas-tugas yang berjalan pada infrastruktur berikut:
  + Wadah Linux di Amazon EC2 pada AMI yang dioptimalkan Amazon ECS, termasuk Bottlerocket
  + Wadah Linux dan Windows pada instance eksternal (Amazon ECS Anywhere)
  + Wadah Linux dan Windows di AWS Fargate
  + Kontainer Windows di Amazon EC2 pada Windows Amazon ECS-dioptimalkan berikut AMIs (dengan versi `1.56` agen kontainer atau yang lebih baru):
    + Amazon ECS yang dioptimalkan Windows Server 2022 AMI Penuh
    + Server Windows 2022 AMI Inti yang dioptimalkan Amazon ECS
    + Amazon ECS yang dioptimalkan Windows Server 2019 AMI Penuh
    + Amazon ECS yang dioptimalkan Windows Server 2019 Core AMI
    + Amazon ECS yang dioptimalkan Windows Server 20H2 Core AMI
+ Jika Anda mengonfigurasi proxy HTTP untuk tugas Anda, setel variabel `NO_PROXY` lingkungan agar dapat `"NO_PROXY=169.254.169.254,169.254.170.2"` melewati proxy untuk metadata instans EC2 dan lalu lintas peran IAM. Jika Anda tidak mengonfigurasi variabel `NO_PROXY` lingkungan, mungkin ada kegagalan saat mengambil metadata instance atau kredensyal peran IAM dari titik akhir metadata dalam wadah. Mengatur variabel `NO_PROXY` lingkungan seperti yang disarankan menyaring metadata dan lalu lintas IAM sehingga permintaan untuk `169.254.169.254 and 169.254.170.2` tidak melalui proxy. `HTTP`
+ ECS Exec dan Amazon VPC
  + Jika Anda menggunakan antarmuka titik akhir Amazon VPC dengan Amazon ECS, Anda harus membuat antarmuka titik akhir Amazon VPC untuk Systems Manager Session Manager (). `ssmmessages` *Untuk informasi selengkapnya tentang titik akhir VPC Systems Manager, lihat [Menggunakan AWS PrivateLink untuk menyiapkan titik akhir VPC untuk Session](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-privatelink.html) Manager di Panduan Pengguna.AWS Systems Manager *
  + Jika Anda menggunakan antarmuka titik akhir Amazon VPC dengan Amazon ECS, dan Anda menggunakan AWS KMS key untuk enkripsi, maka Anda harus membuat antarmuka titik akhir Amazon VPC untuk. AWS KMS key*Untuk informasi selengkapnya, lihat [Menghubungkan ke AWS KMS key melalui titik akhir VPC di Panduan Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/kms-vpc-endpoint.html).AWS Key Management Service *
  + Jika Anda memiliki tugas yang berjalan di instans Amazon EC2, gunakan `awsvpc` mode jaringan. Jika Anda tidak memiliki akses internet (seperti tidak dikonfigurasi untuk menggunakan gateway NAT), Anda harus membuat antarmuka titik akhir Amazon VPC untuk Systems Manager Session Manager (). `ssmmessages` Untuk informasi selengkapnya tentang pertimbangan mode `awsvpc` jaringan, lihat [Pertimbangan](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking-awsvpc.html#linux). *Untuk informasi selengkapnya tentang titik akhir VPC Systems Manager, lihat [Menggunakan AWS PrivateLink untuk menyiapkan titik akhir VPC untuk Session](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-privatelink.html) Manager di Panduan Pengguna.AWS Systems Manager *
+ Amazon ECS Exec tidak didukung untuk tugas yang berjalan dalam konfigurasi IPv6 -only. Untuk informasi selengkapnya tentang menjalankan tugas dalam konfigurasi IPv6 -only, lihat [Opsi jaringan tugas Amazon ECS untuk Fargate](fargate-task-networking.md) dan[Opsi Jaringan Tugas Amazon ECS untuk EC2](task-networking.md).
+ ECS Exec dan SSM
  + Ketika pengguna menjalankan perintah pada wadah menggunakan ECS Exec, perintah ini dijalankan sebagai pengguna. `root` Agen SSM dan proses turunannya berjalan sebagai root bahkan ketika Anda menentukan ID pengguna untuk wadah.
  + Agen SSM mengharuskan sistem file kontainer dapat ditulis untuk membuat direktori dan file yang diperlukan. Oleh karena itu, membuat sistem file root hanya-baca menggunakan parameter ketentuan tugas `readonlyRootFilesystem`, atau metode lainnya, tidak didukung.
  + Meskipun memulai sesi SSM di luar `execute-command` tindakan dimungkinkan, ini mengakibatkan sesi tidak dicatat dan dihitung terhadap batas sesi. Kami menyarankan untuk membatasi akses ini dengan menolak `ssm:start-session` tindakan menggunakan kebijakan IAM. Untuk informasi selengkapnya, lihat [Membatasi akses ke tindakan Memulai Sesi](#ecs-exec-limit-access-start-session).
+ Fitur berikut berjalan sebagai wadah sespan. Oleh karena itu, Anda harus menentukan nama kontainer untuk menjalankan perintah.
  + Pemantauan Runtime
  + Service Connect
+ Pengguna dapat menjalankan semua perintah yang tersedia dalam konteks kontainer. Tindakan berikut mungkin mengakibatkan proses tanpa induk dan zombie: mengakhiri proses utama kontainer, mengakhiri agen perintah, dan menghapus dependensi. Untuk membersihkan proses zombie, sebaiknya tambahkan flag `initProcessEnabled` untuk ketentuan tugas Anda.
+ ECS Exec menggunakan beberapa CPU dan memori. Anda akan ingin mengakomodasinya saat menentukan alokasi sumber daya CPU dan memori dalam ketentuan tugas Anda.
+ Anda harus menggunakan AWS CLI versi `1.22.3` atau yang lebih baru atau AWS CLI versi `2.3.6` atau yang lebih baru. Untuk informasi tentang cara memperbarui AWS CLI, lihat [Menginstal atau memperbarui versi terbaru dari AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) *Panduan AWS Command Line Interface Pengguna Versi 2*.
+  Anda hanya dapat memiliki satu sesi ECS Exec per namespace ID proses (PID). Jika Anda [berbagi namespace PID dalam tugas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#other_task_definition_params), Anda hanya dapat memulai sesi ECS Exec ke dalam satu wadah.
+ Sesi ECS Exec memiliki waktu tunggu idle 20 menit. Nilai ini tidak dapat diubah.
+ Anda tidak dapat mengaktifkan ECS Exec untuk tugas yang ada. Itu hanya dapat dihidupkan untuk tugas-tugas baru.
+ Anda tidak dapat menggunakan ECS Exec saat digunakan `run-task` untuk meluncurkan tugas di klaster yang menggunakan penskalaan terkelola dengan penempatan asinkron (meluncurkan tugas tanpa instance).
+ Anda tidak dapat menjalankan ECS Exec terhadap kontainer Microsoft Nano Server. 

## Arsitektur
<a name="ecs-exec-architecture"></a>

ECS Exec menggunakan Manajer Sesi AWS Systems Manager (SSM) untuk membuat koneksi dengan wadah yang sedang berjalan dan menggunakan kebijakan AWS Identity and Access Management (IAM) untuk mengontrol akses ke perintah yang sedang berjalan dalam wadah yang sedang berjalan. Hal ini dimungkinkan dengan mengikat pemasangan biner SSM agent yang diperlukan ke dalam kontainer. Amazon ECS atau AWS Fargate agen bertanggung jawab untuk memulai agen inti SSM di dalam wadah bersama kode aplikasi Anda. Untuk informasi selengkapnya, lihat [ Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html).

Anda dapat mengaudit pengguna mana yang mengakses container menggunakan `ExecuteCommand` event in AWS CloudTrail dan mencatat setiap perintah (dan outputnya) ke Amazon S3 atau Amazon CloudWatch Logs. Untuk mengenkripsi data antara klien lokal dan wadah dengan kunci enkripsi Anda sendiri, Anda harus memberikan kunci AWS Key Management Service (AWS KMS).



## Mengkonfigurasi ECS Exec
<a name="ecs-exec-enabling-and-using"></a>

Untuk menggunakan ECS Exec, Anda harus terlebih dahulu mengaktifkan fitur untuk tugas dan layanan Anda, dan kemudian Anda dapat menjalankan perintah di wadah Anda.

### Perubahan ketentuan tugas opsional
<a name="ecs-exec-task-definition"></a>

Jika Anda menyetel parameter definisi tugas `initProcessEnabled` ke`true`, ini memulai proses init di dalam wadah. Ini menghapus proses anak agen SSM zombie yang ditemukan. Contoh disediakan seperti berikut.

```
{
    "taskRoleArn": "ecsTaskRole",
    "networkMode": "awsvpc",
    "requiresCompatibilities": [
        "EC2",
        "FARGATE"
    ],
    "executionRoleArn": "ecsTaskExecutionRole",
    "memory": ".5 gb",
    "cpu": ".25 vcpu",
    "containerDefinitions": [
        {
            "name": "amazon-linux",
            "image": "amazonlinux:latest",
            "essential": true,
            "command": ["sleep","3600"],
            "linuxParameters": {
                "initProcessEnabled": true
            }
        }
    ],
    "family": "ecs-exec-task"
}
```

### Mengaktifkan ECS Exec untuk tugas dan layanan Anda
<a name="ecs-exec-enabling"></a>

Anda dapat mengaktifkan fitur ECS Exec untuk layanan dan tugas mandiri Anda dengan menentukan `--enable-execute-command` tanda saat menggunakan salah satu AWS CLI perintah berikut: [https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html),,, [https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html)atau. [https://docs.aws.amazon.com/cli/latest/reference/ecs/start-task.html](https://docs.aws.amazon.com/cli/latest/reference/ecs/start-task.html)

Misalnya, jika Anda menjalankan perintah berikut, fitur ECS Exec diaktifkan untuk layanan yang baru dibuat yang berjalan di Fargate. Untuk informasi selengkapnya tentang membuat layanan, lihat [buat-layanan](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html).

```
aws ecs create-service \
    --cluster cluster-name \
    --task-definition task-definition-name \
    --enable-execute-command \
    --service-name service-name \
    --launch-type FARGATE \
     --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}" \
    --desired-count 1
```

Setelah Anda mengaktifkan ECS Exec untuk tugas, Anda dapat menjalankan perintah berikut untuk mengonfirmasi tugas siap digunakan. Jika properti `lastStatus` dari `ExecuteCommandAgent` terdaftar sebagai `RUNNING` dan properti `enableExecuteCommand` diatur ke `true`, maka tugas Anda sudah siap.

```
aws ecs describe-tasks \
    --cluster cluster-name \
    --tasks task-id
```

Potongan output berikut adalah contoh apa yang mungkin Anda lihat.

```
{
    "tasks": [
        {
            ...
            "containers": [
                {
                    ...
                    "managedAgents": [
                        {
                            "lastStartedAt": "2021-03-01T14:49:44.574000-06:00",
                            "name": "ExecuteCommandAgent",
                            "lastStatus": "RUNNING"
                        }
                    ]
                }
            ],
            ...
            "enableExecuteCommand": true,
            ...
        }
    ]
}
```

### Menjalankan perintah menggunakan ECS Exec
<a name="ecs-exec-running-commands"></a>

## Logging menggunakan ECS Exec
<a name="ecs-exec-logging"></a>

Anda dapat mengonfigurasi pencatatan log untuk sesi ECS Exec untuk menangkap perintah dan output-nya untuk tujuan audit dan pemecahan masalah.

### Mengaktifkan login dalam tugas dan layanan Anda
<a name="ecs-exec-enabling-logging"></a>

**penting**  
Untuk informasi selengkapnya tentang CloudWatch harga, lihat [CloudWatch Harga](https://aws.amazon.com/cloudwatch/pricing/). Amazon ECS juga menyediakan metrik pemantauan yang disediakan tanpa biaya tambahan. Untuk informasi selengkapnya, lihat [Pantau Amazon ECS menggunakan CloudWatch](cloudwatch-metrics.md).

Amazon ECS menyediakan konfigurasi default untuk perintah logging yang dijalankan menggunakan ECS Exec. Defaultnya adalah mengirim CloudWatch log ke Log menggunakan driver `awslogs` log yang dikonfigurasi dalam definisi tugas Anda. Jika Anda ingin memberikan konfigurasi kustom, AWS CLI mendukung `--configuration` bendera untuk kedua `update-cluster` perintah `create-cluster` dan. Gambar kontainer memerlukan `script` dan diinstal `cat` agar log perintah diunggah dengan benar ke Amazon S3 CloudWatch atau Log. Untuk informasi selengkapnya tentang pembuatan klaster, lihat [buat-klaster](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-cluster.html).

**catatan**  
Konfigurasi ini hanya menangani pencatatan sesi `execute-command`. Konfigurasi tersebut tidak memengaruhi pencatatan aplikasi Anda.

Contoh berikut membuat cluster dan kemudian mencatat output ke CloudWatch Log LogGroup bernama `cloudwatch-log-group-name` dan bucket Amazon S3 Anda bernama. `s3-bucket-name`

Anda harus menggunakan kunci yang dikelola AWS KMS pelanggan untuk mengenkripsi grup log saat Anda `true` menyetel `CloudWatchEncryptionEnabled` opsi. Untuk informasi tentang cara mengenkripsi grup log, lihat [Mengenkripsi data CloudWatch log di Log menggunakan AWS Key Management Service](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html#encrypt-log-data-kms-policy), di *Amazon CloudWatch Logs Panduan Pengguna*.

```
aws ecs create-cluster \
    --cluster-name cluster-name \
    --configuration executeCommandConfiguration="{ \
        kmsKeyId=string, \
        logging=OVERRIDE, \
        logConfiguration={ \
            cloudWatchLogGroupName=cloudwatch-log-group-name, \
            cloudWatchEncryptionEnabled=true, \
            s3BucketName=s3-bucket-name, \
            s3EncryptionEnabled=true, \
            s3KeyPrefix=demo \
        } \
    }"
```

`logging`Properti menentukan perilaku kemampuan logging ECS Exec:
+ `NONE`: logging dimatikan.
+ `DEFAULT`: log dikirim ke `awslogs` driver yang dikonfigurasi. Jika driver tidak dikonfigurasi, maka tidak ada log yang disimpan.
+ `OVERRIDE`: log dikirim ke CloudWatch Log Amazon yang disediakan LogGroup, bucket Amazon S3, atau keduanya.

### Izin IAM diperlukan untuk Amazon CloudWatch Log atau Amazon S3 Logging
<a name="ecs-exec-required-logging-permissions"></a>

Untuk mengaktifkan logging, peran tugas Amazon ECS yang direferensikan dalam definisi tugas Anda harus memiliki izin tambahan. Izin tambahan ini dapat ditambahkan sebagai kebijakan untuk peran tugas. Mereka berbeda tergantung pada apakah Anda mengarahkan log Anda ke Amazon CloudWatch Log atau Amazon S3.

------
#### [ Amazon CloudWatch Logs ]

Kebijakan contoh berikut menambahkan izin Amazon CloudWatch Logs yang diperlukan.

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogGroups"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
               "logs:CreateLogStream",
               "logs:DescribeLogStreams",
               "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:/aws/ecs/cloudwatch-log-group-name:*"
        }
   ]
}
```

------
#### [ Amazon S3 ]

Kebijakan contoh berikut menambahkan izin Amazon S3 yang diperlukan.

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
            "Effect": "Allow",
            "Action": [
               "s3:GetBucketLocation"
            ],
            "Resource": "*"
        },
        {
           "Effect": "Allow",
           "Action": [
               "s3:GetEncryptionConfiguration"
           ],
           "Resource": "arn:aws:s3:::s3-bucket-name"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::s3-bucket-name/*"
        }
    ]
   }
```

------

### Izin IAM diperlukan untuk enkripsi menggunakan milik Anda sendiri AWS KMS key (kunci KMS)
<a name="ecs-exec-required-kms-permissions"></a>

Secara default, data yang ditransfer antara klien lokal Anda dan penampung menggunakan enkripsi TLS 1.2 yang AWS menyediakan. Untuk mengenkripsi data lebih lanjut menggunakan kunci KMS Anda sendiri, Anda harus membuat kunci KMS dan menambahkan `kms:Decrypt` izin ke peran IAM tugas Anda. Izin ini digunakan oleh kontainer Anda untuk mendekripsi data. Untuk informasi selengkapnya tentang membuat kunci KMS, lihat [Membuat kunci](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html).

Anda menambahkan kebijakan sebaris berikut ke peran IAM tugas yang memerlukan izin. AWS KMS Untuk informasi selengkapnya, lihat [Izin ECS Exec](task-iam-roles.md#ecs-exec-required-iam-permissions).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ]
}
```

------

Agar data dienkripsi menggunakan kunci KMS Anda sendiri, pengguna atau grup yang menggunakan `execute-command` tindakan harus diberikan izin. `kms:GenerateDataKey`

Contoh kebijakan berikut untuk pengguna atau grup Anda berisi izin yang diperlukan untuk menggunakan kunci KMS Anda sendiri. Anda harus menentukan Nama Sumber Daya Amazon (ARN) dari kunci KMS Anda.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ]
}
```

------

## Menggunakan kebijakan IAM untuk membatasi akses ke ECS Exec
<a name="ecs-exec-best-practices-limit-access-execute-command"></a>

Anda membatasi akses pengguna ke tindakan API perintah eksekusi dengan menggunakan satu atau beberapa kunci kondisi kebijakan IAM berikut:
+ `aws:ResourceTag/clusterTagKey`
+ `ecs:ResourceTag/clusterTagKey`
+ `aws:ResourceTag/taskTagKey`
+ `ecs:ResourceTag/taskTagKey`
+ `ecs:container-name`
+ `ecs:cluster`
+ `ecs:task`
+ `ecs:enable-execute-command`

Dengan contoh berikut kebijakan IAM, pengguna dapat menjalankan perintah dalam wadah yang berjalan dalam tugas dengan tag yang memiliki `environment` kunci dan `development` nilai dan dalam klaster yang diberi `cluster-name` nama.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:ExecuteCommand",
                "ecs:DescribeTasks"
            ],
            "Resource": [
                   "arn:aws:ecs:us-east-1:111122223333:task/cluster-name/*",
                   "arn:aws:ecs:us-east-1:111122223333:cluster/cluster-name"
            ],
            "Condition": {
                "StringEquals": {
                    "ecs:ResourceTag/environment": "development"
                }
            }
        }
    ]
}
```

------

Dengan contoh kebijakan IAM berikut, pengguna tidak dapat menggunakan `execute-command` API saat nama kontainer. `production-app`

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ecs:ExecuteCommand"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {                    
                    "ecs:container-name": "production-app"
                }
            }
        }
    ]
}
```

------

Dengan kebijakan IAM berikut, pengguna hanya dapat meluncurkan tugas ketika ECS Exec dimatikan.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask",
                "ecs:StartTask",
                "ecs:CreateService",
                "ecs:UpdateService"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {                    
                    "ecs:enable-execute-command": "false"
                }
            }
        }
    ]
}
```

------

**catatan**  
Karena tindakan API `execute-command` hanya berisi sumber daya tugas dan klaster dalam sebuah permintaan, maka yang dievaluasi adalah tanda klaster dan tugas.

Untuk informasi selengkapnya tentang kunci kondisi kebijakan IAM, lihat Kunci [tindakan, sumber daya, dan kondisi untuk Amazon Elastic Container Service di Referensi](/service-authorization/latest/reference/list_amazonelasticcontainerservice.html) *Otorisasi Layanan*.

### Membatasi akses ke tindakan Memulai Sesi
<a name="ecs-exec-limit-access-start-session"></a>

Meskipun memulai sesi SSM di wadah Anda di luar ECS Exec dimungkinkan, ini berpotensi mengakibatkan sesi tidak dicatat. Sesi yang dimulai di luar ECS Exec juga dihitung terhadap kuota sesi. Sebaiknya batasi akses ini dengan menolak `ssm:start-session` tindakan secara langsung untuk tugas Amazon ECS Anda menggunakan kebijakan IAM. Anda dapat menolak akses ke semua tugas Amazon ECS atau ke tugas tertentu berdasarkan tag yang digunakan.

Berikut ini adalah contoh kebijakan IAM yang menolak akses ke `ssm:start-session` tindakan untuk tugas di semua Wilayah dengan nama cluster tertentu. Anda dapat menyertakan wildcard dengan `cluster-name` secara opsional.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "ssm:StartSession",
            "Resource": [
                   "arn:aws:ecs:us-east-1:111122223333:task/cluster-name/*"
            ]
        }
    ]
}
```

------

Berikut ini adalah contoh kebijakan IAM yang menolak akses ke `ssm:start-session` tindakan pada sumber daya di semua Wilayah yang ditandai dengan kunci tag `Task-Tag-Key` dan nilai tag. `Exec-Task`

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "ssm:StartSession",
            "Resource": "arn:aws:ecs:*:*:task/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Task-Tag-Key": "Exec-Task"
                }
            }
        }
    ]
}
```

------

## Pemecahan Masalah ECS Exec
<a name="ecs-exec-troubleshooting-overview"></a>

Untuk bantuan pemecahan masalah tambahan, lihat [Memecahkan masalah](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec-troubleshooting.html) dengan Exec.

# Menjalankan perintah menggunakan ECS Exec
<a name="ecs-exec-run"></a>

Anda dapat menggunakan Amazon ECS Exec untuk mengumpulkan informasi diagnostik yang terkait dengan kontainer Anda dan memecahkan masalah kesalahan yang ditemui selama siklus hidup kontainer Anda.

## Prasyarat
<a name="ecs-exec-run-prerequisites"></a>

Sebelum Anda mulai menggunakan ECS Exec, pastikan Anda telah menyelesaikan tindakan ini:
+ Tinjau pertimbangannya. Untuk informasi selengkapnya, lihat [Pertimbangan-pertimbangan](ecs-exec.md#ecs-exec-considerations)
+ Konfigurasikan ECS Exec untuk tugas dan layanan Anda. Untuk informasi selengkapnya, lihat [Mengkonfigurasi ECS Exec](ecs-exec.md#ecs-exec-enabling-and-using)
+ **Instal dan konfigurasikan file AWS CLI**. Untuk informasi selengkapnya, lihat [Memulai dengan AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).
+ **Instal plugin Session Manager untuk file AWS CLI**. Untuk informasi selengkapnya, lihat [Instal plugin Pengelola Sesi untuk AWS CLI](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html).
+ **Konfigurasikan peran tugas dengan izin yang sesuai**. Anda harus menggunakan peran tugas dengan izin yang sesuai untuk ECS Exec. Untuk informasi selengkapnya, lihat Peran [IAM Tugas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html).
+ **Verifikasi persyaratan versi**. ECS Exec memiliki persyaratan versi tergantung pada apakah tugas Anda di-host di Amazon EC2 atau: AWS Fargate
  + Jika Anda menggunakan Amazon EC2, Anda harus menggunakan AMI Amazon ECS yang dioptimalkan yang dirilis setelah 20 Januari 2021, dengan versi agen 1.50.2 atau lebih tinggi. Untuk informasi selengkapnya, lihat [Amazon ECS dioptimalkan AMIs](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html).
  + Jika Anda menggunakan AWS Fargate, Anda harus menggunakan versi platform `1.4.0` atau lebih tinggi (Linux) atau `1.0.0` (Windows). Untuk informasi selengkapnya, lihat [Versi platform AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform-fargate.html).

## Menggunakan konsol untuk tugas layanan
<a name="ecs-exec-run-using-console"></a>

Anda dapat menggunakan konsol untuk menjalankan perintah menggunakan ECS Exec.

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

1. Pada halaman **Clusters**, pilih cluster.

1. Pada halaman detail cluster, di bagian **Layanan**, pilih layanan.

   Halaman detail layanan ditampilkan.

1. Pada halaman detail layanan, pilih **Tugas**. Kemudian, pilih tugas.

1. Di bawah **Kontainer**, pilih wadah tempat Anda ingin menggunakan ECS Exec.

1. Untuk menjalankan perintah:, lakukan salah satu hal berikut:
   + Pilih **Hubungkan**. 

      CloudShell Sesi menampilkan di mana Anda dapat menjalankan perintah Anda.
   + Pilih panah, lalu pilih **Salin AWS CLI perintah**.

     Anda kemudian dapat menjalankan perintah secara lokal.

**Hasil yang diharapkan**

Jika koneksi berhasil, Anda akan melihat prompt shell interaktif dari wadah Anda. Anda sekarang dapat menjalankan perintah langsung di lingkungan kontainer. Untuk keluar dari sesi, pilih **Akhiri Sesi**.

## Menggunakan konsol untuk tugas mandiri
<a name="ecs-exec-run-using-console-standalone-tasks"></a>

Anda dapat menggunakan konsol untuk menjalankan perintah menggunakan ECS Exec.

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

1. Pada halaman **Clusters**, pilih cluster.

1. Pada halaman detail cluster, di bagian **Tugas**, pilih tugas.

   Halaman detail tugas ditampilkan.

1. Di bawah **Kontainer**, pilih wadah tempat Anda ingin menggunakan ECS Exec.

1. Untuk menjalankan perintah:, lakukan salah satu hal berikut:
   + Pilih **Hubungkan**. 

      CloudShell Sesi menampilkan di mana Anda dapat menjalankan perintah Anda.
   + Pilih panah, lalu pilih **Salin AWS CLI perintah**.

     Anda kemudian dapat menjalankan perintah secara lokal.

**Hasil yang diharapkan**

Jika koneksi berhasil, Anda akan melihat prompt shell interaktif dari wadah Anda. Anda sekarang dapat menjalankan perintah langsung di lingkungan kontainer. Untuk keluar dari sesi, pilih **Akhiri Sesi**.

## Menggunakan shell perintah
<a name="ecs-exec-run-using-command-shell"></a>

Anda dapat menggunakan shell perintah untuk menjalankan perintah menggunakan ECS Exec.

Setelah Anda telah mengonfirmasi bahwa `ExecuteCommandAgent` sedang berjalan, Anda dapat membuka shell interaktif pada kontainer Anda dengan menggunakan perintah berikut. Jika tugas Anda berisi beberapa kontainer, Anda harus menentukan nama kontainer menggunakan `--container` bendera. Amazon ECS hanya mendukung memulai sesi interaktif, jadi Anda harus menggunakan bendera. `--interactive`

Perintah berikut akan menjalankan `/bin/sh` perintah interaktif terhadap wadah bernama **container-name** untuk tugas dengan ID dari*task-id*.

*task-id*Itu adalah Nama Sumber Daya Amazon (ARN) dari tugas tersebut.

```
aws ecs execute-command --cluster cluster-name \
    --task task-id \
    --container container-name \
    --interactive \
    --command "/bin/sh"
```

**Hasil yang diharapkan**

Jika perintah berhasil, Anda akan melihat prompt shell interaktif dari wadah Anda. Anda sekarang dapat menjalankan perintah langsung di lingkungan kontainer. Untuk keluar dari sesi, ketik `exit` atau tekan`Ctrl+D`.