Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Profil d’instance des instances gérées Amazon ECS
Un profil d’instance est un conteneur IAM qui contient exactement un rôle IAM et permet aux instances gérées Amazon ECS d’assumer ce rôle en toute sécurité. Le profil d’instance contient un rôle d’instance que l’agent ECS assume pour enregistrer les instances auprès des clusters et communiquer avec le service ECS.
Important
Si vous utilisez des instances gérées Amazon ECS avec la politique AmazonECSInfrastructureRolePolicyForManagedInstances gérée, le nom du rôle de l'instance doit commencer parecsInstanceRole. La politique s'étend iam:PassRole jusqu'àarn:aws:iam::*:role/ecsInstanceRole*, de sorte qu'un nom non compatible entraîne une erreur d'autorisation lors du lancement de la tâche. Cela est courant CloudFormation lorsque vous omettezRoleName, car des noms tels que sont CloudFormation générés automatiquement. MyStack-InstanceRole-ABC123
Si vous utilisez plutôt une politique de rôle d'infrastructure personnalisée, le rôle d'instance peut porter n'importe quel nom tant que votre politique inclut une iam:PassRole subvention ciblant l'ARN du rôle d'instance.
Création d’un rôle avec la stratégie d’approbation
Remplacez tout user input par vos propres informations.
-
Créez un fichier nommé
ecsInstanceRole-trust-policy.jsoncontenant la stratégie d'approbation à utiliser pour le rôle IAM. Le fichier doit contenir ce qui suit : -
Utilisez la AWS CLI commande suivante pour créer un rôle nommé
ecsInstanceRoleen utilisant la politique de confiance que vous avez créée à l'étape précédente.aws iam create-role \ --role-name ecsInstanceRole \ --assume-role-policy-document file://ecsInstanceRole-trust-policy.json -
Associez la
AmazonECSInstanceRolePolicyForManagedInstancespolitique AWS gérée auecsInstanceRolerôle.aws iam attach-role-policy \ --role-name ecsInstanceRole \ --policy-arn arn:aws:iam::aws:policy/AmazonECSInstanceRolePolicyForManagedInstancesNote
Si vous choisissez d'appliquer des autorisations de moindre privilège et de spécifier les vôtres à la place, vous pouvez ajouter les autorisations suivantes pour aider à résoudre les problèmes liés aux tâches avec les instances gérées Amazon ECS :
ecs:StartTelemetrySessionecs:PutSystemLogEvents
Vous pouvez également utiliser le flux de travail Stratégie d’approbation personnalisée de la console IAM pour créer le rôle. Pour plus d’informations, reportez-vous à la section Création d’un rôle à l’aide de politiques de confiance personnalisées (console) dans le Guide de l’utilisateur IAM.
Une fois le fichier créé, vous devez autoriser votre utilisateur à transmettre le rôle à Amazon ECS.
Créez le profil d'instance à l'aide du AWS CLI
Après avoir créé le rôle, créez le profil d’instance à l’aide de l’ AWS CLI :
aws iam create-instance-profile --instance-profile-name ecsInstanceRole
Ajoutez le rôle au profil d’instance :
aws iam add-role-to-instance-profile \ --instance-profile-name ecsInstanceRole \ --role-name ecsInstanceRole
Vérifiez que le profil a été créé avec succès :
aws iam get-instance-profile --instance-profile-name ecsInstanceRole
Créez le profil d'instance à l'aide de CloudFormation
Vous pouvez l'utiliser AWS CloudFormation pour créer le rôle d'instance et le profil d'instance. Choisissez l'une des options suivantes selon que vous utilisez la politique d'infrastructure AWS gérée ou une politique personnalisée.
Option 1 : utiliser la convention de ecsInstanceRole dénomination (recommandée)
Lorsque vous utilisez la politique d'infrastructure AWS gérée par -managed, vous devez RoleName définir explicitement une valeur commençant ecsInstanceRole par. Si vous omettezRoleName, un nom qui ne correspond pas à la iam:PassRole condition de la politique gérée est CloudFormation
généré automatiquement et les tâches ne sont pas lancées.
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
Option 2 : utiliser un nom de rôle personnalisé
Si vous préférez laisser CloudFormation générer le nom du rôle, ou si vous utilisez un nom personnalisé qui ne commence pas parecsInstanceRole, vous devez ajouter une politique intégrée à votre rôle d'infrastructure qui accorde le rôle iam:PassRole d'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.*"
Résolution des problèmes
Les tâches échouent avec iam : erreur PassRole d'autorisation
Si vos tâches échouent avec une mentioniam:PassRole, vérifiez ResourceInitializationError que le nom de votre rôle d'instance commence parecsInstanceRole. Vous pouvez vérifier le nom généré automatiquement dans la CloudFormation console sous l'onglet Ressources de votre pile. Si le nom ne correspond pas, soit :
-
Ajoutez
RoleName: ecsInstanceRoleà votreAWS::IAM::Roleressource. -
Ajoutez une politique
iam:PassRoleen ligne explicite à votre rôle d'infrastructure. Pour de plus amples informations, veuillez consulter Option 2 : utiliser un nom de rôle personnalisé.