Utilisation d'extensions privées dans CloudFormation - AWS CloudFormation

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.

Utilisation d'extensions privées dans CloudFormation

Les extensions privées sont les extensions que vous avez explicitement autorisées pour qu'elles soient utilisées dans votre Compte AWS.

Il existe deux types d'extensions privées :

  • Extensions privées activées : il s'agit des copies locales des extensions tierces que vous avez activées pour votre compte et votre région. Lorsque vous activez une extension publique tierce, CloudFormation crée une copie locale de cette extension dans le registre de votre compte.

  • Extensions privées enregistrées — Peut également activer des extensions privées qui ne figurent pas dans le CloudFormation registre public. Il peut s'agir d'extensions que vous avez créées vous-même ou d'extensions partagées avec vous par votre organisation ou un autre tiers. Pour utiliser une extension privée dans votre compte, vous devez d'abord l'enregistrer. L'enregistrement de l'extension en télécharge une copie dans le CloudFormation registre de votre compte et l'active.

Toute utilisation d'extensions privées dans votre compte est similaire à une utilisation dans un environnement de test (sandbox). Cela est dû au fait que les extensions sont contrôlées par version et que le comportement d'allocation est spécifique à la version, ce qui signifie que les extensions privées se comportent de la même manière que si elles étaient rendues publiques.

Note

Les extensions privées et les extensions publiques activées d'éditeurs tiers peuvent implémenter des gestionnaires d'événements qui s'exécutent pendant les opérations de création, de lecture, de mise à jour, de liste et de suppression. De ce fait, l'utilisation de ces extensions dans vos CloudFormation piles entraîne des frais sur votre compte. Ils s'ajoutent aux frais encourus pour les ressources créées. Pour en savoir plus, consultez AWS CloudFormation Tarification.

Pour plus d'informations sur le développement de vos propres extensions privées, consultez le Guide de l'utilisateur de l'interface de ligne de CloudFormation commande.

Enregistrement d'extensions privées

Pour utiliser des extensions privées qui ne figurent pas dans le CloudFormation registre, que ce soit celles que vous développez vous-même ou celles qui ont été partagées avec vous, vous devez d'abord les enregistrer auprès des comptes et des régions dans lesquels vous souhaitez les utiliser. CloudFormation L'enregistrement de l'extension en télécharge une copie dans le CloudFormation registre de votre compte et l'active. Une fois que vous avez enregistré une extension privée, elle apparaît dans le CloudFormation registre de ce compte et de cette région, et vous pouvez l'utiliser dans vos modèles de stack.

Vous pouvez enregistrer une extension à l'aide de la commande register-type de ou à l' AWS CLI aide de la submit commande de la CLI CloudFormation .

Pour enregistrer une extension privée à l'aide de la CloudFormation CLI, consultez la section Enregistrement des extensions dans le guide de l'utilisateur de la CloudFormation CLI.

Autorisations IAM pour l'enregistrement d'une extension privée

Dans le cadre de l'enregistrement d'une extension privée, vous spécifiez un compartiment Amazon S3 qui contient le package de projet d'extension. Ce package contient tous les fichiers sources nécessaires à l'extension que vous souhaitez enregistrer. L'utilisateur qui enregistre l'extension doit pouvoir accéder au package du projet dans ce compartiment Amazon S3. C'est-à-dire que l'utilisateur doit disposer d'GetObjectautorisations pour le package d'extension.

Cela est vrai, que vous utilisiez la commande register-type de ou la AWS CLIsubmit commande de la CLI CloudFormation .

Pour plus d'informations, veuillez consulter la rubrique Actions, ressources et clés de condition pour Amazon S3 dans le Guide de l'utilisateur AWS Identity and Access Management .

Enregistrement d'extensions

Enregistrez votre extension dans le AWS CloudFormation registre afin qu'elle puisse être utilisée.

Pour enregistrer un hook à l'aide du AWS CLI

