Automatisez le déploiement du portefeuille et des produits AWS Service Catalog à l'aide d'AWS CDK - Recommandations AWS

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.

Automatisez le déploiement du portefeuille et des produits AWS Service Catalog à l'aide d'AWS CDK

Créée par Sandeep Gawande (AWS), RAJNEESH TYAGI (AWS) et Viyoma Sachdeva (AWS)

Référentiel de code : aws-cdk-servicecatalog-automation

Environnement : PoC ou pilote

Technologies : infrastructure DevOps, gestion et gouvernance

Charge de travail : Open source

Services AWS : AWS Service Catalog ; AWS CDK

Récapitulatif

AWS Service Catalog vous permet de gérer de manière centralisée les catalogues de services ou de produits informatiques dont l'utilisation est approuvée dans l'environnement AWS de votre organisation. Un ensemble de produits est appelé portefeuille, et un portefeuille contient également des informations de configuration. Avec AWS Service Catalog, vous pouvez créer un portefeuille personnalisé pour chaque type d'utilisateur de votre organisation, puis accorder l'accès au portefeuille approprié. Ces utilisateurs peuvent ensuite déployer rapidement tous les produits dont ils ont besoin au sein du portefeuille.

Si vous disposez d'une infrastructure réseau complexe, telle que des architectures multirégions et multicomptes, il est recommandé de créer et de gérer les portefeuilles Service Catalog dans un seul compte central. Ce modèle décrit comment utiliser AWS Cloud Development Kit (AWS CDK) pour automatiser la création de portefeuilles Service Catalog dans un compte central, autoriser les utilisateurs finaux à y accéder, puis, éventuellement, fournir des produits sur un ou plusieurs comptes AWS cibles. Cette ready-to-use solution crée les portefeuilles Service Catalog dans le compte source. Il fournit également, en option, des produits dans des comptes cibles à l'aide d'AWS CloudFormation Stacks et vous aide à configurer TagOptions les produits :

  • AWS CloudFormation StackSets — Vous pouvez les utiliser StackSets pour lancer des produits Service Catalog dans plusieurs régions et comptes AWS. Dans cette solution, vous avez la possibilité de provisionner automatiquement les produits lorsque vous déployez cette solution. Pour plus d'informations, consultez Using AWS CloudFormation StackSets (documentation Service Catalog) et StackSets concepts (CloudFormation documentation).

  • TagOption bibliothèque — Vous pouvez gérer les balises des produits approvisionnés à l'aide de la TagOption bibliothèque. A TagOptionest une paire clé-valeur gérée dans AWS Service Catalog. Il ne s'agit pas d'une balise AWS, mais elle sert de modèle pour créer une balise AWS basée sur le TagOption. Pour plus d'informations, consultez TagOption la bibliothèque (documentation Service Catalog).

Conditions préalables et limitations

Prérequis

  • Un compte AWS actif que vous souhaitez utiliser comme compte source pour administrer les portefeuilles Service Catalog.

  • Si vous utilisez cette solution pour approvisionner des produits sur un ou plusieurs comptes cibles, le compte cible doit déjà exister et être actif.

  • Autorisations AWS Identity and Access Management (IAM) pour accéder à AWS Service Catalog CloudFormation, AWS et AWS IAM.

Versions du produit

  • Version 2.27.0 du kit de développement logiciel AWS

Architecture

Pile technologique cible

  • Portefeuilles Service Catalog dans un compte AWS centralisé

  • Produits Service Catalog déployés sur le compte cible

Architecture cible

AWS CDK crée des portefeuilles Service Catalog et fournit des produits sur le compte cible.
  1. Dans le compte portfolio (ou source), vous mettez à jour le fichier config.json avec le compte AWS, la région AWS, le rôle IAM, le portefeuille et les informations sur le produit correspondant à votre cas d'utilisation.

  2. Vous déployez l'application AWS CDK.

  3. L'application AWS CDK assume le rôle IAM de déploiement et crée les portefeuilles et les produits Service Catalog définis dans le fichier config.json.

    Si vous avez configuré StackSets pour déployer des produits dans un compte cible, le processus se poursuit. Si vous n'avez pas configuré StackSets pour approvisionner des produits, le processus est terminé.

  4. L'application AWS CDK assume le rôle d'StackSet administrateur et déploie le CloudFormation stack set AWS que vous avez défini dans le fichier config.json.

  5. Dans le compte cible, StackSets assume le rôle StackSet d'exécution et approvisionne les produits.

