Créer des CloudFormation StackSets avec des autorisations gérées par le service - AWS CloudFormation

Créer des CloudFormation StackSets avec des autorisations gérées par le service

Avec les autorisations gérées par le service, vous pouvez déployer des piles sur des comptes gérés par AWS Organizations dans des régions spécifiques. Avec ce modèle, vous n’avez pas besoin de créer des rôles IAM dans chaque compte cible et chaque Région AWS. CloudFormation crée les rôles IAM en votre nom. Pour de plus amples informations, consultez Activer l’accès approuvé.

Considérations

Avant de créer un StackSet avec des autorisations gérées par le service, tenez compte des points suivants :

  • Les StackSets avec autorisations gérées par le service peuvent être lancés par le compte de gestion de votre organisation ou par des comptes d’administrateur délégués, mais toutes les opérations sont effectuées par le compte de gestion.

  • CloudFormation ne déploie pas de piles sur le compte de gestion, même si ce compte fait partie de votre organisation ou appartient à une unité organisationnelle (UO).

  • Votre StackSet peut cibler l’ensemble de votre organisation (y compris tous les comptes) ou des UO spécifiques. Lorsqu’un StackSet cible une unité organisationnelle parent, il inclut automatiquement toutes les unités organisationnelles enfants. Par défaut, lorsqu’un StackSet cible des unités organisationnelles spécifiques, il inclut tous les comptes de ces unités organisationnelles. Cependant, vous pouvez cibler des comptes spécifiques à l’aide des options de filtrage des comptes.

  • Plusieurs StackSets peuvent cibler la même organisation ou UO.

  • Vous ne pouvez pas cibler des comptes en dehors de votre organisation.

  • Votre autorisation à déployer des StackSets dépend des autorisations attribuées au principal IAM (utilisateur, rôle ou groupe) que vous utilisez pour vous connecter au compte de gestion. Pour obtenir un exemple de politique IAM qui accorde des autorisations de déploiement dans une organisation, veuillez consulter Restriction des opérations sur les ensembles de piles en fonction de la région et des types de ressources.

  • Les administrateurs délégués disposent de toutes les autorisations nécessaires pour effectuer des déploiements sur n’importe quel compte de votre organisation. Le compte de gestion ne peut pas limiter les autorisations des administrateurs délégués à des opérations StackSet ou à des UO spécifiques.

  • Les paramètres de déploiement automatique s’appliquent au niveau du StackSet. Vous ne pouvez pas ajuster les déploiements automatiques de manière sélective pour les UO, les comptes ou les régions.

  • Les StackSets qui utilisent des autorisations gérées par le service ne prennent pas en charge les piles imbriquées ou les modèles contenant des macros ou des transformateurs.

Créer un StackSet avec des autorisations gérées par le service (console)

