View a markdown version of this page

Profilo delle istanze gestite da Amazon ECS - Amazon Elastic Container Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Profilo delle istanze gestite da Amazon ECS

Un profilo dell'istanza è un container IAM che contiene esattamente un ruolo IAM e permette alle istanze gestite da Amazon ECS di assumere tale ruolo in modo sicuro. Il profilo dell'istanza contiene un ruolo dell'istanza che l'agente ECS assume per registrare le istanze nei cluster e comunicare con il servizio ECS.

Importante

Se utilizzi Amazon ECS Managed Instances con la policy AmazonECSInfrastructureRolePolicyForManagedInstances gestita, il nome del ruolo dell'istanza deve iniziare con. ecsInstanceRole L'ambito della policy è pari iam:PassRole aarn:aws:iam::*:role/ecsInstanceRole*, pertanto un nome non corrispondente causa un errore di autorizzazione all'avvio dell'attività. Questo è comune CloudFormation quando si ometteRoleName, perché genera CloudFormation automaticamente nomi come. MyStack-InstanceRole-ABC123

Se invece utilizzi una policy personalizzata sui ruoli dell'infrastruttura, il ruolo dell'istanza può avere qualsiasi nome purché la policy includa una iam:PassRole concessione destinata al ruolo di istanza ARN.

Crea il ruolo con la policy di attendibilità

Sostituisci tutto user input con le tue informazioni.

  1. Crea un file denominato ecsInstanceRole-trust-policy.json contenente la policy di attendibilità da utilizzare per il ruolo IAM. Il file deve contenere il testo seguente:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" } ] }
  2. Usa il AWS CLI comando seguente per creare un ruolo denominato ecsInstanceRole utilizzando la politica di fiducia creata nel passaggio precedente.

    aws iam create-role \ --role-name ecsInstanceRole \ --assume-role-policy-document file://ecsInstanceRole-trust-policy.json
  3. Allega la AmazonECSInstanceRolePolicyForManagedInstances policy AWS gestita al ecsInstanceRole ruolo.

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

    Se scegli di applicare le autorizzazioni con privilegi minimi e di specificare invece le tue autorizzazioni, puoi aggiungere le seguenti autorizzazioni per aiutare a risolvere i problemi relativi alle attività con le istanze gestite di Amazon ECS:

    • ecs:StartTelemetrySession

    • ecs:PutSystemLogEvents

Puoi inoltre usare il flusso di lavoro della policy di attendibilità della console IAM per creare il ruolo. Per ulteriori informazioni, consulta Creazione di un ruolo utilizzando criteri di attendibilità personalizzati (console) nella Guida per l'utente di IAM.

Dopo aver creato il file, è necessario concedere all'utente l'autorizzazione a trasferire il ruolo ad Amazon ECS.

Crea il profilo dell'istanza utilizzando AWS CLI

Dopo aver creato il ruolo, crea il profilo dell'istanza usando la AWS CLI:

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

Aggiungi il ruolo al profilo dell'istanza:

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

Verificare che il profilo sia stato creato correttamente:

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

Crea il profilo dell'istanza utilizzando CloudFormation

È possibile utilizzare AWS CloudFormation per creare il ruolo e il profilo dell'istanza. Scegli una delle seguenti opzioni in base all'utilizzo della policy AWS di infrastruttura gestita o di una politica personalizzata.

Opzione 1: utilizzare la convenzione di InstanceRole denominazione ecs (consigliata)

Quando si utilizza la politica AWS di infrastruttura gestita, è necessario impostare esplicitamente un valore RoleName che inizi con. ecsInstanceRole Se si ometteRoleName, CloudFormation genera automaticamente un nome che non corrisponde alla iam:PassRole condizione della policy gestita e le attività non vengono avviate.

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

Opzione 2: utilizzare un nome di ruolo personalizzato

Se preferisci lasciare che sia CloudFormation generato il nome del ruolo o usi un nome personalizzato che non inizi conecsInstanceRole, devi aggiungere una policy in linea sul ruolo dell'infrastruttura che conceda il ruolo iam:PassRole di istanza.

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

Risoluzione dei problemi

Le attività falliscono con iam: PassRole errore di autorizzazione

Se le tue attività falliscono con una ResourceInitializationError menzioneiam:PassRole, verifica che il nome del ruolo dell'istanza inizi conecsInstanceRole. Puoi controllare il nome generato automaticamente nella CloudFormation console nella scheda Risorse del tuo stack. Se il nome non corrisponde, puoi: