Menggunakan wadah Amazon ECS Windows dengan domainless gMSA menggunakan AWS CLI - Amazon Elastic Container Service

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

Menggunakan wadah Amazon ECS Windows dengan domainless gMSA menggunakan AWS CLI

Tutorial berikut menunjukkan cara membuat ECS tugas Amazon yang menjalankan wadah Windows yang memiliki kredensional 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.

Prasyarat

Jika mengikuti tutorial ini, berarti prasyarat berikut telah selesai:

  • Langkah-langkah di Siapkan untuk menggunakan Amazon ECS telah selesai.

  • AWS Pengguna Anda memiliki izin yang diperlukan yang ditentukan dalam contoh Amazon ECS _ FullAccess IAM kebijakan.

  • Versi terbaru diinstal dan dikonfigurasi. AWS CLI Untuk informasi selengkapnya tentang menginstal atau memutakhirkan AWS CLI, lihat Menginstal. AWS Command Line Interface

  • Anda menyiapkan domain Direktori Aktif dengan sumber daya yang ingin diakses oleh kontainer Anda. Amazon ECS mendukung pengaturan berikut:

    • Direktori AWS Directory Service Aktif. AWS Directory Service adalah Direktori Aktif AWS terkelola yang di-host di AmazonEC2. Untuk informasi selengkapnya, lihat Memulai dengan Microsoft AD yang AWS Dikelola 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.

  • 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 credentialspenyimpanan dalam tabel berikut, khusus untuk Sistem Operasi instance kontainer.

    gMSAopsi penyimpanan data oleh Sistem Operasi
    Lokasi penyimpanan Linux Windows
    Amazon Simple Storage Service CredSpec CredSpec
    AWS Secrets Manager kredensial pengguna tanpa domain kredensial pengguna tanpa domain
    Toko Parameter Amazon EC2 Systems Manager CredSpec CredSpec, kredensyal pengguna tanpa domain
    Berkas lokal N/A CredSpec
  • (Opsional) AWS CloudShell adalah alat yang memberi pelanggan baris perintah tanpa perlu membuat EC2 instance mereka sendiri. Untuk informasi lebih lanjut, lihat Apa itu AWS CloudShell? dalam AWS CloudShell User Guide.

Langkah 1: Buat dan konfigurasikan gMSA akun di Layanan Domain Direktori Aktif (AD DS)

Buat dan konfigurasikan gMSA akun di domain Active Directory.

  1. Menghasilkan kunci root Layanan Distribusi Kunci
    catatan

    Jika Anda menggunakan AWS Directory Service, maka Anda dapat melewati langkah ini.

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

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

    Untuk memeriksa apakah kunci KDS root 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 di situs web Microsoft Learn.

    PS C:\> Get-KdsRootKey

    Jika perintah mengembalikan ID kunci, Anda dapat melewati sisa langkah ini. Jika tidak, buat kunci KDS root 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 KDS root direplikasi dan tersedia untuk digunakan pada semua pengontrol domain.

  2. 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.

    1. PS C:\> Install-WindowsFeature RSAT-AD-PowerShell
    2. PS C:\> New-ADGroup -Name "ExampleAccount Authorized Hosts" -SamAccountName "ExampleAccountHosts" -GroupScope DomainLocal
    3. PS C:\> New-ADServiceAccount -Name "ExampleAccount" -DnsHostName "contoso" -ServicePrincipalNames "host/ExampleAccount", "host/contoso" -PrincipalsAllowedToRetrieveManagedPassword "ExampleAccountHosts"
    4. Buat pengguna dengan kata sandi permanen yang tidak kedaluwarsa. Kredensil ini disimpan AWS Secrets Manager dan digunakan oleh setiap tugas untuk bergabung dengan domain.

      PS C:\> New-ADUser -Name "ExampleAccount" -AccountPassword (ConvertTo-SecureString -AsPlainText "Test123" -Force) -Enabled 1 -PasswordNeverExpires 1
    5. PS C:\> Add-ADGroupMember -Identity "ExampleAccountHosts" -Members "ExampleAccount"
    6. Instal PowerShell modul untuk membuat CredSpec objek di Active Directory dan output file CredSpecJSON.

      PS C:\> Install-PackageProvider -Name NuGet -Force
      PS C:\> Install-Module CredentialSpec
    7. PS C:\> New-CredentialSpec -AccountName ExampleAccount
  3. Salin JSON output dari perintah sebelumnya ke dalam file bernamagmsa-cred-spec.json. Ini adalah CredSpec filenya. Ini digunakan pada Langkah 3,Langkah 3: Ubah Anda CredSpec JSON untuk menyertakan informasi tanpa domain gMSA.