Pour créer un StackSet
  1. Connectez-vous à la AWS Management Console et ouvrez la console CloudFormation à l’adresse https://console.aws.amazon.com/cloudformation.

  2. Dans la barre de navigation en haut de l’écran, sélectionnez la Région AWS à partir de laquelle vous souhaitez gérer StackSet.

  3. Choisissez StackSets dans le volet de navigation.

  4. En haut de la page StackSets, choisissez Créer un StackSet.

  5. Sous Autorisations, choisissez Autorisations gérées par le service.

    Note

    Si l'accès approuvé avec AWS Organizations est désactivé, une bannière s'affiche. Un accès sécurisé est requis pour créer ou mettre à jour un StackSet avec des autorisations gérées par le service. Seul l'administrateur du compte de gestion de l'organisation dispose des autorisations nécessaires pour Activer l’accès approuvé pour les StackSets avec AWS Organizations.

  6. Sous Prérequis – Préparer le modèle, sélectionnez Le modèle est prêt.

  7. Sous Spécifier le modèle, choisissez soit de spécifier l'URL du compartiment S3 qui contient votre modèle de pile, soit de charger un fichier de modèle de pile. Ensuite, choisissez Suivant.

  8. Dans la page de Spécifier les détails de StackSet, indiquez un nom pour le StackSet, spécifiez les paramètres, puis choisissez Suivant.

  9. Dans la page Configurer les options StackSet, sous Balises, spécifiez les balises à appliquer aux ressources de votre pile. Pour plus d’informations sur l’utilisation des balises dans AWS, consultez Organisation et suivi des coûts à l’aide des balises de répartition des coûts AWS dans le Guide de l’utilisateur AWS Billing and Cost Management.

  10. Pour la configuration de l’exécution, choisissez Active pour activer la gestion optimisée des opérations par CloudFormation :

    • Les opérations non conflictuelles s’exécutent simultanément pour accélérer les temps de déploiement.

    • Les opérations en conflit sont automatiquement mises en file d’attente et traitées dans l’ordre dans lequel elles ont été demandées.

    Pendant que les opérations sont en cours d’exécution ou en attente, CloudFormation met en file d’attente toutes les opérations entrantes, même si elles ne sont pas conflictuelles. Vous ne pouvez pas modifier les paramètres d’exécution pendant cette période.

  11. Si votre modèle contient des ressources IAM, dans la section Capacités, choisissez Je sais que ce modèle peut créer des ressources IAM pour indiquer que vous autorisez l’utilisation de ressources IAM dans le modèle. Pour de plus amples informations, consultez Confirmation des ressources IAM dans les modèles CloudFormation.

  12. Choisissez Suivant pour continuer et activer l'accès sécurisé si cela n'a pas encore été fait.

  13. Sur la page Définir les options de déploiement, sous Cibles de déploiement, procédez de l’une des manières suivantes :

    • Pour déployer vers tous les comptes de votre organisation, choisissez Déployer vers l’organisation.

    • Pour déployer vers tous les comptes dans des UO spécifiques, choisissez Déployer vers les unités organisationnelles (UO). Choisissez Ajouter une UO, puis collez l'ID d'unité d'organisation cible dans la zone de texte. Répétez l'opération pour chaque nouvelle UO cible.

    Si vous avez sélectionné Déployer vers des unités organisationnelles (UO), pour Type de filtre de compte, vous pouvez définir vos cibles de déploiement comme des comptes individuels spécifiques en choisissant l’une des options suivantes et en fournissant des numéros de compte.

    • Aucun (par défaut) : déployez les piles vers tous les comptes des unités organisationnelles spécifiées.

    • Intersection : déployez les piles vers des comptes individuels spécifiques au sein des UO sélectionnées.

    • Différence : déployez les piles vers tous les comptes des UO sélectionnées, à l’exception de comptes spécifiques.

    • Union : déployez les piles vers les UO spécifiées ainsi que vers des comptes individuels supplémentaires.

  14. Sous Déploiement automatique, choisissez de déployer automatiquement vers les comptes qui seront ajoutés à l’organisation ou aux UO cibles à l’avenir. Pour de plus amples informations, consultez Activer ou désactiver les déploiements automatiques pour les StackSets dans AWS Organizations.

  15. Si vous avez activé le déploiement automatique, sous Comportement de suppression de compte, choisissez si les ressources de pile sont conservées ou supprimées lorsqu'un compte est supprimé d'une organisation cible ou d'une UO.

    Note

    Lorsque l’option Conserver les piles est sélectionnée, les piles sont supprimées de votre StackSet, mais les piles et leurs ressources associées sont conservées. Les ressources restent dans leur état actuel, mais ne feront plus partie du StackSet.

  16. Sous Spécifier les régions, choisissez les régions dans lesquelles vous voulez déployer des piles.

  17. Pour Options de déploiement, procédez comme suit :

    • Pour Nombre maximal de comptes simultanés, spécifiez le nombre de comptes traités simultanément.

    • Pour Tolérance aux défaillances, spécifiez le nombre maximum de défaillances de compte autorisées par région. L’opération s’arrêtera et ne se poursuivra pas dans d’autres régions une fois cette limite atteinte.

    • Pour la simultanéité des régions, choisissez comment traiter les régions : séquentiellement (une région à la fois) ou en parallèle (plusieurs régions simultanément).

    • Pour le mode simultané, choisissez le comportement de la simultanéité lors de l’exécution de l’opération.

      • Tolérance stricte aux pannes : réduit le niveau de concurrence des comptes en cas de panne, en restant dans les limites de la tolérance aux pannes +1.

      • Tolérance aux pannes légères : maintient le niveau de concurrence spécifié (la valeur du nombre maximal de comptes simultanés) indépendamment des pannes.

  18. Choisissez Next (Suivant) pour continuer.

  19. Sur la page Révision, vérifiez que votre StackSet sera déployé sur les comptes appropriés dans les régions appropriées, puis sélectionnez Créer un StackSet.

    La page de Détails du StackSet s'ouvre. Vous pouvez afficher la progression et l’état de la création des piles dans votre StackSet.

