Automatisez le déploiement du portefeuille et des produits AWS Service Catalog en utilisant 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 en utilisant AWS CDK

Créé par Sandeep Gawande (AWS), (), et Viyoma Sachdeva RAJNEESH TYAGI (AWS) 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

AWSservices : AWS Service Catalog ; AWS CDK

Récapitulatif

AWSService Catalog vous permet de gérer de manière centralisée les catalogues de services informatiques, ou de produits, dont l'utilisation est approuvée dans l'AWSenvironnement de votre entreprise. Un ensemble de produits est appelé portefeuille, et un portefeuille contient également des informations de configuration. AWSService Catalog vous permet de créer un portefeuille personnalisé pour chaque type d'utilisateur de votre organisation, puis d'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 (AWSCDK) 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 AWS comptes cibles. Cette ready-to-use solution crée les portefeuilles Service Catalog dans le compte source. Il approvisionne également, en option, les produits dans des comptes cibles à l'aide de AWS CloudFormation piles et vous aide à configurer TagOptions les produits :

  • AWS CloudFormation StackSets— Vous pouvez les utiliser StackSets pour lancer des produits Service Catalog dans plusieurs AWS régions et comptes. 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'un AWS tag, mais il sert de modèle pour créer un AWS tag basé sur le TagOption. Pour plus d'informations, consultez TagOption la bibliothèque (documentation Service Catalog).

Conditions préalables et limitations

Prérequis

  • Un AWS compte 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.

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

Versions du produit

  • AWSCDKversion 2.27.0

Architecture

Pile technologique cible

  • Portefeuilles Service Catalog dans un AWS compte centralisé

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

Architecture cible

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

  2. Vous déployez l'AWSCDKapplication.

  3. L'AWSCDKapplication assume le IAM rôle 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'AWSCDKapplication assume le rôle StackSet d'administrateur et déploie le AWS CloudFormation stack set 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

AWSservices

  • AWSCloud Development Kit (AWSCDK) est un framework de développement logiciel qui vous aide à définir et à provisionner une infrastructure AWS cloud sous forme de code.

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

  • AWS CloudFormationvous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie, quels que soient les AWS comptes et les régions.

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

  • AWSService Catalog vous permet de gérer de manière centralisée les catalogues de services informatiques approuvés. 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'AWSCDKapplication correspondant à 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 AWS ressources 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 AWS CDK kit d'outils.

Assurez-vous que 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 du AWS CDK Toolkit est antérieure à 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 le URL pour le 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 AWS informations d'identification.

Entrez les commandes suivantes : Ils exportent les variables suivantes, qui définissent le AWS compte 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>

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

AWS DevOps, DevOps ingénieur

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

Si vous comptez utiliser IAM des rôles 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 obtenir des instructions sur la façon d'accorder ces autorisations, consultez la section Activation de l'accès sécurisé avec Service Catalog (documentation AWS des organisations).

AWS DevOps, DevOps ingénieur

Configurez IAM les rôles requis par StackSets.

Si vous avez l'habitude StackSets de provisionner automatiquement des produits dans des comptes cibles, vous devez configurer les IAM rôles 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 (IAMdocumentation) 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 AWS CloudFormation modèles (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 IAM les rôles 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 IAM les utilisateurs qui devraient avoir accès à ce portefeuille et à ses produits.

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

    Avertissement : IAM les utilisateurs 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 ne fournir à 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 IAM rôle utilisé pour administrer la StackSets configuration. Ne modifiez pas cette valeur. Ce rôle doit porter ce nom exact.

      • stackSetExecutionRoleName— Nom du IAM rôle 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'AWSCDKapplication 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 à la console de AWS gestion 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 du 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.

Général AWS

(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'AWSCDKapplication 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, général AWS
TâcheDescriptionCompétences requises

(Facultatif) Supprimez les AWS ressources 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" } } ] }