Langkah 2: Unggah Kredensial ke Secrets Manager

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, yaitubash.

  • Jalankan AWS CLI perintah berikut dan ganti nama pengguna, kata sandi, dan nama domain agar sesuai dengan lingkungan Anda. Simpan rahasia untuk digunakan pada langkah berikutnya, ARN Langkah 3: Ubah Anda CredSpec JSON untuk menyertakan informasi tanpa domain gMSA

    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\":\"ExampleAccount\",\"password\":\"Test123\",\"domainName\":\"contoso.com\"}"

Langkah 3: Ubah Anda CredSpec JSON untuk menyertakan informasi tanpa domain gMSA

Sebelum mengunggah CredSpec ke salah satu opsi penyimpanan, tambahkan informasi ke CredSpec dengan rahasia di Secrets Manager dari langkah sebelumnya. ARN Untuk informasi selengkapnya, lihat Konfigurasi spesifikasi kredensyal tambahan untuk kasus penggunaan host non-domain-joined kontainer di situs web Microsoft Learn.

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

    Perhatikan bahwa PluginGUID nilainya harus sesuai dengan cuplikan contoh berikut dan diperlukan. GUID

    "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\".

  2. 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": "contoso", "DnsName": "contoso", "NetBiosName": "contoso" }, "ActiveDirectoryConfig": { "GroupManagedServiceAccounts": [ { "Name": "ExampleAccount", "Scope": "contoso" }, { "Name": "ExampleAccount", "Scope": "contoso" } ], "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

Langkah ini menggunakan AWS CLI. Anda dapat menjalankan perintah ini AWS CloudShell di shell default, yaitubash.

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

  2. 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 ECS cluster Amazon

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

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

Langkah ini menggunakan AWS CLI. Anda dapat menjalankan perintah ini AWS CloudShell di shell default, yaitubash.

$ 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 IAM peran untuk instance kontainer

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

Untuk membuat peran instance container, lihatIAMPeran contoh ECS wadah Amazon. Default ecsInstanceRole memiliki izin yang cukup untuk menyelesaikan tutorial ini.

Langkah 7: Buat peran eksekusi tugas khusus

Amazon ECS dapat menggunakan IAM peran 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 ECS untuk menjalankan tugas, juga dikenal sebagai izin hak istimewa paling sedikit. Untuk informasi lebih lanjut tentang prinsip hak istimewa terkecil, lihat SEC03-BP02 Memberikan akses hak istimewa paling sedikit di Kerangka Well-Architected.AWS

  1. Untuk membuat peran eksekusi tugas, lihatMembuat peran eksekusi tugas . 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 dariecsTaskExecutionRole. Tutorial ini digunakan ecsTaskExecutionRole dalam langkah-langkah selanjutnya.

  2. 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 Resource di pernyataan pertama dengan ember dan lokasi Amazon S3, dan yang kedua Resource dengan rahasia di Secrets Manager. ARN

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

    Jika Anda menggunakan SSM Parameter Store alih-alih Secrets Manager, Anda harus mengizinkan ssm:GetParameter parameter, bukansecretsmanager:GetSecretValue.

    { "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:aws-region:111122223333:secret:gmsa-plugin-input" } ] }

Langkah 8: Buat peran tugas untuk Amazon ECS Exec

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 ssmmessages izin. Untuk IAM kebijakan yang diperlukan, lihatECSIzin Exec.

