Étape 2 : créer un rôle de service pour CodeDeploy - AWS CodeDeploy

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.

Étape 2 : créer un rôle de service pour CodeDeploy

Dans AWS, les rôles de service sont utilisés pour accorder des autorisations à un service AWS afin qu'il puisse accéder aux ressources AWS. Les politiques que vous attachez au rôle de service déterminent les ressources auxquelles le service peut accéder et ce qu'il peut faire avec ces ressources.

Le rôle de service pour lequel vous créez CodeDeploy doit disposer des autorisations requises pour votre plate-forme de calcul. Si vous déployez sur plusieurs plateformes informatiques, créez un rôle de service pour chacune d'entre elles. Pour ajouter des autorisations, joignez une ou plusieurs des politiques AWS fournies suivantes :

Pour les déploiements EC2/sur site, joignez la politique. AWSCodeDeployRole Elle fournit les autorisations requises pour que votre rôle de service puisse :

  • Lisez les balises de vos instances ou identifiez vos instances Amazon EC2 par les noms de groupes Amazon EC2 Auto Scaling.

  • Lisez, créez, mettez à jour et supprimez les groupes Amazon EC2 Auto Scaling, les hooks de cycle de vie et les politiques de dimensionnement.

  • Publiez des informations dans les rubriques Amazon SNS.

  • Récupérez des informations sur les CloudWatch alarmes.

  • Lisez et mettez à jour Elastic Load Balancing.

    Note

    Si vous créez votre groupe Auto Scaling avec un modèle de lancement, vous devez ajouter les autorisations suivantes :

    • ec2:RunInstances

    • ec2:CreateTags

    • iam:PassRole

    Pour plus d'informationsÉtape 2 : créer un rôle de service, consultez les sections Création d'un modèle de lancement pour un groupe Auto Scaling et prise en charge des modèles de lancement dans le guide de l'utilisateur Amazon EC2 Auto Scaling.

Pour les déploiements Amazon ECS, si vous souhaitez un accès complet aux services de support, joignez la AWSCodeDeployRoleForECS politique. Elle fournit les autorisations requises pour que votre rôle de service puisse :

  • Lisez, mettez à jour et supprimez des ensembles de tâches Amazon ECS.

  • Mettez à jour les groupes cibles, les auditeurs et les règles d'Elastic Load Balancing.

  • Appeler les fonctions AWS Lambda.

  • Accédez aux fichiers de révision dans les compartiments Amazon S3.

  • Récupérez des informations sur les CloudWatch alarmes.

  • Publiez des informations dans les rubriques Amazon SNS.

Pour les déploiements Amazon ECS, si vous souhaitez un accès limité aux services de support, joignez la AWSCodeDeployRoleForECSLimited politique. Elle fournit les autorisations requises pour que votre rôle de service puisse :

  • Lisez, mettez à jour et supprimez des ensembles de tâches Amazon ECS.

  • Récupérez des informations sur les CloudWatch alarmes.

  • Publiez des informations dans les rubriques Amazon SNS.

Pour les déploiements AWS Lambda, si vous souhaitez autoriser la publication sur Amazon SNS, joignez la politique. AWSCodeDeployRoleForLambda Elle fournit les autorisations requises pour que votre rôle de service puisse :

  • Lire, mettre à jour et appeler les fonctions AWS Lambda et les alias.

  • Accédez aux fichiers de révision dans les compartiments Amazon S3.

  • Récupérez des informations sur les CloudWatch alarmes.

  • Publiez des informations dans les rubriques Amazon SNS.

Pour les déploiements AWS Lambda, si vous souhaitez limiter l'accès à Amazon SNS, joignez la politique. AWSCodeDeployRoleForLambdaLimited Elle fournit les autorisations requises pour que votre rôle de service puisse :

  • Lire, mettre à jour et appeler les fonctions AWS Lambda et les alias.

  • Accédez aux fichiers de révision dans les compartiments Amazon S3.

  • Récupérez des informations sur les CloudWatch alarmes.

Dans le cadre de la configuration du rôle de service, vous mettez à jour également sa relation d'approbation pour spécifier les points de terminaison auxquels vous souhaitez lui accorder l'accès.

Vous pouvez créer un rôle de service à l'aide de la console IAMAWS CLI, des API ou des API IAM.

