

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

# Pelajari cara membuat tugas untuk Instans Terkelola Amazon ECS dengan AWS CLI
<a name="getting-started-managed-instances-cli"></a>

 Langkah-langkah berikut membantu Anda menyiapkan klaster, membuat penyedia kapasitas, mendaftarkan definisi tugas, menjalankan tugas Linux, dan melakukan skenario umum lainnya di Amazon ECS dengan Instans Terkelola Amazon ECS menggunakan. AWS CLI Gunakan versi terbaru dari AWS CLI. Untuk informasi selengkapnya tentang cara memutakhirkan ke versi terbaru, lihat [Menginstal atau memperbarui ke versi terbaru AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). 

**catatan**  
 Anda dapat menggunakan titik akhir layanan dual-stack untuk berinteraksi dengan Amazon ECS dari AWS AWS CLI, SDKs dan Amazon ECS API melalui keduanya dan. IPv4 IPv6 Untuk informasi selengkapnya, lihat [Menggunakan titik akhir tumpukan ganda Amazon ECS](dual-stack-endpoint.md). 

**Topik**
+ [Prasyarat](#managed-instances-cli-prereq)
+ [Langkah 1: Buat cluster](#managed-instances-cli-create-cluster)
+ [Langkah 2: Buat penyedia kapasitas Instans Terkelola Amazon ECS](#managed-instances-cli-create-capacity-provider)
+ [Langkah 3: Konfigurasikan strategi penyedia kapasitas default cluster](#managed-instances-cli-configure-cluster)
+ [Langkah 4: Daftarkan definisi tugas Linux](#managed-instances-cli-register-task-definition)
+ [Langkah 5: Daftar definisi tugas](#managed-instances-cli-list-task-definitions)
+ [Langkah 6: Buat layanan](#managed-instances-cli-create-service)
+ [Langkah 7: Daftar layanan](#managed-instances-cli-list-services)
+ [Langkah 8: Jelaskan layanan yang sedang berjalan](#managed-instances-cli-describe-service)
+ [Langkah 9: Uji](#managed-instances-cli-test)
+ [Langkah 10: Bersihkan](#managed-instances-cli-clean-up)

## Prasyarat
<a name="managed-instances-cli-prereq"></a>

 Selesaikan yang berikut ini sebelum Anda memulai tutorial: 
+ Anda telah menyelesaikan langkah-langkah di [Mengatur untuk menggunakan Amazon ECS.](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/get-set-up-for-amazon-ecs.html)
+ Versi terbaru diinstal dan dikonfigurasi. AWS CLI *Untuk informasi selengkapnya tentang menginstal atau memutakhirkan AWS CLI, lihat [Menginstal atau memperbarui ke versi terbaru AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) di Panduan Pengguna AWS Command Line Interface .*
+ Langkah-langkah di [Siapkan untuk menggunakan Amazon ECS](get-set-up-for-amazon-ecs.md) telah diselesaikan.
+ Anda memiliki peran IAM yang diperlukan untuk Instans Terkelola Amazon ECS. Hal ini mencakup:
  + Peran infrastruktur - Memungkinkan Amazon ECS melakukan panggilan ke AWS layanan atas nama Anda untuk mengelola infrastruktur Instans Terkelola Amazon ECS.

    Untuk informasi selengkapnya, lihat [Peran IAM Infrastruktur Amazon ECS](infrastructure_IAM_role.md).
  + Profil instans - Menyediakan izin untuk agen penampung Amazon ECS dan daemon Docker yang berjalan pada instance terkelola.

    Nama peran instance harus disertakan `ecsInstanceRole` sebagai awalan agar sesuai dengan `iam:PassRole` tindakan dalam peran infrastruktur.

    Untuk informasi selengkapnya, lihat [Profil instans Instans Terkelola Amazon ECS](managed-instances-instance-profile.md).
+ Anda memiliki VPC dan grup keamanan yang dibuat untuk digunakan. Tutorial ini menggunakan gambar kontainer yang dihosting di Amazon ECR Public sehingga instans Anda harus memiliki akses internet. Untuk memberikan instance Anda rute ke internet, gunakan salah satu opsi berikut:
  + Gunakan subnet privat dengan gateway NAT yang memiliki alamat IP elastis.
  + Gunakan subnet publik dan tetapkan alamat IP publik ke instans.

  Untuk informasi selengkapnya, lihat [Buat virtual private cloud](get-set-up-for-amazon-ecs.md#create-a-vpc).

  Untuk informasi tentang grup dan aturan keamanan, lihat [Grup keamanan default untuk aturan Anda VPCs](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#DefaultSecurityGroup) [dan Contoh](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#security-group-rule-examples) di *Panduan Pengguna Amazon Virtual Private Cloud*.
+ (Opsional) AWS CloudShell adalah alat yang memberi pelanggan baris perintah tanpa perlu membuat instance EC2 mereka sendiri. Untuk informasi lebih lanjut, lihat [Apa itu AWS CloudShell?](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html) dalam *AWS CloudShell User Guide*.

## Langkah 1: Buat cluster
<a name="managed-instances-cli-create-cluster"></a>

 Secara default, akun Anda menerima klaster `default`. 

**catatan**  
 Manfaat dari penggunaan klaster `default` yang disediakan untuk Anda adalah bahwa Anda tidak perlu menentukan properti pada pilihan `--cluster cluster_name` di perintah berikutnya. Jika Anda membuat klaster non-default sendiri, Anda harus menentukan `--cluster cluster_name` untuk setiap perintah yang ingin Anda gunakan dengan klaster itu. 

 Buat klaster Anda sendiri dengan nama yang unik menggunakan perintah berikut: 

```
aws ecs create-cluster --cluster-name managed-instances-cluster
```

Output:

```
{
    "cluster": {
        "status": "ACTIVE", 
        "defaultCapacityProviderStrategy": [], 
        "statistics": [], 
        "capacityProviders": [], 
        "tags": [], 
        "clusterName": "managed-instances-cluster", 
        "settings": [
            {
                "name": "containerInsights", 
                "value": "disabled"
            }
        ], 
        "registeredContainerInstancesCount": 0, 
        "pendingTasksCount": 0, 
        "runningTasksCount": 0, 
        "activeServicesCount": 0, 
        "clusterArn": "arn:aws:ecs:region:aws_account_id:cluster/managed-instances-cluster"
    }
}
```

## Langkah 2: Buat penyedia kapasitas Instans Terkelola Amazon ECS
<a name="managed-instances-cli-create-capacity-provider"></a>

 Sebelum dapat menjalankan tugas menggunakan Instans Terkelola Amazon ECS, Anda harus membuat penyedia kapasitas yang menentukan konfigurasi infrastruktur. Penyedia kapasitas menentukan peran IAM, konfigurasi jaringan, dan setelan lainnya untuk instans terkelola Anda. 

 Buat file JSON dengan konfigurasi penyedia kapasitas Anda. Ganti nilai placeholder dengan pengidentifikasi sumber daya Anda yang sebenarnya: 

```
{
    "name": "managed-instances-cp",
    "cluster": "managed-instances-cluster",
    "managedInstancesProvider": {
        "infrastructureRoleArn": "arn:aws:iam::aws_account_id:role/ecsInfrastructureRole",
        "instanceLaunchTemplate": {
            "ec2InstanceProfileArn": "arn:aws:iam::aws_account_id:instance-profile/ecsInstanceRole",
            "networkConfiguration": {
                "subnets": [
                    "subnet-abcdef01234567890",
                    "subnet-1234567890abcdef0"
                ],
                "securityGroups": [
                    "sg-0123456789abcdef0"
                ]
            },
            "storageConfiguration": {
                "storageSizeGiB": 100
            },
            "monitoring": "basic"
        }
    }
}
```

 Simpan konfigurasi ini sebagai `managed-instances-cp.json` dan buat penyedia kapasitas: 

```
aws ecs create-capacity-provider --cli-input-json file://managed-instances-cp.json
```

 Perintah mengembalikan deskripsi penyedia kapasitas setelah selesai pembuatannya. 

## Langkah 3: Konfigurasikan strategi penyedia kapasitas default cluster
<a name="managed-instances-cli-configure-cluster"></a>

 Perbarui klaster untuk menggunakan penyedia kapasitas Instans Terkelola Amazon ECS sebagai strategi penyedia kapasitas default. Hal ini memungkinkan tugas dan layanan untuk secara otomatis menggunakan Instans Terkelola Amazon ECS tanpa secara eksplisit menentukan penyedia kapasitas. 

 Buat file JSON dengan konfigurasi penyedia kapasitas cluster: 

```
{
    "cluster": "managed-instances-cluster",
    "capacityProviders": [
        "managed-instances-cp"
    ],
    "defaultCapacityProviderStrategy": [
        {
            "capacityProvider": "managed-instances-cp",
            "weight": 1
        }
    ]
}
```

 Simpan konfigurasi ini sebagai `cluster-cp-strategy.json` dan perbarui cluster: 

```
aws ecs put-cluster-capacity-providers --cli-input-json file://cluster-cp-strategy.json
```

## Langkah 4: Daftarkan definisi tugas Linux
<a name="managed-instances-cli-register-task-definition"></a>

 Sebelum Anda dapat menjalankan tugas di klaster Anda, Anda harus mendaftarkan ketentuan tugas. Ketentuan tugas adalah daftar kontainer yang dikelompokkan bersama-sama. Contoh berikut adalah ketentuan tugas sederhana yang menciptakan sebuah aplikasi web PHP dengan menggunakan citra kontainer httpd yang di-hosting di Docker Hub. Untuk informasi selengkapnya tentang parameter ketentuan tugas yang tersedia, lihat [Parameter definisi tugas Amazon ECS untuk Fargate](task_definition_parameters.md). 

```
{
    "family": "sample-managed-instances",
    "networkMode": "awsvpc",
    "containerDefinitions": [
        {
            "name": "managed-instances-app",
            "image": "public.ecr.aws/docker/library/httpd:latest",
            "portMappings": [
                {
                    "containerPort": 80,
                    "hostPort": 80,
                    "protocol": "tcp"
                }
            ],
            "essential": true,
            "entryPoint": [
                "sh",
                "-c"
            ],
            "command": [
                "/bin/sh -c \"echo '<html><head><title>Amazon ECS Sample App</title><style>body {margin-top: 40px; background-color: #333;} </style></head><body><div style=color:white;text-align:center><h1>Amazon ECS Sample App</h1><h2>Congratulations!</h2><p>Your application is now running on a container in Amazon ECS using Amazon ECS Managed Instances.</p></div></body></html>' >  /usr/local/apache2/htdocs/index.html && httpd-foreground\""
            ]
        }
    ],
    "requiresCompatibilities": [
        "MANAGED_INSTANCES"
    ],
    "cpu": "256",
    "memory": "512"
}
```

 Simpan definisi tugas JSON sebagai file dan berikan dengan `--cli-input-json file://path_to_file.json` opsi. 

 Untuk menggunakan file JSON untuk ketentuan kontainer: 

```
aws ecs register-task-definition --cli-input-json file://$HOME/tasks/managed-instances-task.json
```

 Parameter perintah **register-task-definition** mengembalikan penjelasan pada ketentuan tugas setelah menyelesaikan pendaftarannya. 

## Langkah 5: Daftar definisi tugas
<a name="managed-instances-cli-list-task-definitions"></a>

 Anda dapat membuat daftar ketentuan tugas untuk akun Anda kapan pun dengan perintah **list-task-definitions**. Output dari perintah ini menunjukkan nilai `family` dan `revision` yang dapat Anda gunakan bersama saat memanggil **run-task** atau **start-task**. 

```
aws ecs list-task-definitions
```

Output:

```
{
    "taskDefinitionArns": [
        "arn:aws:ecs:region:aws_account_id:task-definition/sample-managed-instances:1"
    ]
}
```

## Langkah 6: Buat layanan
<a name="managed-instances-cli-create-service"></a>

 Setelah Anda telah mendaftarkan tugas untuk akun Anda, Anda dapat membuat layanan untuk tugas yang telah terdaftar di klaster Anda. Pada contoh ini, Anda membuat layanan dengan satu instans dari ketentuan tugas `sample-managed-instances:1` yang berjalan di klaster Anda. Tugas tersebut membutuhkan rute menuju internet, maka terdapat dua cara untuk Anda agar bisa mencapainya. Salah satu caranya adalah dengan menggunakan subnet privat yang dikonfigurasikan dengan gateway NAT dengan alamat IP elastis di subnet publik. Cara lainnya adalah dengan menggunakan subnet publik dan menetapkan alamat IP publik untuk tugas Anda. Kami menyediakan kedua contoh di bawah ini. 

 Contoh menggunakan subnet pribadi: 

```
aws ecs create-service --cluster managed-instances-cluster --service-name managed-instances-service --task-definition sample-managed-instances:1 --desired-count 1 --network-configuration "awsvpcConfiguration={subnets=[subnet-abcd1234],securityGroups=[sg-abcd1234]}"
```

 Contoh menggunakan subnet publik: 

```
aws ecs create-service --cluster managed-instances-cluster --service-name managed-instances-service --task-definition sample-managed-instances:1 --desired-count 1 --network-configuration "awsvpcConfiguration={subnets=[subnet-abcd1234],securityGroups=[sg-abcd1234],assignPublicIp=ENABLED}"
```

 **create-service**Perintah mengembalikan deskripsi layanan setelah selesai pembuatannya. 

## Langkah 7: Daftar layanan
<a name="managed-instances-cli-list-services"></a>

 Cantumkan layanan untuk klaster Anda. Anda seharusnya dapat melihat layanan yang Anda buat di bagian sebelumnya. Anda dapat mengambil nama layanan atau ARN penuh yang telah dikembalikan dari perintah ini serta menggunakannya untuk menjelaskan layanan nantinya. 

```
aws ecs list-services --cluster managed-instances-cluster
```

Output:

```
{
    "serviceArns": [
        "arn:aws:ecs:region:aws_account_id:service/managed-instances-cluster/managed-instances-service"
    ]
}
```

## Langkah 8: Jelaskan layanan yang sedang berjalan
<a name="managed-instances-cli-describe-service"></a>

 Jelaskan layanan yang menggunakan nama layanan yang telah diambil sebelumnya untuk mendapatkan informasi lebih lanjut tentang tugas. 

```
aws ecs describe-services --cluster managed-instances-cluster --services managed-instances-service
```

 Jika berhasil, tugas akan mengembalikan deskripsi dari layanan yang gagal juga layanan. Misalnya, di `services` bagian ini, Anda akan menemukan informasi tentang penerapan, seperti status tugas sebagai berjalan atau tertunda. Anda juga dapat menemukan informasi tentang ketentuan tugas, konfigurasi jaringan dan peristiwa stempel waktu. Pada bagian kegagalan, Anda akan menemukan informasi tentang kegagalan, jika ada kegagalan tersebut, yang terkait dengan panggilan tersebut. 

 Output akan menunjukkan bahwa layanan menggunakan penyedia kapasitas Instans Terkelola Amazon ECS: 

```
{
    "services": [
        {
            "capacityProviderStrategy": [
                {
                    "capacityProvider": "managed-instances-cp",
                    "weight": 1,
                    "base": 0
                }
            ],
            "networkConfiguration": {
                "awsvpcConfiguration": {
                    "subnets": [
                        "subnet-abcd1234"
                    ], 
                    "securityGroups": [
                        "sg-abcd1234"
                    ], 
                    "assignPublicIp": "ENABLED"
                }
            }, 
            "enableECSManagedTags": false, 
            "loadBalancers": [], 
            "deploymentController": {
                "type": "ECS"
            }, 
            "desiredCount": 1, 
            "clusterArn": "arn:aws:ecs:region:aws_account_id:cluster/managed-instances-cluster", 
            "serviceArn": "arn:aws:ecs:region:aws_account_id:service/managed-instances-service", 
            "serviceName": "managed-instances-service",
            "taskDefinition": "arn:aws:ecs:region:aws_account_id:task-definition/sample-managed-instances:1"
        }
    ], 
    "failures": []
}
```

## Langkah 9: Uji
<a name="managed-instances-cli-test"></a>

 Untuk menguji penerapan Anda, Anda perlu menemukan alamat IP publik dari instans terkelola yang menjalankan tugas Anda. 

### Tugas pengujian dikerahkan menggunakan subnet publik
<a name="managed-instances-cli-test-public-subnet"></a>

 Pertama, dapatkan tugas ARN dari layanan Anda: 

```
aws ecs list-tasks --cluster managed-instances-cluster --service managed-instances-service
```

 Output berisi tugas ARN: 

```
{
    "taskArns": [
        "arn:aws:ecs:region:aws_account_id:task/managed-instances-cluster/EXAMPLE"
    ]
}
```

 Jelaskan tugas untuk mendapatkan ARN instance kontainer. Gunakan tugas ARN untuk parameter: `tasks` 

```
aws ecs describe-tasks --cluster managed-instances-cluster --tasks arn:aws:ecs:region:aws_account_id:task/managed-instances-cluster/EXAMPLE
```

 Output menunjukkan tugas berjalan di Instans Terkelola Amazon ECS dan menyertakan ARN instance container: 

```
{
    "tasks": [
        {
            "launchType": "MANAGED_INSTANCES",
            "capacityProviderName": "managed-instances-cp",
            "containerInstanceArn": "arn:aws:ecs:region:aws_account_id:container-instance/managed-instances-cluster/CONTAINER_INSTANCE_ID",
            "taskArn": "arn:aws:ecs:region:aws_account_id:task/managed-instances-cluster/EXAMPLE",
            "taskDefinitionArn": "arn:aws:ecs:region:aws_account_id:task-definition/sample-managed-instances:1"
        }
    ]
}
```

 Jelaskan instance container untuk mendapatkan ID instans EC2: 

```
aws ecs describe-container-instances --cluster managed-instances-cluster --container-instances CONTAINER_INSTANCE_ID
```

 Outputnya mencakup ID instans EC2: 

```
{
    "containerInstances": [
        {
            "ec2InstanceId": "i-1234567890abcdef0",
            "capacityProviderName": "managed-instances-cp",
            "containerInstanceArn": "arn:aws:ecs:region:aws_account_id:container-instance/managed-instances-cluster/CONTAINER_INSTANCE_ID"
        }
    ]
}
```

 Jelaskan instans EC2 untuk mendapatkan alamat IP publik: 

```
aws ec2 describe-instances --instance-ids i-1234567890abcdef0
```

 Alamat IP publik ada di output: 

```
{
    "Reservations": [
        {
            "Instances": [
                {
                    "PublicIpAddress": "198.51.100.2",
                    "InstanceId": "i-1234567890abcdef0"
                }
            ]
        }
    ]
}
```

 Masukkan alamat IP publik di browser web Anda dan Anda akan melihat halaman web yang menampilkan contoh aplikasi **Amazon ECS** yang berjalan di Instans Terkelola Amazon ECS. 

### Tugas pengujian diterapkan menggunakan subnet pribadi
<a name="managed-instances-cli-test-private-subnet"></a>

 Untuk tugas yang diterapkan di subnet pribadi, Anda dapat menggunakan Amazon ECS Exec untuk menyambung ke penampung dan menguji penerapan dari dalam instance. Ikuti langkah yang sama seperti di atas untuk mendapatkan tugas ARN, lalu gunakan ECS Exec: 

```
aws ecs execute-command --cluster managed-instances-cluster \
    --task arn:aws:ecs:region:aws_account_id:task/managed-instances-cluster/EXAMPLE \
    --container managed-instances-app \
    --interactive \
    --command "/bin/sh"
```

 Setelah shell interaktif berjalan, Anda dapat menguji server web: 

```
curl localhost
```

 Anda akan melihat HTML yang setara dengan halaman web aplikasi sampel **Amazon ECS**. 

## Langkah 10: Bersihkan
<a name="managed-instances-cli-clean-up"></a>

 Setelah selesai dengan tutorial ini, Anda harus membersihkan sumber daya yang terkait untuk menghindari timbulnya biaya untuk sumber daya yang tidak terpakai. 

 Hapus layanan : 

```
aws ecs delete-service --cluster managed-instances-cluster --service managed-instances-service --force
```

 Tunggu layanan dihapus dan semua tugas berhenti, lalu hapus penyedia kapasitas: 

```
aws ecs delete-capacity-provider --capacity-provider managed-instances-cp
```

 Hapus klaster : 

```
aws ecs delete-cluster --cluster managed-instances-cluster
```

**catatan**  
 Instans terkelola secara otomatis dihentikan saat penyedia kapasitas dihapus. Anda tidak perlu menghentikan instans EC2 secara manual. 