Outils

Services AWS

  • AWS Cloud Development Kit (AWS CDK) est un framework de développement logiciel qui vous aide à définir et à provisionner l'infrastructure du cloud AWS sous forme de code.

  • AWS CDK Toolkit est un kit de développement cloud en ligne de commande qui vous permet d'interagir avec votre application AWS CDK.

  • AWS vous CloudFormation aide à configurer les ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie sur l'ensemble des comptes et des régions AWS.

  • AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.

  • AWS Service Catalog vous permet de gérer de manière centralisée les catalogues de services informatiques approuvés pour AWS. Les utilisateurs finaux peuvent déployer rapidement uniquement les services informatiques approuvés dont ils ont besoin, en respectant les contraintes définies par votre organisation.

Référentiel de code

Le code de ce modèle est disponible sur GitHub, dans le aws-cdk-servicecatalog-automationréférentiel. Le référentiel de code contient les fichiers et dossiers suivants :

  • cdk-sevicecatalog-app— Ce dossier contient l'application AWS CDK pour cette solution.

  • config — Ce dossier contient le fichier config.json et le CloudFormation modèle de déploiement des produits du portefeuille Service Catalog.

  • config/config.json — Ce fichier contient toutes les informations de configuration. Vous mettez à jour ce fichier pour personnaliser cette solution en fonction de votre cas d'utilisation.

  • config/templates — Ce dossier contient les CloudFormation modèles pour les produits Service Center.

  • setup.sh — Ce script déploie la solution.

  • uninstall.sh — Ce script supprime la pile et toutes les ressources AWS créées lors du déploiement de cette solution.

Pour utiliser l'exemple de code, suivez les instructions de la section Epics.

Bonnes pratiques

Épopées

TâcheDescriptionCompétences requises

Installez le kit d'outils AWS CDK.

Assurez-vous qu'AWS CDK Toolkit est installé. Entrez la commande suivante pour vérifier s'il est installé et vérifier la version. 

cdk --version

Si AWS CDK Toolkit n'est pas installé, entrez la commande suivante pour l'installer.

npm install -g aws-cdk@2.27.0

Si la version d'AWS CDK Toolkit est antérieure à la version 2.27.0, entrez la commande suivante pour la mettre à jour vers la version 2.27.0.

npm install -g aws-cdk@2.27.0 --force
AWS DevOps, DevOps ingénieur

Pour cloner le référentiel.

Entrez la commande suivante. Dans Cloner le référentiel, dans la section Informations supplémentaires, vous pouvez copier la commande complète contenant l'URL du référentiel. Cela clone le aws-cdk-servicecatalog-automationdépôt à partir de. GitHub

git clone <repository-URL>.git

Cela crée un cd aws-cdk-servicecatalog-automation dossier dans le répertoire cible. Entrez la commande suivante pour accéder à ce dossier.

cd aws-cdk-servicecatalog-automation
AWS DevOps, DevOps ingénieur

Configurez les informations d'identification AWS.

Entrez les commandes suivantes : Ils exportent les variables suivantes, qui définissent le compte AWS et la région dans lesquels vous déployez la pile.

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number>
export CDK_DEFAULT_REGION=<AWS Region>

Les informations d'identification AWS pour AWS CDK sont fournies par le biais de variables d'environnement.

AWS DevOps, DevOps ingénieur

Configurez les autorisations pour les rôles IAM des utilisateurs finaux.

Si vous comptez utiliser des rôles IAM pour accorder l'accès au portefeuille et aux produits qu'il contient, les rôles doivent disposer d'autorisations pour être assumés par le principal du service servicecatalog.amazonaws.com. Pour savoir comment accorder ces autorisations, consultez Enabling trusted access with Service Catalog (documentation AWS Organizations).

AWS DevOps, DevOps ingénieur

Configurez les rôles IAM requis par StackSets.

Si vous avez l'habitude StackSets de provisionner automatiquement des produits dans des comptes cibles, vous devez configurer les rôles IAM qui administrent et exécutent le stack set.

  1. Dans le compte source, vérifiez s'il existe AWSCloudFormationStackSetAdministrationRole déjà. Dans les comptes cibles, vérifiez s'ils existent AWSCloudFormationStackSetExecutionRole déjà. Si ces rôles existent déjà, vous pouvez passer à l'épopée suivante.

  2. Suivez les instructions de la section Autorisations autogérées de Grant (documentation IAM) pour créer le rôle d'administration du stack set dans le compte de portefeuille et créer le rôle d'exécution dans chaque compte cible.

