

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

# Menggunakan Amazon ECS Windows container dengan domainless gMSA menggunakan AWS CLI
<a name="tutorial-gmsa-windows"></a>

Tutorial berikut menunjukkan cara membuat tugas Amazon ECS yang menjalankan wadah Windows yang memiliki kredensyal untuk mengakses Active Directory dengan file. AWS CLI Dengan menggunakan domainlessgMSA, instance container tidak digabungkan ke domain, aplikasi lain pada instance tidak dapat menggunakan kredensil untuk mengakses domain, dan tugas yang menggabungkan domain yang berbeda dapat berjalan pada instance yang sama.

**Topics**
+ [Prasyarat](#tutorial-gmsa-windows-prerequisites)
+ [Langkah 1: Buat dan konfigurasikan gMSA akun di Layanan Domain Direktori Aktif (AD DS)](#tutorial-gmsa-windows-step1)
+ [Langkah 2: Unggah Kredensial ke Secrets Manager](#tutorial-gmsa-windows-step2)
+ [Langkah 3: Ubah CredSpec JSON Anda untuk menyertakan informasi tanpa domain gMSA](#tutorial-gmsa-windows-step3)
+ [Langkah 4: Unggah CredSpec ke Amazon S3](#tutorial-gmsa-windows-step4)
+ [Langkah 5: (Opsional) Buat cluster Amazon ECS](#tutorial-gmsa-windows-step5)
+ [Langkah 6: Buat peran IAM untuk instance kontainer](#tutorial-gmsa-windows-step6)
+ [Langkah 7: Buat peran eksekusi tugas khusus](#tutorial-gmsa-windows-step7)
+ [Langkah 8: Buat peran tugas untuk Amazon ECS Exec](#tutorial-gmsa-windows-step8)
+ [Langkah 9: Daftarkan definisi tugas yang menggunakan domainless gMSA](#tutorial-gmsa-windows-step9)
+ [Langkah 10: Daftarkan instance wadah Windows ke cluster](#tutorial-gmsa-windows-step10)
+ [Langkah 11: Verifikasi contoh kontainer](#tutorial-gmsa-windows-step11)
+ [Langkah 12: Jalankan tugas Windows](#tutorial-gmsa-windows-step12)
+ [Langkah 13: Verifikasi wadah memiliki gMSA kredensi](#tutorial-gmsa-windows-step13)
+ [Langkah 14: Bersihkan](#tutorial-gmsa-windows-step14)
+ [Debugging Amazon ECS tanpa domain gMSA untuk wadah Windows](#tutorial-gmsa-windows-debugging)

## Prasyarat
<a name="tutorial-gmsa-windows-prerequisites"></a>

Jika mengikuti tutorial ini, berarti prasyarat berikut telah selesai:
+ Langkah-langkah di [Siapkan untuk menggunakan Amazon ECS](get-set-up-for-amazon-ecs.md) telah selesai.
+ Pengguna IAM Anda memiliki izin yang diperlukan yang ditentukan dalam contoh kebijakan [Amazonecs\$1 FullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonECS_FullAccess) IAM.
+  Versi terbaru diinstal dan dikonfigurasi. AWS CLI Untuk informasi selengkapnya tentang menginstal atau memutakhirkan AWS CLI, lihat [Menginstal. AWS Command Line Interface](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 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).
+ Anda menyiapkan domain Direktori Aktif dengan sumber daya yang ingin diakses oleh kontainer Anda. Amazon ECS mendukung pengaturan berikut:
  + Direktori Directory Service Aktif. Directory Service adalah Direktori Aktif AWS terkelola yang di-host di Amazon EC2. Untuk informasi selengkapnya, lihat [Memulai dengan Microsoft AD yang AWS Dikelola](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started.html) di *Panduan AWS Directory Service Administrasi*.
  + Direktori Aktif lokal. Anda harus memastikan bahwa instans penampung Amazon ECS Linux dapat bergabung dengan domain. Untuk informasi selengkapnya, lihat [AWS Direct Connect](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/aws-direct-connect-network-to-amazon.html).
+ Anda memiliki VPC dan subnet yang dapat menyelesaikan nama domain Active Directory.
+ Anda memilih antara **domainless gMSA** dan **menggabungkan setiap instance ke satu** domain. Dengan menggunakan domainlessgMSA, instance container tidak digabungkan ke domain, aplikasi lain pada instance tidak dapat menggunakan kredensil untuk mengakses domain, dan tugas yang menggabungkan domain yang berbeda dapat berjalan pada instance yang sama.

  Kemudian, pilih penyimpanan data untuk CredSpec dan opsional, untuk kredensyal pengguna Active Directory untuk domainless. gMSA

  Amazon ECS menggunakan file spesifikasi kredensi Direktori Aktif ()CredSpec. File ini berisi gMSA metadata yang digunakan untuk menyebarkan konteks gMSA akun ke wadah. Anda menghasilkan CredSpec file dan kemudian menyimpannya di salah satu opsi CredSpec penyimpanan dalam tabel berikut, khusus untuk Sistem Operasi instance kontainer. Untuk menggunakan metode domainless, bagian opsional dalam CredSpec file dapat menentukan kredensional di salah satu opsi *domainless user credentials*penyimpanan dalam tabel berikut, khusus untuk Sistem Operasi instance kontainer.    
<a name="gmsa-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonECS/latest/developerguide/tutorial-gmsa-windows.html)
+ (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 dan konfigurasikan gMSA akun di Layanan Domain Direktori Aktif (AD DS)
<a name="tutorial-gmsa-windows-step1"></a>

Buat dan konfigurasikan gMSA akun di domain Active Directory.

**catatan**  
Langkah ini membuat dua akun terpisah: Akun Layanan Terkelola Grup (GMSA) yang menyediakan identitas untuk kontainer Anda, dan akun pengguna biasa yang digunakan untuk otentikasi domain. Akun ini melayani tujuan yang berbeda dan harus memiliki nama yang berbeda.

1. 

**Menghasilkan kunci root Layanan Distribusi Kunci**
**catatan**  
Jika Anda menggunakan Directory Service, maka Anda dapat melewati langkah ini.

   Kunci root dan gMSA izin KDS dikonfigurasi dengan AWS Microsoft AD terkelola Anda.

   Jika Anda belum membuat Akun gMSA Layanan di domain Anda, Anda harus terlebih dahulu membuat kunci root Key Distribution Service (KDS). KDS bertanggung jawab untuk membuat, memutar, dan melepaskan gMSA kata sandi ke host resmi. Ketika `ccg.exe` kebutuhan untuk mengambil gMSA kredensil, itu menghubungi KDS untuk mengambil kata sandi saat ini.

   Untuk memeriksa apakah kunci root KDS telah dibuat, jalankan PowerShell cmdlet berikut dengan hak admin domain pada pengontrol domain menggunakan modul. `ActiveDirectory` PowerShell Untuk informasi selengkapnya tentang modul, lihat [ActiveDirectory Modul](https://learn.microsoft.com/en-us/powershell/module/activedirectory/?view=windowsserver2022-ps) di situs web Microsoft Learn.

   ```
   PS C:\> Get-KdsRootKey
   ```

   Jika perintah mengembalikan ID kunci, Anda dapat melewati sisa langkah ini. Jika tidak, buat kunci root KDS dengan menjalankan perintah berikut:

   ```
   PS C:\> Add-KdsRootKey -EffectiveImmediately
   ```

   Meskipun argumen `EffectiveImmediately` untuk perintah menyiratkan kunci efektif segera, Anda harus menunggu 10 jam sebelum kunci root KDS direplikasi dan tersedia untuk digunakan pada semua pengontrol domain.

1. 

**Buat gMSA akun**

   Untuk membuat gMSA akun dan memungkinkan `ccg.exe` untuk mengambil gMSA kata sandi, jalankan PowerShell perintah berikut dari Windows Server atau klien dengan akses ke domain. Ganti `ExampleAccount` dengan nama yang Anda inginkan untuk gMSA akun Anda, dan ganti `example-domain` dengan nama domain Active Directory Anda (misalnya, jika domain Anda`contoso.com`, gunakan`contoso`).

   1. 

      ```
      PS C:\> Install-WindowsFeature RSAT-AD-PowerShell
      ```

   1. 

      ```
      PS C:\> New-ADGroup -Name "ExampleAccount Authorized Hosts" -SamAccountName "ExampleAccountHosts" -GroupScope DomainLocal
      ```

   1. 

      ```
      PS C:\> New-ADServiceAccount -Name "ExampleAccount" -DnsHostName "example-domain" -ServicePrincipalNames "host/ExampleAccount", "host/example-domain" -PrincipalsAllowedToRetrieveManagedPassword "ExampleAccountHosts"
      ```

   1. Buat pengguna dengan kata sandi permanen yang tidak kedaluwarsa. Kredensil ini disimpan AWS Secrets Manager dan digunakan oleh setiap tugas untuk bergabung dengan domain. Ini adalah akun pengguna terpisah dari akun GMSA yang dibuat di atas. Ganti `ExampleServiceUser` dengan nama yang Anda inginkan untuk akun pengguna layanan ini.

      ```
      PS C:\> New-ADUser -Name "ExampleServiceUser" -AccountPassword (ConvertTo-SecureString -AsPlainText "Test123" -Force) -Enabled 1 -PasswordNeverExpires 1
      ```

   1. 

      ```
      PS C:\> Add-ADGroupMember -Identity "ExampleAccountHosts" -Members "ExampleServiceUser"
      ```

   1. Instal PowerShell modul untuk membuat CredSpec objek di Active Directory dan output CredSpec JSON.

      ```
      PS C:\> Install-PackageProvider -Name NuGet -Force
      ```

      ```
      PS C:\> Install-Module CredentialSpec
      ```

   1. 

      ```
      PS C:\> New-CredentialSpec -AccountName ExampleAccount
      ```

1. Salin output JSON dari perintah sebelumnya ke dalam file bernama`gmsa-cred-spec.json`. Ini adalah CredSpec filenya. Ini digunakan pada Langkah 3,[Langkah 3: Ubah CredSpec JSON Anda untuk menyertakan informasi tanpa domain gMSA](#tutorial-gmsa-windows-step3).

## Langkah 2: Unggah Kredensial ke Secrets Manager
<a name="tutorial-gmsa-windows-step2"></a>

Salin kredensyal Active Directory ke dalam sistem penyimpanan kredensyal yang aman, sehingga setiap tugas mengambilnya. Ini adalah metode domainlessgMSA. Dengan menggunakan domainlessgMSA, instance container tidak digabungkan ke domain, aplikasi lain pada instance tidak dapat menggunakan kredensil untuk mengakses domain, dan tugas yang menggabungkan domain yang berbeda dapat berjalan pada instance yang sama.

Langkah ini menggunakan AWS CLI. Anda dapat menjalankan perintah ini AWS CloudShell di shell default, yaitu`bash`.
+ Jalankan AWS CLI perintah berikut dan ganti nama pengguna, kata sandi, dan nama domain agar sesuai dengan lingkungan Anda. Gunakan nama akun pengguna layanan (bukan nama akun GMSA) untuk nama pengguna. Simpan ARN rahasia untuk digunakan pada langkah berikutnya, [Langkah 3: Ubah CredSpec JSON Anda untuk menyertakan informasi tanpa domain gMSA](#tutorial-gmsa-windows-step3)

  Perintah berikut menggunakan karakter kelanjutan garis miring terbalik yang digunakan oleh `sh` dan shell yang kompatibel. Perintah ini tidak kompatibel dengan PowerShell. Anda harus memodifikasi perintah untuk menggunakannya PowerShell.

  ```
  $ aws secretsmanager create-secret \
  --name gmsa-plugin-input \
  --description "Amazon ECS - gMSA Portable Identity." \
  --secret-string "{\"username\":\"ExampleServiceUser\",\"password\":\"Test123\",\"domainName\":\"contoso.com\"}"
  ```

## Langkah 3: Ubah CredSpec JSON Anda untuk menyertakan informasi tanpa domain gMSA
<a name="tutorial-gmsa-windows-step3"></a>

Sebelum mengunggah CredSpec ke salah satu opsi penyimpanan, tambahkan informasi ke CredSpec dengan ARN rahasia di Secrets Manager dari langkah sebelumnya. Untuk informasi selengkapnya, lihat [Konfigurasi spesifikasi kredensyal tambahan untuk kasus penggunaan host non-domain-joined kontainer di situs](https://learn.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/manage-serviceaccounts#additional-credential-spec-configuration-for-non-domain-joined-container-host-use-case) web Microsoft Learn.

1. Tambahkan informasi berikut ke CredSpec file di dalam file`ActiveDirectoryConfig`. Ganti ARN dengan rahasia di Secrets Manager dari langkah sebelumnya.

   Perhatikan bahwa `PluginGUID` nilai harus cocok dengan GUID dalam contoh cuplikan berikut dan diperlukan.

   ```
   "HostAccountConfig": {
         "PortableCcgVersion": "1",
         "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}",
         "PluginInput": "{\"credentialArn\": \"arn:aws:secretsmanager:aws-region:111122223333:secret:gmsa-plugin-input\"}"
       }
   ```

   Anda juga dapat menggunakan rahasia di SSM Parameter Store dengan menggunakan ARN dalam format ini:. `\"arn:aws:ssm:aws-region:111122223333:parameter/gmsa-plugin-input\"`

1. Setelah Anda memodifikasi CredSpec file, itu akan terlihat seperti contoh berikut:

   ```
   {
     "CmsPlugins": [
       "ActiveDirectory"
     ],
     "DomainJoinConfig": {
       "Sid": "S-1-5-21-4066351383-705263209-1606769140",
       "MachineAccountName": "ExampleAccount",
       "Guid": "ac822f13-583e-49f7-aa7b-284f9a8c97b6",
       "DnsTreeName": "example-domain",
       "DnsName": "example-domain",
       "NetBiosName": "example-domain"
     },
     "ActiveDirectoryConfig": {
       "GroupManagedServiceAccounts": [
         {
           "Name": "ExampleAccount",
           "Scope": "example-domain"
         },
         {
           "Name": "ExampleAccount",
           "Scope": "example-domain"
         }
       ],
       "HostAccountConfig": {
         "PortableCcgVersion": "1",
         "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}",
         "PluginInput": "{\"credentialArn\": \"arn:aws:secretsmanager:aws-region:111122223333:secret:gmsa-plugin-input\"}"
       }
     }
   }
   ```

## Langkah 4: Unggah CredSpec ke Amazon S3
<a name="tutorial-gmsa-windows-step4"></a>



Langkah ini menggunakan AWS CLI. Anda dapat menjalankan perintah ini AWS CloudShell di shell default, yaitu`bash`.

1. Salin CredSpec file ke komputer atau lingkungan tempat Anda menjalankan AWS CLI perintah.

1. Jalankan AWS CLI perintah berikut untuk mengunggah CredSpec ke Amazon S3. Ganti `MyBucket` dengan nama bucket Amazon S3 Anda. Anda dapat menyimpan file sebagai objek di bucket dan lokasi mana pun, tetapi Anda harus mengizinkan akses ke bucket dan lokasi tersebut dalam kebijakan yang Anda lampirkan ke peran eksekusi tugas.

   Perintah berikut menggunakan karakter kelanjutan garis miring terbalik yang digunakan oleh `sh` dan shell yang kompatibel. Perintah ini tidak kompatibel dengan PowerShell. Anda harus memodifikasi perintah untuk menggunakannya PowerShell.

   ```
   $ aws s3 cp gmsa-cred-spec.json \
   s3://MyBucket/ecs-domainless-gmsa-credspec
   ```

## Langkah 5: (Opsional) Buat cluster Amazon ECS
<a name="tutorial-gmsa-windows-step5"></a>

Secara default, akun Anda memiliki klaster Amazon ECS bernama`default`. Cluster ini digunakan secara default di AWS CLI, SDKs, dan CloudFormation. Anda dapat menggunakan klaster tambahan untuk mengelompokkan dan mengatur tugas dan infrastruktur, dan menetapkan default untuk beberapa konfigurasi.

Anda dapat membuat cluster dari Konsol Manajemen AWS, AWS CLI, SDKs, atau CloudFormation. Pengaturan dan konfigurasi di cluster tidak mempengaruhigMSA.

Langkah ini menggunakan AWS CLI. Anda dapat menjalankan perintah ini AWS CloudShell di shell default, yaitu`bash`.

```
$ aws ecs create-cluster --cluster-name windows-domainless-gmsa-cluster
```

**penting**  
Jika Anda memilih untuk membuat cluster Anda sendiri, Anda harus menentukan `--cluster clusterName` untuk setiap perintah yang ingin Anda gunakan dengan cluster itu.

## Langkah 6: Buat peran IAM untuk instance kontainer
<a name="tutorial-gmsa-windows-step6"></a>

*Instance container* adalah komputer host untuk menjalankan container dalam tugas ECS, misalnya instans Amazon EC2. Setiap instans kontainer mendaftar ke cluster Amazon ECS. Sebelum meluncurkan instans Amazon EC2 dan mendaftarkannya ke klaster, Anda harus membuat peran IAM agar instans penampung dapat digunakan.

Untuk membuat peran instance container, lihat[Peran IAM instans kontainer Amazon ECS](instance_IAM_role.md). Default `ecsInstanceRole` memiliki izin yang cukup untuk menyelesaikan tutorial ini.

## Langkah 7: Buat peran eksekusi tugas khusus
<a name="tutorial-gmsa-windows-step7"></a>

Amazon ECS dapat menggunakan peran IAM yang berbeda untuk izin yang diperlukan untuk memulai setiap tugas, bukan peran instance container. Peran ini adalah *peran eksekusi tugas*. Sebaiknya buat peran eksekusi tugas hanya dengan izin yang diperlukan untuk ECS untuk menjalankan tugas, juga dikenal sebagai izin hak istimewa paling sedikit*.* *Untuk informasi lebih lanjut tentang prinsip hak istimewa terkecil, lihat [SEC03- BP02 Berikan akses hak istimewa paling sedikit](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_permissions_least_privileges.html) di Kerangka Well-Architected AWS .*

1. Untuk membuat peran eksekusi tugas, lihat[Membuat peran eksekusi tugas](task_execution_IAM_role.md#create-task-execution-role). Izin default memungkinkan instance container untuk menarik gambar kontainer dari Amazon Elastic Container Registry `stdout` dan dan `stderr` dari aplikasi Anda untuk dicatat ke Amazon CloudWatch Logs.

   Karena peran membutuhkan izin khusus untuk tutorial ini, Anda dapat memberikan peran nama yang berbeda dari`ecsTaskExecutionRole`. Tutorial ini digunakan `ecsTaskExecutionRole` dalam langkah-langkah selanjutnya.

1. Tambahkan izin berikut dengan membuat kebijakan khusus, baik kebijakan sebaris yang hanya ada untuk peran ini, atau kebijakan yang dapat Anda gunakan kembali. Ganti ARN untuk pernyataan pertama dengan bucket dan lokasi Amazon S3, dan yang kedua `Resource` dengan ARN rahasia di Secrets Manager. `Resource`

   Jika Anda mengenkripsi rahasia di Secrets Manager dengan kunci khusus, Anda juga harus mengizinkan `kms:Decrypt` kunci tersebut.

   Jika Anda menggunakan SSM Parameter Store bukan Secrets Manager, Anda harus mengizinkan `ssm:GetParameter` parameter, bukan. `secretsmanager:GetSecretValue`

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": "arn:aws:s3:::MyBucket/ecs-domainless-gmsa-credspec/gmsa-cred-spec.json"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "secretsmanager:GetSecretValue"
               ],
               "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:gmsa-plugin-AbCdEf"
           }
       ]
   }
   ```

------

## Langkah 8: Buat peran tugas untuk Amazon ECS Exec
<a name="tutorial-gmsa-windows-step8"></a>

Tutorial ini menggunakan Amazon ECS Exec untuk memverifikasi fungsionalitas dengan menjalankan perintah di dalam tugas yang sedang berjalan. Untuk menggunakan ECS Exec, layanan atau tugas harus mengaktifkan ECS Exec dan peran tugas (tetapi bukan peran eksekusi tugas) harus memiliki izin. `ssmmessages` Untuk kebijakan IAM yang diperlukan, lihat[Izin ECS Exec](task-iam-roles.md#ecs-exec-required-iam-permissions).

Langkah ini menggunakan AWS CLI. Anda dapat menjalankan perintah ini AWS CloudShell di shell default, yaitu`bash`.

Untuk membuat peran tugas menggunakan AWS CLI, ikuti langkah-langkah ini.

1. Buat file yang disebut `ecs-tasks-trust-policy.json` dengan konten berikut:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "ecs-tasks.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. Buat peran IAM. Anda dapat mengganti nama `ecs-exec-demo-task-role` tetapi menyimpan nama untuk langkah-langkah berikut.

   Perintah berikut menggunakan karakter kelanjutan garis miring terbalik yang digunakan oleh `sh` dan shell yang kompatibel. Perintah ini tidak kompatibel dengan PowerShell. Anda harus memodifikasi perintah untuk menggunakannya PowerShell.

   ```
   $ aws iam create-role --role-name ecs-exec-demo-task-role \
   --assume-role-policy-document file://ecs-tasks-trust-policy.json
   ```

   Anda dapat menghapus file tersebut`ecs-tasks-trust-policy.json`.

1. Buat file yang disebut `ecs-exec-demo-task-role-policy.json` dengan konten berikut:

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

****  

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

------

1. Buat kebijakan IAM dan lampirkan ke peran dari langkah sebelumnya.

   Perintah berikut menggunakan karakter kelanjutan garis miring terbalik yang digunakan oleh `sh` dan shell yang kompatibel. Perintah ini tidak kompatibel dengan PowerShell. Anda harus memodifikasi perintah untuk menggunakannya PowerShell.

   ```
   $ aws iam put-role-policy \
       --role-name ecs-exec-demo-task-role \
       --policy-name ecs-exec-demo-task-role-policy \
       --policy-document file://ecs-exec-demo-task-role-policy.json
   ```

   Anda dapat menghapus file tersebut`ecs-exec-demo-task-role-policy.json`.

## Langkah 9: Daftarkan definisi tugas yang menggunakan domainless gMSA
<a name="tutorial-gmsa-windows-step9"></a>



Langkah ini menggunakan AWS CLI. Anda dapat menjalankan perintah ini AWS CloudShell di shell default, yaitu`bash`.

1. Buat file yang disebut `windows-gmsa-domainless-task-def.json` dengan konten berikut:

   ```
   {
     "family": "windows-gmsa-domainless-task",
     "containerDefinitions": [
       {
         "name": "windows_sample_app",
         "image": "mcr.microsoft.com/windows/servercore/iis",
         "cpu": 1024,
         "memory": 1024,
         "essential": true,
         "credentialSpecs": [
                   "credentialspecdomainless:arn:aws:s3:::ecs-domainless-gmsa-credspec/gmsa-cred-spec.json"
         ],
         "entryPoint": [
           "powershell",
           "-Command"
         ],
         "command": [
           "New-Item -Path C:\\inetpub\\wwwroot\\index.html -ItemType file -Value '<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.</p>' -Force ; C:\\ServiceMonitor.exe w3svc"
         ],
         "portMappings": [
           {
             "protocol": "tcp",
             "containerPort": 80,
             "hostPort": 8080
           }
         ]
       }
     ],
     "taskRoleArn": "arn:aws:iam::111122223333:role/ecs-exec-demo-task-role",
     "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole"
   }
   ```

1. Daftarkan definisi tugas dengan menjalankan perintah berikut:

   Perintah berikut menggunakan karakter kelanjutan garis miring terbalik yang digunakan oleh `sh` dan shell yang kompatibel. Perintah ini tidak kompatibel dengan PowerShell. Anda harus memodifikasi perintah untuk menggunakannya PowerShell.

   ```
   $ aws ecs register-task-definition \
   --cli-input-json file://windows-gmsa-domainless-task-def.json
   ```

## Langkah 10: Daftarkan instance wadah Windows ke cluster
<a name="tutorial-gmsa-windows-step10"></a>

Luncurkan instans Windows Amazon EC2 dan jalankan agen kontainer ECS untuk mendaftarkannya sebagai instance container di cluster. ECS menjalankan tugas pada instance kontainer yang terdaftar ke cluster tempat tugas dimulai.

1. Untuk meluncurkan instans Windows Amazon EC2 yang dikonfigurasi untuk Amazon ECS di, lihat. Konsol Manajemen AWS[Meluncurkan instans penampung Amazon ECS Windows](launch_window-container_instance.md) Berhenti di langkah untuk *data pengguna*.

1. UntukgMSA, data pengguna harus mengatur variabel lingkungan `ECS_GMSA_SUPPORTED` sebelum memulai agen kontainer ECS.

   Untuk ECS Exec, agen harus memulai dengan argumen. `-EnableTaskIAMRole`

   Untuk mengamankan peran IAM instance dengan mencegah tugas mencapai layanan web EC2 IMDS untuk mengambil kredensyal peran, tambahkan argumen. `-AwsvpcBlockIMDS` Ini hanya berlaku untuk tugas yang menggunakan mode `awsvpc` jaringan.

   ```
   <powershell>
   [Environment]::SetEnvironmentVariable("ECS_GMSA_SUPPORTED", $TRUE, "Machine")
   Import-Module ECSTools
   Initialize-ECSAgent -Cluster windows-domainless-gmsa-cluster -EnableTaskIAMRole -AwsvpcBlockIMDS
   </powershell>
   ```

1. Tinjau ringkasan konfigurasi instans di panel **Ringkasan**, dan ketika Anda siap, pilih **Luncurkan instans**.

## Langkah 11: Verifikasi contoh kontainer
<a name="tutorial-gmsa-windows-step11"></a>

Anda dapat memverifikasi bahwa ada instance kontainer di cluster menggunakan file Konsol Manajemen AWS. Namun, gMSA perlu fitur tambahan yang ditunjukkan sebagai *atribut*. Atribut ini tidak terlihat di Konsol Manajemen AWS, jadi tutorial ini menggunakan AWS CLI.

Langkah ini menggunakan AWS CLI. Anda dapat menjalankan perintah ini AWS CloudShell di shell default, yaitu`bash`.

1. Buat daftar instance kontainer di cluster. Instance kontainer memiliki ID yang berbeda dari ID instance EC2.

   ```
   $ aws ecs list-container-instances
   ```

   Output:

   ```
   {
       "containerInstanceArns": [
           "arn:aws:ecs:aws-region:111122223333:container-instance/default/MyContainerInstanceID"
       ]
   }
   ```

   Misalnya, `526bd5d0ced448a788768334e79010fd` adalah ID instance kontainer yang valid.

1. Gunakan ID instance container dari langkah sebelumnya untuk mendapatkan detail untuk instance container. Ganti `MyContainerInstanceID` dengan ID.

   Perintah berikut menggunakan karakter kelanjutan garis miring terbalik yang digunakan oleh `sh` dan shell yang kompatibel. Perintah ini tidak kompatibel dengan PowerShell. Anda harus memodifikasi perintah untuk menggunakannya PowerShell.

   ```
   $ aws ecs describe-container-instances \
        ----container-instances MyContainerInstanceID
   ```

   Perhatikan bahwa outputnya sangat panjang.

1. Verifikasi bahwa `attributes` daftar memiliki objek dengan kunci yang dipanggil `name` dan nilai`ecs.capability.gmsa-domainless`. Berikut ini adalah contoh objek.

   Output:

   ```
   {
       "name": "ecs.capability.gmsa-domainless"
   }
   ```

## Langkah 12: Jalankan tugas Windows
<a name="tutorial-gmsa-windows-step12"></a>

Jalankan tugas Amazon ECS. Jika hanya ada 1 instance kontainer di cluster, Anda dapat menggunakan`run-task`. Jika ada banyak instance kontainer yang berbeda, mungkin lebih mudah untuk menggunakan `start-task` dan menentukan ID instance container untuk menjalankan tugas, daripada menambahkan batasan penempatan ke definisi tugas untuk mengontrol jenis instance kontainer untuk menjalankan tugas ini.

Langkah ini menggunakan AWS CLI. Anda dapat menjalankan perintah ini AWS CloudShell di shell default, yaitu`bash`.

1. 

   Perintah berikut menggunakan karakter kelanjutan garis miring terbalik yang digunakan oleh `sh` dan shell yang kompatibel. Perintah ini tidak kompatibel dengan PowerShell. Anda harus memodifikasi perintah untuk menggunakannya PowerShell.

   ```
   aws ecs run-task --task-definition windows-gmsa-domainless-task \
       --enable-execute-command --cluster windows-domainless-gmsa-cluster
   ```

   Perhatikan ID tugas yang dikembalikan oleh perintah.

1. Jalankan perintah berikut untuk memverifikasi bahwa tugas telah dimulai. Perintah ini menunggu dan tidak mengembalikan shell prompt sampai tugas dimulai. Ganti `MyTaskID` dengan ID tugas dari langkah sebelumnya.

   ```
   $ aws ecs wait tasks-running --task MyTaskID
   ```

## Langkah 13: Verifikasi wadah memiliki gMSA kredensi
<a name="tutorial-gmsa-windows-step13"></a>

Verifikasi bahwa wadah dalam tugas memiliki Kerberos token. gMSA 

Langkah ini menggunakan AWS CLI. Anda dapat menjalankan perintah ini AWS CloudShell di shell default, yaitu`bash`.

1. 

   Perintah berikut menggunakan karakter kelanjutan garis miring terbalik yang digunakan oleh `sh` dan shell yang kompatibel. Perintah ini tidak kompatibel dengan PowerShell. Anda harus memodifikasi perintah untuk menggunakannya PowerShell.

   ```
   $ aws ecs execute-command \
   --task MyTaskID \
   --container windows_sample_app \
   --interactive \
   --command powershell.exe
   ```

   Outputnya akan menjadi PowerShell prompt.

1. Jalankan perintah berikut di PowerShell terminal di dalam wadah.

   ```
   PS C:\> klist get ExampleAccount$
   ```

   Dalam output, perhatikan `Principal` adalah yang Anda buat sebelumnya.

## Langkah 14: Bersihkan
<a name="tutorial-gmsa-windows-step14"></a>

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

Langkah ini menggunakan AWS CLI. Anda dapat menjalankan perintah ini AWS CloudShell di shell default, yaitu`bash`.

1. Hentikan tugas. Ganti `MyTaskID` dengan ID tugas dari langkah 12,[Langkah 12: Jalankan tugas Windows](#tutorial-gmsa-windows-step12).

   ```
   $ aws ecs stop-task --task MyTaskID
   ```

1. Mengakhiri instans Amazon EC2. Setelah itu, instance container di cluster akan dihapus secara otomatis setelah satu jam.

   Anda dapat menemukan dan menghentikan instance dengan menggunakan konsol Amazon EC2. Atau, Anda dapat menjalankan perintah berikut. Untuk menjalankan perintah, temukan ID instans EC2 di output `aws ecs describe-container-instances` perintah dari langkah 1,[Langkah 11: Verifikasi contoh kontainer](#tutorial-gmsa-windows-step11). i-10a64379 adalah contoh ID instans EC2.

   ```
   $ aws ec2 terminate-instances --instance-ids MyInstanceID
   ```

1. Hapus CredSpec file di Amazon S3. Ganti `MyBucket` dengan nama bucket Amazon S3 Anda.

   ```
   $ aws s3api delete-object --bucket MyBucket --key ecs-domainless-gmsa-credspec/gmsa-cred-spec.json
   ```

1. Hapus rahasia dari Secrets Manager. Jika Anda menggunakan SSM Parameter Store sebagai gantinya, hapus parameternya.

   Perintah berikut menggunakan karakter kelanjutan garis miring terbalik yang digunakan oleh `sh` dan shell yang kompatibel. Perintah ini tidak kompatibel dengan PowerShell. Anda harus memodifikasi perintah untuk menggunakannya PowerShell.

   ```
   $ aws secretsmanager delete-secret --secret-id gmsa-plugin-input \
        --force-delete-without-recovery
   ```

1. Deregister dan hapus definisi tugas. Dengan membatalkan pendaftaran definisi tugas, Anda menandainya sebagai tidak aktif sehingga tidak dapat digunakan untuk memulai tugas baru. Kemudian, Anda dapat menghapus definisi tugas.

   1. Deregister definisi tugas dengan menentukan versinya. ECS secara otomatis membuat versi definisi tugas, yang diberi nomor mulai dari 1. Anda merujuk ke versi dalam format yang sama dengan label pada gambar kontainer, seperti`:1`.

      ```
      $ aws ecs deregister-task-definition --task-definition windows-gmsa-domainless-task:1
      ```

   1. Hapus definisi tugas.

      ```
      $ aws ecs delete-task-definitions --task-definition windows-gmsa-domainless-task:1
      ```

1. (Opsional) Hapus cluster ECS, jika Anda membuat cluster.

   ```
   $ aws ecs delete-cluster --cluster windows-domainless-gmsa-cluster
   ```

## Debugging Amazon ECS tanpa domain gMSA untuk wadah Windows
<a name="tutorial-gmsa-windows-debugging"></a>



Status tugas Amazon ECS  
ECS mencoba memulai tugas tepat sekali. Setiap tugas yang memiliki masalah dihentikan, dan disetel ke status`STOPPED`. Ada dua jenis masalah umum dengan tugas. Pertama, tugas yang tidak bisa dimulai. Kedua, tugas di mana aplikasi telah berhenti di dalam salah satu wadah. Di Konsol Manajemen AWS, lihat bidang **Alasan berhenti** dari tugas karena alasan mengapa tugas itu dihentikan. Dalam AWS CLI, jelaskan tugas dan lihat`stoppedReason`. Untuk langkah-langkah di Konsol Manajemen AWS dan AWS CLI, lihat[Melihat Amazon ECS menghentikan kesalahan tugas](stopped-task-errors.md).

Peristiwa-peristiwa Windows  
Peristiwa Windows untuk gMSA dalam wadah dicatat dalam file `Microsoft-Windows-Containers-CCG` log dan dapat ditemukan di Penampil Acara di bagian Aplikasi dan Layanan di`Logs\Microsoft\Windows\Containers-CCG\Admin`. Untuk tips debugging lainnya, lihat [Memecahkan masalah g MSAs untuk kontainer Windows](https://learn.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/gmsa-troubleshooting#non-domain-joined-container-hosts-use-event-logs-to-identify-configuration-issues) di situs web Microsoft Learn.

Plugin agen gMSA ECS  
Logging untuk gMSA plugin untuk agen ECS pada instance kontainer Windows ada di direktori berikut,`C:/ProgramData/Amazon/gmsa-plugin/`. Lihat di log ini untuk melihat apakah kredensil pengguna tanpa domain diunduh dari lokasi penyimpanan, seperti Secrets Manager, dan format kredensialnya telah dibaca dengan benar.