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 agen ECS untuk mendaftarkan instance dengan cluster dan berkomunikasi dengan layanan ECS.

penting

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

Jika Anda menggunakan kebijakan peran infrastruktur kustom, peran instance dapat memiliki nama apa pun selama kebijakan Anda menyertakan iam:PassRole hibah yang menargetkan ARN peran instance.

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 ecsInstanceRole bernama menggunakan kebijakan kepercayaan yang Anda buat di langkah sebelumnya.

    aws iam create-role \ --role-name ecsInstanceRole \ --assume-role-policy-document file://ecsInstanceRole-trust-policy.json
  3. Lampirkan AmazonECSInstanceRolePolicyForManagedInstances kebijakan yang AWS dikelola 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 paling sedikit dan menetapkan izin Anda sendiri, Anda dapat menambahkan izin berikut untuk membantu mengatasi masalah terkait tugas dengan Instans Terkelola Amazon ECS:

    • ecs:StartTelemetrySession

    • ecs:PutSystemLogEvents

Anda juga dapat menggunakan alur 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 Anda membuat file, Anda harus memberikan izin pengguna Anda untuk meneruskan peran 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 yang AWS dikelola atau kebijakan khusus.

Opsi 1: Gunakan konvensi ecsInstanceRole penamaan (disarankan)

Bila Anda menggunakan kebijakan infrastruktur AWS-managed, Anda harus secara eksplisit menyetel RoleName ke nilai yang dimulai dengan. ecsInstanceRole Jika Anda menghilangkannyaRoleName, CloudFormation buat nama yang tidak cocok dengan iam:PassRole kondisi kebijakan terkelola secara otomatis, 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 dimulaiecsInstanceRole, Anda harus menambahkan kebijakan sebaris pada peran infrastruktur yang diberikan iam:PassRole untuk peran instance.

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 yang ResourceInitializationError menyebutkaniam:PassRole, verifikasi bahwa nama peran instans Anda dimulai denganecsInstanceRole. Anda dapat memeriksa nama yang dibuat secara otomatis di CloudFormation konsol di bawah tab Sumber Daya tumpukan Anda. Jika namanya tidak cocok, baik:

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