Création d'un rôle de service (console)

  1. Connectez-vous à l’outil AWS Management Console, puis ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le volet de navigation, sélectionnez Rôles, puis Créer un rôle.

  3. Choisissez le AWSservice, puis sous Cas d'utilisation, dans la liste déroulante, sélectionnez CodeDeploy.

  4. Choisissez votre cas d'utilisation :

    • Pour les déploiements EC2/sur site, choisissez. CodeDeploy

    • Pour les déploiements AWS Lambda, choisissez Lambda. CodeDeploy

    • Pour les déploiements Amazon ECS, choisissez CodeDeploy - ECS.

  5. Choisissez Suivant.

  6. Sur la page Ajouter des autorisations, la politique d'autorisation appropriée pour le cas d'utilisation est affichée. Choisissez Suivant.

  7. Sur la page Nom, révision et création, dans Nom du rôle, entrez le nom du rôle de service (par exemple,CodeDeployServiceRole), puis choisissez Créer un rôle.

    Vous pouvez également saisir une description de ce rôle de service dans Description du rôle.

  8. Si vous souhaitez que ce rôle de service ait l'autorisation d'accéder à tous les points de terminaison actuellement pris en charge, vous avez terminé cette procédure.

    Pour empêcher ce rôle de service d'accéder à certains points de terminaison, poursuivez les étapes restantes de cette procédure.

  9. Dans la liste des rôles, recherchez et choisissez le rôle que vous venez de créer (CodeDeployServiceRole).

  10. Choisissez l'onglet Trust relationships.

  11. Choisissez Edit trust policy (Modifier la politique).

    Vous devriez voir la stratégie suivante, qui fournit au rôle de service l'autorisation d'accéder à tous les points de terminaison pris en charge :

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

    Pour accorder au rôle de service l'accès à certains points de terminaison pris en charge uniquement, remplacez le contenu de la zone de texte de la politique de confiance par la politique suivante. Supprimez les lignes correspondant aux points de terminaison auxquels vous souhaitez empêcher l'accès, puis choisissez Mettre à jour la politique.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.us-east-1.amazonaws.com", "codedeploy.us-east-2.amazonaws.com", "codedeploy.us-west-1.amazonaws.com", "codedeploy.us-west-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.ap-east-1.amazonaws.com", "codedeploy.ap-northeast-1.amazonaws.com", "codedeploy.ap-northeast-2.amazonaws.com", "codedeploy.ap-northeast-3.amazonaws.com", "codedeploy.ap-southeast-1.amazonaws.com", "codedeploy.ap-southeast-2.amazonaws.com", "codedeploy.ap-southeast-3.amazonaws.com", "codedeploy.ap-southeast-4.amazonaws.com", "codedeploy.ap-south-1.amazonaws.com", "codedeploy.ap-south-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.eu-west-1.amazonaws.com", "codedeploy.eu-west-2.amazonaws.com", "codedeploy.eu-west-3.amazonaws.com", "codedeploy.eu-central-1.amazonaws.com", "codedeploy.eu-central-2.amazonaws.com", "codedeploy.eu-north-1.amazonaws.com", "codedeploy.eu-south-1.amazonaws.com", "codedeploy.eu-south-2.amazonaws.com", "codedeploy.il-central-1.amazonaws.com", "codedeploy.me-central-1.amazonaws.com", "codedeploy.me-south-1.amazonaws.com", "codedeploy.sa-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Pour plus d'informations sur la création de rôles de service, consultez la section Création d'un rôle pour déléguer des autorisations à un AWS service dans le Guide de l'utilisateur IAM.