Enregistrez votre hook auprès de celui-ci CloudFormation, afin qu'il puisse être utilisé dans le AWS CloudFormation registre.

  1. (Facultatif) Configurez votre Région AWS nom par défaut surus-west-2, en soumettant l'configureopération.

    aws configure AWS Access Key ID [None]: <Your Access Key ID> AWS Secret Access Key [None]: <Your Secret Key> Default region name [None]: us-west-2 Default output format [None]: json
  2. (Facultatif) La commande suivante crée et emballe votre projet hook sans l'enregistrer.

    $ cfn submit --dry-run
  3. Enregistrez votre hook à l'aide de la CloudFormation CLIcfn submit.

    cfn submit --set-default

    Cette commande renvoie la commande suivante.

    {‘ProgressStatus’: ‘COMPLETE’}

    Résultats : vous avez enregistré votre hook avec succès.

Pour enregistrer un type de ressource à l'aide du AWS CLI

Enregistrez votre type de ressource auprès CloudFormation de celui-ci afin qu'il puisse être utilisé dans le AWS CloudFormation registre.

  1. Localisez le Amazon S3 bucket qui contient le package de projet pour l'extension privée que vous souhaitez enregistrer dans votre compte.

  2. Utilisez la commande register-type pour enregistrer l'extension dans votre compte :

    RegisterType est une opération asynchrone. Elle renvoie un jeton d'enregistrement que vous pouvez utiliser pour suivre la progression de votre demande d'enregistrement.

    Note

    Si votre extension appelle des AWS API dans le cadre de ses fonctionnalités, vous devez créer un rôle d'exécution IAM incluant les autorisations nécessaires pour appeler ces AWS API, et fournir ce rôle d'exécution dans votre compte. Vous pouvez ensuite spécifier ce rôle d'exécution à l'aide du --execution-role-arn paramètre. CloudFormation assume ensuite ce rôle d'exécution pour fournir à votre type de ressource les informations d'identification appropriées.

    Par exemple, la commande suivante enregistre le type de ressource My::Resource::Example dans le Compte AWS actuel :

    aws cloudformation register-type --type-name My::Resource::Example --schema-handler-package [s3 object path] --type RESOURCE { "RegistrationToken": "f5525280-104e-4d35-bef5-8f1fexample" }
  3. Facultatif : utilisez le jeton d'enregistrement avec la commande describe-type-registration pour suivre la progression de votre demande d'enregistrement.

    Lorsque la demande d'enregistrement est CloudFormation terminée, l'état d'avancement de la demande est défini surCOMPLETE.

    L'exemple suivant utilise le jeton d'enregistrement renvoyé par la commande describe-type-registration ci-dessus pour renvoyer les informations relatives à l'état de l'enregistrement.

    aws cloudformation describe-type-registration --registration-token f5525280-104e-4d35-bef5-8f1fexample { "ProgressStatus": "COMPLETE", "TypeArn": "arn:aws:cloudformation:us-east-1:012345678910:type/resource/My-Resource-Example", "Description": "Deployment is currently in DEPLOY_STAGE of status COMPLETED; ", "TypeVersionArn": "arn:aws:cloudformation:us-east-1:111122223333:type/resource/My-Resource-Example/00000001" }

Configuration des extensions au niveau du compte

Une extension peut inclure des propriétés de configuration destinées à s'appliquer à toutes les instances de l'extension pour un compte et une région donnés. L'auteur de l'extension les définit dans la configuration de définition de l'extension. Si certaines propriétés sont requises dans la définition de configuration de l'extension, vous devez les spécifier avant de pouvoir utiliser l'extension dans votre compte et votre région.

Note