Créer un StackSet avec des autorisations gérées par le service (AWS CLI)

Suivez les étapes de cette section pour utiliser la AWS CLI afin de :

  • Créez le conteneur StackSet.

  • Déployez des instances de pile.

Note

Lorsque vous agissez en tant qu’administrateur délégué, vous devez inclure --call-as DELEGATED_ADMIN dans la commande.

Deploy to your organization
Pour créer un StackSet
  1. Utilisez la commande create-stack-set pour créer un nouveau StackSet nommé my-stackset. L’exemple suivant utilise un modèle stocké dans un compartiment S3, active les déploiements automatiques et conserve les piles lorsque les comptes sont supprimés. Pour de plus amples informations, consultez Activer ou désactiver les déploiements automatiques pour les StackSets dans AWS Organizations.

    aws cloudformation create-stack-set \ --stack-set-name my-stackset \ --template-url https://s3.region-code.amazonaws.com/amzn-s3-demo-bucket/MyApp.template \ --permission-model SERVICE_MANAGED \ --auto-deployment Enabled=true,RetainStacksOnAccountRemoval=true
  2. Utilisez la commande list-stack-sets pour confirmer que votre StackSet a été créé. Votre nouveau StackSet apparaît dans les résultats.

    aws cloudformation list-stack-sets
    • Si vous définissez l’option --call-as sur DELEGATED_ADMIN lorsque vous êtes connecté à votre compte membre, list-stack-sets renvoie tous les StackSets avec des autorisations gérées par le service dans le compte de gestion de l’organisation.

    • Si vous définissez l’option --call-as sur SELF lorsque vous êtes connecté à votre Compte AWS, list-stack-sets renvoie tous les StackSets autogérés de votre Compte AWS.

    • Si vous définissez l’option --call-as sur SELF lorsque vous êtes connecté au compte de gestion de l’organisation, list-stack-sets renvoie tous les StackSets du compte de gestion de l’organisation.

  3. Veuillez utiliser la commande create-stack-instances pour ajouter des piles à votre StackSet. Pour l’option --deployment-targets, spécifiez l’ID racine de l’organisation afin de déployer sur tous les comptes de votre organisation.

    Définissez le traitement simultané des comptes et les autres préférences de déploiement à l’aide de cette option --operation-preferences. Cet exemple utilise des paramètres basés sur le décompte. Notez que MaxConcurrentCount ne doit pas dépasser FailureToleranceCount + 1. Pour les paramètres basés sur des pourcentages, utilisez FailureTolerancePercentage ou MaxConcurrentPercentage à la place.

    aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=r-a1b2c3d4e5 \ --regions us-west-2 us-east-1 \ --operation-preferences MaxConcurrentCount=1,FailureToleranceCount=0

    Pour plus d’informations, consultez CreateStackInstances dans la Référence d’API AWS CloudFormation.

  4. À l’aide du operation-id renvoyé dans la sortie create-stack-instances, utilisez la commande describe-stack-set-operation suivante pour vérifier que vos piles ont été créées avec succès.

    aws cloudformation describe-stack-set-operation \ --stack-set-name my-stackset \ --operation-id operation_ID