Création d'un rôle de service (CLI)

  1. Sur votre machine de développement, créez un fichier texte nommé, par exemple, CodeDeployDemo-Trust.json. Ce fichier est utilisé pour permettre à CodeDeploy de travailler en votre nom.

    Effectuez l'une des actions suivantes :

    • Pour accorder l'accès à toutes les AWS régions prises en charge, enregistrez le contenu suivant dans le fichier :

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    • Pour accorder l'accès à certaines régions prises en charge seulement, tapez le contenu suivant dans le fichier et supprimez les lignes pour les régions auxquelles vous souhaitez exclure l'accès :

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.us-east-1.amazonaws.com", "codedeploy.us-east-2.amazonaws.com", "codedeploy.us-west-1.amazonaws.com", "codedeploy.us-west-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.ap-east-1.amazonaws.com", "codedeploy.ap-northeast-1.amazonaws.com", "codedeploy.ap-northeast-2.amazonaws.com", "codedeploy.ap-northeast-3.amazonaws.com", "codedeploy.ap-southeast-1.amazonaws.com", "codedeploy.ap-southeast-2.amazonaws.com", "codedeploy.ap-southeast-3.amazonaws.com", "codedeploy.ap-southeast-4.amazonaws.com", "codedeploy.ap-south-1.amazonaws.com", "codedeploy.ap-south-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.eu-west-1.amazonaws.com", "codedeploy.eu-west-2.amazonaws.com", "codedeploy.eu-west-3.amazonaws.com", "codedeploy.eu-central-1.amazonaws.com", "codedeploy.eu-central-2.amazonaws.com", "codedeploy.eu-north-1.amazonaws.com", "codedeploy.eu-south-1.amazonaws.com", "codedeploy.eu-south-2.amazonaws.com", "codedeploy.il-central-1.amazonaws.com", "codedeploy.me-central-1.amazonaws.com", "codedeploy.me-south-1.amazonaws.com", "codedeploy.sa-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
      Note

      N'utilisez pas de virgule après le dernier point de terminaison de la liste.

  2. Dans le même répertoire, appelez la commande create-role pour créer un rôle de service nommé CodeDeployServiceRole sur la base des informations figurant dans le fichier texte que vous venez de créer :

    aws iam create-role --role-name CodeDeployServiceRole --assume-role-policy-document file://CodeDeployDemo-Trust.json
    Important

    N'oubliez pas d'inclure file:// devant le nom du fichier. Il est nécessaire dans cette commande.

    Dans la sortie de la commande, notez la valeur de l'entrée Arn sous l'objet Role. Vous en aurez besoin plus tard pour créer des groupes de déploiement. Si vous oubliez cette valeur, suivez les instructions fournies dans la section Obtenez l'ARN du rôle de service (CLI) .

  3. La politique gérée que vous utilisez dépend de la plateforme de calcul.

    • Si votre déploiement concerne une plate-forme informatique EC2/sur site :

      Appelez la attach-role-policy commande pour donner au rôle de service nommé CodeDeployServiceRole les autorisations en fonction de la politique gérée IAM nomméeAWSCodeDeployRole. Par exemple :

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole
    • Si votre déploiement concerne une plate-forme de calcul AWS Lambda :

      Appelez la attach-role-policy commande pour donner au rôle de service nommé CodeDeployServiceRole les autorisations en fonction de la politique gérée par IAM nommée AWSCodeDeployRoleForLambda ouAWSCodeDeployRoleForLambdaLimited. Par exemple :

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRoleForLambda
    • Si votre déploiement est effectué sur une plateforme de calcul Amazon ECS :

      Appelez la attach-role-policy commande pour donner au rôle de service nommé CodeDeployServiceRole les autorisations en fonction de la politique gérée par IAM nommée AWSCodeDeployRoleForECS ouAWSCodeDeployRoleForECSLimited. Par exemple :

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECS

Pour plus d'informations sur la création de rôles de service, consultez la section Création d'un rôle pour un AWS service dans le Guide de l'utilisateur IAM.

Obtenir l'ARN du rôle de service (console)

Pour utiliser la console IAM afin d'obtenir l'ARN du rôle de service :

  1. Connectez-vous à l’outil AWS Management Console, puis ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le panneau de navigation, sélectionnez Rôles.

  3. Dans la zone de texte Filtre, entrez CodeDeployServiceRole, puis appuyez sur Entrée.

  4. Choisissez CodeDeployServiceRole.

  5. Notez la valeur du champ Role ARN.

Obtenez l'ARN du rôle de service (CLI)

Pour utiliser l'interface AWS CLI afin d'obtenir le nom ARN du rôle de service, appelez la commande get-role sur le rôle de service nommé CodeDeployServiceRole :

aws iam get-role --role-name CodeDeployServiceRole --query "Role.Arn" --output text

La valeur retournée correspond au nom ARN du rôle de service.