View a markdown version of this page

Profil instans Instans Terkelola Amazon ECS - Amazon Elastic Container Service

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

Profil instans Instans Terkelola Amazon ECS

Profil instans adalah kontainer IAM yang memegang persis satu peran IAM dan memungkinkan Instans Terkelola Amazon ECS untuk mengambil peran tersebut dengan aman. Profil instans berisi peran instans yang diasumsikan oleh agen ECS untuk mendaftarkan instans dengan cluster dan berkomunikasi dengan layanan ECS.

penting

Jika Anda menggunakan Instans Terkelola Amazon ECS dengan kebijakan AmazonECSInfrastructureRolePolicyForManagedInstances terkelola, nama peran instans harus dimulai denganecsInstanceRole. Kebijakan mencakup iam:PassRole kearn:aws:iam::*:role/ecsInstanceRole*, sehingga nama yang tidak cocok menyebabkan kesalahan otorisasi saat peluncuran tugas. Ini umum terjadi CloudFormation ketika Anda menghilangkanRoleName, karena secara CloudFormation otomatis menghasilkan nama seperti. MyStack-InstanceRole-ABC123

Jika Anda menggunakan kebijakan peran infrastruktur khusus sebagai gantinya, peran instans dapat memiliki nama apa pun selama kebijakan Anda menyertakan iam:PassRole hibah yang menargetkan peran instans ARN.

Buat peran dengan kebijakan kepercayaan

Ganti semua user input dengan informasi Anda sendiri.

  1. Buat file bernama ecsInstanceRole-trust-policy.json yang berisi kebijakan kepercayaan yang akan digunakan untuk peran IAM. File tersebut harus berisi hal berikut:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" } ] }
  2. Gunakan AWS CLI perintah berikut untuk membuat peran bernama ecsInstanceRole dengan menggunakan kebijakan kepercayaan yang Anda buat pada langkah sebelumnya.

    aws iam create-role \ --role-name ecsInstanceRole \ --assume-role-policy-document file://ecsInstanceRole-trust-policy.json
  3. Lampirkan AWS AmazonECSInstanceRolePolicyForManagedInstances kebijakan terkelola ke ecsInstanceRole peran.

    aws iam attach-role-policy \ --role-name ecsInstanceRole \ --policy-arn arn:aws:iam::aws:policy/AmazonECSInstanceRolePolicyForManagedInstances
    catatan

    Jika Anda memilih untuk menerapkan izin hak istimewa terkecil dan menentukan izin Anda sendiri sebagai gantinya, Anda dapat menambahkan izin berikut untuk membantu memecahkan masalah terkait tugas dengan Instans Terkelola Amazon ECS:

    • ecs:StartTelemetrySession

    • ecs:PutSystemLogEvents

Anda juga dapat menggunakan al ur kerja kebijakan kepercayaan kustom konsol IAM untuk membuat peran. Untuk informasi selengkapnya, lihat Membuat peran menggunakan kebijakan kepercayaan khusus (konsol) di Panduan Pengguna IAM.

Setelah membuat file, Anda harus memberikan izin pengguna untuk meneruskan peran tersebut ke Amazon ECS.

Buat profil instance menggunakan AWS CLI

Setelah membuat peran, buat profil instance menggunakan AWS CLI:

aws iam create-instance-profile --instance-profile-name ecsInstanceRole

Tambahkan peran ke profil instance:

aws iam add-role-to-instance-profile \ --instance-profile-name ecsInstanceRole \ --role-name ecsInstanceRole

Verifikasi profil berhasil dibuat:

aws iam get-instance-profile --instance-profile-name ecsInstanceRole

Buat profil instance menggunakan CloudFormation

Anda dapat menggunakan AWS CloudFormation untuk membuat peran instance dan profil instance. Pilih salah satu opsi berikut berdasarkan apakah Anda menggunakan kebijakan infrastruktur AWS yang dikelola atau kebijakan kustom.

Opsi 1: Gunakan konvensi InstanceRole penamaan ecs (disarankan)

Saat Anda menggunakan kebijakan infrastruktur AWS-managed, Anda harus secara eksplisit RoleName menetapkan nilai yang dimulai denganecsInstanceRole. Jika Anda menghilangkanRoleName, CloudFormation otomatis membuat nama yang tidak sesuai dengan iam:PassRole kondisi kebijakan terkelola, dan tugas gagal diluncurkan.

Resources: EcsInstanceRole: Type: AWS::IAM::Role Properties: RoleName: ecsInstanceRole AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Principal: Service: ec2.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonECSInstanceRolePolicyForManagedInstances EcsInstanceProfile: Type: AWS::IAM::InstanceProfile Properties: InstanceProfileName: ecsInstanceRole Roles: - !Ref EcsInstanceRole

Opsi 2: Gunakan nama peran khusus

Jika Anda lebih suka membiarkan CloudFormation membuat nama peran, atau Anda menggunakan nama kustom yang tidak dimulai denganecsInstanceRole, Anda harus menambahkan kebijakan sebaris pada peran infrastruktur yang diberikan iam:PassRole untuk peran instans.

Resources: EcsInstanceRole: Type: AWS::IAM::Role Properties: # No RoleName — CFN auto-generates AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Principal: Service: ec2.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonECSInstanceRolePolicyForManagedInstances EcsInstanceProfile: Type: AWS::IAM::InstanceProfile Properties: Roles: - !Ref EcsInstanceRole EcsInfrastructureRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Principal: Service: ecs.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonECSInfrastructureRolePolicyForManagedInstances Policies: - PolicyName: PassInstanceRoleToEC2 PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: iam:PassRole Resource: !GetAtt EcsInstanceRole.Arn Condition: StringLike: iam:PassedToService: "ec2.*"

Pemecahan masalah

Tugas gagal dengan iam: kesalahan PassRole otorisasi

Jika tugas Anda gagal dengan menyebutkan ResourceInitializationError ituiam:PassRole, verifikasi bahwa nama peran instans Anda dimulai denganecsInstanceRole. Anda dapat memeriksa nama yang dibuat secara otomatis di CloudFormation konsol di bawah tab Resources tumpukan Anda. Jika namanya tidak cocok, salah satunya:

  • Tambahkan RoleName: ecsInstanceRole ke AWS::IAM::Role sumber daya Anda.

  • Tambahkan kebijakan iam:PassRole inline eksplisit ke peran infrastruktur Anda. Untuk informasi selengkapnya, lihat Opsi 2: Gunakan nama peran khusus.