AWS DevOps, DevOps ingénieur
TâcheDescriptionCompétences requises

Créez les CloudFormation modèles.

Dans le config/templates dossier, créez des CloudFormation modèles pour tous les produits que vous souhaitez inclure dans vos portefeuilles. Pour plus d'informations, consultez la section Utilisation des CloudFormation modèles AWS (CloudFormation documentation).

Développeur d'applications, AWS DevOps, DevOps ingénieur

Personnalisez le fichier de configuration.

Dans le config dossier, ouvrez le fichier config.json et définissez les paramètres adaptés à votre cas d'utilisation. Les paramètres suivants sont obligatoires, sauf indication contraire :

  • Dans portfolios cette section, définissez les paramètres suivants pour créer un ou plusieurs portefeuilles Service Catalog :

    • portfolioName— Le nom du portefeuille.

    • providerName— Le nom de la personne, de l'équipe ou de l'organisation qui gère le portefeuille.

    • description— Une brève description du portefeuille.

    • roles— (Facultatif) Noms de tous les rôles IAM qui devraient avoir accès à ce portefeuille. Les utilisateurs dotés de ce rôle peuvent accéder aux produits de ce portefeuille.

    • users— (Facultatif) Noms de tous les utilisateurs IAM qui devraient avoir accès à ce portefeuille et à ses produits.

    • groups— (Facultatif) Noms de tous les groupes d'utilisateurs IAM qui devraient avoir accès à ce portefeuille et à ses produits.

    Avertissement : les utilisateurs IAM disposent d'informations d'identification à long terme, ce qui présente un risque de sécurité. Pour atténuer ce risque, nous vous recommandons de n'octroyer à ces utilisateurs que les autorisations dont ils ont besoin pour effectuer la tâche et de supprimer ces utilisateurs lorsqu'ils ne sont plus nécessaires.

    Important : rolesusers, et groups sont tous des paramètres facultatifs, mais si vous ne définissez aucun de ces paramètres, personne ne pourra consulter le portefeuille de produits dans la console Service Catalog. Définissez au moins l'un de ces paramètres. Pour plus d'informations, consultez la section Accorder des autorisations aux utilisateurs finaux de Service Catalog (documentation Service Catalog).

  • (Facultatif) Dans la tagOption section, définissez TagOptions pour les produits :

    • key— Nom de la TagOption clé

    • value— Valeurs de chaîne autorisées pour TagOption

    Pour plus d'informations, consultez TagOption la bibliothèque (documentation Service Catalog).

  • Dans la productssection, définissez les paramètres suivants pour les produits :

    • portfolioName— Le nom du portefeuille dans lequel vous souhaitez ajouter le produit. Vous ne pouvez spécifier qu'un seul portefeuille.

    • productName— Le nom du produit.

    • owner— Le propriétaire du produit.

    • productVersionName— Le nom de la version du produit sous forme de chaîne, par exemplev1.

    • templatePath— Le chemin du fichier pour le CloudFormation modèle du produit.

    • deployWithStackSets— (Facultatif) Spécifiez un ou plusieurs comptes et régions que vous souhaitez utiliser StackSets pour approvisionner automatiquement les produits des portefeuilles. Si vous utilisez cette option de déploiement, tous les paramètres suivants de cette section sont obligatoires :

      • accounts— Les comptes cibles.

      • regions— Les régions cibles.

      • stackSetAdministrationRoleName— Le nom du rôle IAM utilisé pour administrer la StackSets configuration. Ne modifiez pas cette valeur. Ce rôle doit porter ce nom exact.

      • stackSetExecutionRoleName— Le nom du rôle IAM dans le compte cible qui déploie les instances de stack. Ne modifiez pas cette valeur. Ce rôle doit porter ce nom exact.

Pour un exemple de fichier de configuration terminé, voir Exemple de fichier de configuration dans la section Informations supplémentaires.

Développeur d'applications, DevOps ingénieur, AWS DevOps

Déployez la solution.

Entrez la commande suivante. Cela permet de déployer l'application AWS CDK et de provisionner les portefeuilles et les produits Service Catalog comme indiqué dans le fichier config.json.