Si votre configuration de type inclut des références dynamiques à des valeurs stockées dans AWS Systems Manager ou AWS Secrets Manager, tout rôle utilisé pour approvisionner le type (par exemple, lors de la création ou de la mise à jour d'une pile) doit disposer des autorisations appropriées pour récupérer cette valeur. En particulier :

  • Si la configuration de type contient un paramètre stocké dans le AWS Systems Manager Parameter Store, l'utilisateur ou le rôle utilisé pour configurer le type doit être autorisé à appeler GetParameter.

  • Si la configuration du type contient un secret stocké dans AWS Secrets Manager, l'utilisateur ou le rôle utilisé pour configurer le type doit être autorisé à appeler GetSecretValue.

Pour plus d'informations sur les références dynamiques, voir Utilisation de références dynamiques pour spécifier des valeurs de modèle.

Pour plus d'informations sur la façon dont les définitions de configuration sont définies lors du développement d'une extension, consultez la section Définition de la configuration au niveau du compte d'une extension dans le Guide de l'CloudFormation utilisateur pour le développement d'extensions.

Pour afficher les données de configuration actuelles d'une extension dans la CloudFormation console
  1. Utilisez le CloudFormation registre pour trouver l'extension.

  2. Choisissez l'extension pour afficher ses détails.

  3. Sur la page des détails de l'extension, choisissez l'onglet Configuration.

  4. Développez l'onglet Configuration schema (Schéma de configuration) pour voir le schéma de configuration défini pour l'extension.

  5. Développez l'onglet Configuration pour voir la configuration actuelle que vous avez définie pour cette extension.

Pour consulter les données de configuration actuelles d'une extension dans AWS CLI
  • Utilisez la commande describe-type pour renvoyer des informations détaillées sur l'extension. L'élément ConfigurationSchema de la sortie contient la définition de la configuration actuelle de l'extension dans une région donnée.

    Vous pouvez également utiliser la commande batch-describe-type-configurations pour renvoyer les données de configuration relatives à plusieurs extensions.

Pour spécifier les propriétés de configuration pour les types d'extension

Pour spécifier les propriétés de configuration d'une extension à l'aide de la CloudFormation console

  1. Utilisez le CloudFormation registre pour trouver l'extension parmi les extensions activées de votre compte.

  2. Sélectionnez l'extension pour afficher ses détails.

  3. Sur la page de détails de l'extension, depuis l'onglet Configuration, sélectionnez Edit configuration (Modifier la configuration).

    Sinon, depuis Actions, sélectionnez Edit (Modifier), puis Edit configuration (Modifier la configuration).

    CloudFormation affiche la page Configurer l'extension. Vérifiez que View configuration schema (Afficher un schéma de configuration) est activé pour voir le schéma de définition de la configuration actuelle de l'extension.

  4. Dans la zone de texte Configuration JSON (Fichier JSON de configuration), saisissez une chaîne JSON qui représente le schéma de configuration que vous souhaitez définir pour cette extension. Il doit être conforme au schéma défini dans Configuration schema (Schéma de configuration).

  5. Sélectionnez Configure extension (Configurer l'extension).

Pour spécifier les propriétés de configuration d'une extension à l'aide du AWS CLI

  • Utilisez la commande set-type-configuration pour spécifier la configuration à utiliser avec l'extension dans votre compte et votre région.

    Le fichier JSON que vous transmettez pour --configuration doit être conforme au schéma de définition de configuration de l'extension. Voici un exemple de commande set-type-configuration qui spécifie la configuration.

    aws cloudformation set-type-configuration \ --region us-west-2 \ --type RESOURCE \ --type-name My::Resource::Example \ --configuration-alias default \ --configuration "{"CredentialKey": "testUserCredential"}"

Spécification de la version d'une extension privée à utiliser à l'aide du AWS CLI

Au fil du temps, vous pouvez enregistrer plusieurs versions de la même extension. Vous pouvez spécifier la version de l'extension que vous souhaitez utiliser pour les CloudFormation opérations.

Pour spécifier une version d'une extension

Utilisez la set-type-default-version commande pour spécifier la version de l'extension à utiliser pour les CloudFormation opérations sur votre compte.

Par exemple, la commande suivante définit la version par défaut du type de ressource My::Resource::Example sur 00000003 pour le compte actuel.

aws cloudformation set-type-default-version \ --type RESOURCE \ --type-name My::Resource::Example \ --version-id 00000003

Pour spécifier la version de hook par défaut

Pour spécifier la version par défaut de votre hook dans votre compte, utilisez la commande set-type-default-version et spécifiez le type, le nom du type et l'ID de version.

aws cloudformation set-type-default-version \ --type HOOK \ --type-name MyCompany::Testing::MyTestHook \ --version-id 00000003