Langkah ini menggunakan AWS CLI. Anda dapat menjalankan perintah ini AWS CloudShell di shell default, yaitubash.

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

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

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Buat IAM peran. Anda dapat mengganti nama ecs-exec-demo-task-role tetapi tetap 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 fileecs-tasks-trust-policy.json.

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

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }
  4. Buat IAM kebijakan 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 fileecs-exec-demo-task-role-policy.json.

Langkah 9: Daftarkan definisi tugas yang menggunakan domainless gMSA

Langkah ini menggunakan AWS CLI. Anda dapat menjalankan perintah ini AWS CloudShell di shell default, yaitubash.

  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" }
  2. 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

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

  1. Untuk meluncurkan instans Amazon EC2 Windows yang dikonfigurasi untuk Amazon ECS di AWS Management Console, lihatMeluncurkan instans penampung Amazon ECS Windows. Berhenti di langkah untuk data pengguna.

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

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

    Untuk mengamankan IAM peran instance dengan mencegah tugas mencapai layanan EC2 IMDS web untuk mengambil kredensi 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>
  3. Tinjau ringkasan konfigurasi instans di panel Ringkasan, dan ketika Anda siap, pilih Luncurkan instans.

Langkah 11: Verifikasi contoh kontainer

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

Langkah ini menggunakan AWS CLI. Anda dapat menjalankan perintah ini AWS CloudShell di shell default, yaitubash.

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

    $ 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.

  2. 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.

  3. Verifikasi bahwa attributes daftar memiliki objek dengan kunci yang dipanggil name dan nilaiecs.capability.gmsa-domainless. Berikut ini adalah contoh objek.

    Output:

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

Langkah 12: Jalankan tugas Windows

Jalankan ECS tugas Amazon. Jika hanya ada 1 instance kontainer di cluster, Anda dapat menggunakanrun-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, yaitubash.

  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.

  2. 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

Verifikasi bahwa wadah dalam tugas memiliki Kerberos token. gMSA

Langkah ini menggunakan AWS CLI. Anda dapat menjalankan perintah ini AWS CloudShell di shell default, yaitubash.

  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.

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

    PS C:\> klist get ExampleAccount$

    Dalam output, perhatikan Principal adalah salah satu yang Anda buat sebelumnya.

Langkah 14: Bersihkan

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, yaitubash.

  1. Hentikan tugas. Ganti MyTaskID dengan ID tugas dari langkah 12,Langkah 12: Jalankan tugas Windows.

    $ aws ecs stop-task --task MyTaskID
  2. Hentikan EC2 instans Amazon. Setelah itu, instance container di cluster akan dihapus secara otomatis setelah satu jam.

    Anda dapat menemukan dan menghentikan instance dengan menggunakan EC2 konsol Amazon. Atau, Anda dapat menjalankan perintah berikut. Untuk menjalankan perintah, cari ID EC2 instance dalam output aws ecs describe-container-instances perintah dari langkah 1,Langkah 11: Verifikasi contoh kontainer. i-10a64379 adalah contoh ID instance. EC2

    $ aws ec2 terminate-instances --instance-ids MyInstanceID
  3. 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
  4. 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
  5. 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 versi. ECSsecara 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
    2. Hapus definisi tugas.

      $ aws ecs delete-task-definitions --task-definition windows-gmsa-domainless-task:1
  6. (Opsional) ECS Hapus cluster, jika Anda membuat cluster.

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

Debugging Amazon ECS domainless gMSA untuk wadah Windows

Status ECS tugas Amazon

ECSmencoba untuk memulai tugas tepat sekali. Setiap tugas yang memiliki masalah dihentikan, dan disetel ke statusSTOPPED. 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 AWS Management Console, lihat bidang Alasan berhenti dari tugas karena alasan mengapa tugas itu dihentikan. Dalam AWS CLI, jelaskan tugas dan lihatstoppedReason. Untuk langkah-langkah di AWS Management Console dan AWS CLI, lihatMelihat Amazon ECS menghentikan kesalahan tugas.

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 diLogs\Microsoft\Windows\Containers-CCG\Admin. Untuk tips debugging lainnya, lihat Memecahkan masalah gMSAs untuk wadah Windows di situs web Microsoft Learn.

ECSgMSAplugin agen

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