sh +x setup.sh
Développeur d'applications, DevOps ingénieur, AWS DevOps

Vérifier le déploiement.

Vérifiez la réussite du déploiement en procédant comme suit :

  1. Connectez-vous à l'AWS Management Console avec des informations d'identification qui peuvent accéder à un ou plusieurs des portefeuilles que vous avez définis dans le fichier de configuration.

  2. Ouvrez la console Service Catalog à l'adresse https://console.aws.amazon.com/servicecatalog/

  3. Dans le volet de navigation, sous Provisioning, sélectionnez Products. Vérifiez que la liste des produits que vous avez spécifiés pour le portefeuille s'affiche.

  4. Suivez les instructions de la section Lancer un produit (documentation du Service Catalog) pour lancer l'un des produits disponibles. Vérifiez que les versions de produit et les balises disponibles correspondent aux valeurs que vous avez fournies dans le fichier de configuration.

  5. Si vous avez choisi de provisionner automatiquement les produits sur un ou plusieurs comptes cibles en utilisant StackSets, procédez comme suit :

    1. Connectez-vous avec des informations d'identification qui vous donnent l'autorisation de consulter les produits fournis sur l'un des comptes cibles.

    2. Dans la console Service Catalog, dans le volet de navigation, sous Provisioning, choisissez Provisioned products.

    3. Vérifiez que les produits attendus apparaissent dans la liste.

AWS général

(Facultatif) Mettez à jour les portefeuilles et les produits.

Si vous souhaitez utiliser cette solution pour mettre à jour les portefeuilles ou les produits ou pour fournir de nouveaux produits :

  1. Apportez les modifications requises dans le fichier config.json.

  2. Ajoutez ou modifiez les CloudFormation modèles nécessaires dans le config/template dossier.

  3. Redéployez la solution.

Par exemple, vous pouvez ajouter des portefeuilles supplémentaires ou allouer davantage de ressources. L'application AWS CDK implémente uniquement les modifications. Si aucune modification n'est apportée aux portefeuilles ou aux produits précédemment déployés, le redéploiement ne les affectera pas.

Développeur d'applications, DevOps ingénieur, AWS général
TâcheDescriptionCompétences requises

(Facultatif) Supprimez les ressources AWS déployées par cette solution.

Si vous souhaitez supprimer un produit approvisionné, suivez les instructions de la section Supprimer des produits approvisionnés (documentation Service Catalog).

Si vous souhaitez supprimer toutes les ressources créées par cette solution, entrez la commande suivante.

sh uninstall.sh
AWS DevOps, DevOps ingénieur, développeur d'applications

Ressources connexes

Informations supplémentaires

Informations supplémentaires

Cloner le référentiel

Entrez la commande suivante pour cloner le référentiel GitHub.

git clone https://github.com/aws-samples/aws-cdk-servicecatalog-automation.git

Exemple de fichier de configuration

Voici un exemple de fichier config.json avec des exemples de valeurs.

{ "portfolios": [ { "displayName": "EC2 Product Portfolio", "providerName": "User1", "description": "Test1", "roles": [ "<Names of IAM roles that can access the products>" ], "users": [ "<Names of IAM users who can access the products>" ], "groups": [ "<Names of IAM user groups that can access the products>" ] }, { "displayName": "Autoscaling Product Portfolio", "providerName": "User2", "description": "Test2", "roles": [ "<Name of IAM role>" ] } ], "tagOption": [ { "key": "Group", "value": [ "finance", "engineering", "marketing", "research" ] }, { "key": "CostCenter", "value": [ "01", "02", "03", "04" ] }, { "key": "Environment", "value": [ "dev", "prod", "stage" ] } ], "products": [ { "portfolioName": "EC2 Product Profile", "productName": "Ec2", "owner": "owner1", "productVersionName": "v1", "templatePath": "../../config/templates/template1.json" }, { "portfolioName": "Autoscaling Product Profile", "productName": "autoscaling", "owner": "owner1", "productVersionName": "v1", "templatePath": "../../config/templates/template2.json", "deployWithStackSets": { "accounts": [ "012345678901", ], "regions": [ "us-west-2" ], "stackSetAdministrationRoleName": "AWSCloudFormationStackSetAdministrationRole", "stackSetExecutionRoleName": "AWSCloudFormationStackSetExecutionRole" } } ] }