Deploy to organizational units (OUs)
Pour créer un StackSet
  1. Utilisez la commande create-stack-set pour créer un nouveau StackSet nommé my-stackset. L’exemple suivant utilise un modèle stocké dans un compartiment S3 et inclut un paramètre qui définit un KeyPairName avec la valeur TestKey

    aws cloudformation create-stack-set \ --stack-set-name my-stackset \ --template-url https://s3.region-code.amazonaws.com/amzn-s3-demo-bucket/MyApp.template \ --permission-model SERVICE_MANAGED \ --parameters ParameterKey=KeyPairName,ParameterValue=TestKey
  2. Utilisez la commande list-stack-sets pour confirmer que votre StackSet a été créé. Votre nouveau StackSet apparaît dans les résultats.

    aws cloudformation list-stack-sets
    • Si vous définissez l’option --call-as sur DELEGATED_ADMIN lorsque vous êtes connecté à votre compte membre, list-stack-sets renvoie tous les StackSets avec des autorisations gérées par le service dans le compte de gestion de l’organisation.

    • Si vous définissez l’option --call-as sur SELF lorsque vous êtes connecté à votre Compte AWS, list-stack-sets renvoie tous les StackSets autogérés de votre Compte AWS.

    • Si vous définissez l’option --call-as sur SELF lorsque vous êtes connecté au compte de gestion de l’organisation, list-stack-sets renvoie tous les StackSets du compte de gestion de l’organisation.

  3. Veuillez utiliser la commande create-stack-instances pour ajouter des piles à votre StackSet. Pour l’option --deployment-targets, indiquez les ID d’unité organisationnelle (UO) sur lesquelles effectuer le déploiement.

    Définissez le traitement simultané des comptes et les autres préférences de déploiement à l’aide de cette option --operation-preferences. Cet exemple utilise des paramètres basés sur le décompte. Notez que MaxConcurrentCount ne doit pas dépasser FailureToleranceCount + 1. Pour les paramètres basés sur des pourcentages, utilisez FailureTolerancePercentage ou MaxConcurrentPercentage à la place.

    aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=ou-rcuk-1x5j1lwo,ou-rcuk-slr5lh0a \ --regions us-west-2 us-east-1 \ --operation-preferences MaxConcurrentCount=1,FailureToleranceCount=0

    Pour plus d’informations, consultez CreateStackInstances dans la Référence d’API AWS CloudFormation.

  4. À l’aide du operation-id renvoyé dans la sortie create-stack-instances, utilisez la commande describe-stack-set-operation suivante pour vérifier que vos piles ont été créées avec succès.

    aws cloudformation describe-stack-set-operation \ --stack-set-name my-stackset \ --operation-id operation_ID
Deploy to specific accounts in OUs

Vous pouvez cibler des unités organisationnelles (UO) spécifiques et utiliser le filtrage des comptes pour contrôler avec précision les comptes qui reçoivent les déploiements de piles. Par défaut, les piles sont déployées sur tous les comptes des UO spécifiées si aucun filtrage de compte n’est spécifié.

Dans l’AWS CLI, vous indiquez le filtrage des comptes à l’aide de l’option --deployment-targets. Pour plus d’informations, consultez DeploymentTargets.

Après avoir créé le conteneur StackSet à l’aide de la commande create-stack-set, utilisez l’un des exemples suivants pour déployer des piles sur des comptes spécifiques.

Cibler des comptes spécifiques dans une UO

L’exemple suivant déploie des piles uniquement sur les comptes A1 et A2 dans OU1.

aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=OU1,Accounts=A1,A2,AccountFilterType=INTERSECTION \ --regions us-west-2 us-east-1
Exclure des comptes d’une UO

L’exemple suivant déploie des piles sur tous les comptes de OU1, à l’exception des comptes A1 et A2.

aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=OU1,Accounts=A1,A2,AccountFilterType=DIFFERENCE \ --regions us-west-2 us-east-1