Existe-t-il un moyen d'incorporer des ressources AWS existantes qui ont été créées en dehors de cloudformation dans une pile de cloudformation existante? J'aimerais le faire sans avoir à ajouter une nouvelle ressource dans la pile de cloudformation et à migrer les données de la ressource existante vers cette nouvelle ressource. Je vois qu'AWS a maintenant une détection de dérive pour les piles de formation de nuages. Je me demande si cela pourrait être exploité pour incorporer les ressources existantes dans une pile.
La possibilité d'importer/adopter des ressources dans une pile CloudFormation existante est la première demande des clients CloudFormation. Nous réfléchissons à des moyens de le faire depuis un certain temps, mais nous n'avons pas trouvé le mécanisme qui répond à la fois aux besoins des clients et fonctionne à l'échelle du service.
Étant donné que nous n'exposons les informations sur l'état de la pile nulle part en dehors du service pour que vous puissiez les modifier, la seule approche que vous pouvez adopter jusqu'à ce que nous proposons une fonctionnalité d'adoption consiste à stocker des métadonnées sur les ressources dans un magasin de paramètres ou à utiliser une ressource personnalisée comme wrapper pour récupérer les informations sur la ressource sous-jacente, puis les faire remonter vers votre pile via Fn :: GetAtt.
Maintenant, vous pouvez enfin le faire avec la fonction d'importation de ressources, références:
https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md
https://Twitter.com/shortjared/status/1193985448164691970?s=21
Vous pouvez le faire en transmettant les informations sur les ressources existantes à votre pile via Paramètres . Voici un exemple de comment passer ces paramètres à la pile.
Découvrez ce billet de blog d'Eric Hammond décrivant comment vous pouvez intégrer ces paramètres dans le reste de la pile. Le cas d'utilisation décrit est un peu différent en ce qu'il crée éventuellement de nouvelles ressources si elles ne sont pas transmises, mais la structure générale s'applique au cas que vous avez décrit.
Dans ce cas, je ne pense pas que la détection de dérive vous aidera, car elle montrera les différences entre les ressources déployées et la configuration décrite dans une pile. Les ressources définies/créées en dehors de la pile ne seront pas vérifiées.
Amazons CDK (actuellement au stade de l'aperçu du développeur au moment de l'écriture) offre un moyen de le faire:
Si vous devez référencer une ressource, telle qu'un compartiment Amazon S3 ou un VPC, qui est définie en dehors de votre application CDK, vous pouvez utiliser les méthodes statiques Xxxx.import (...) disponibles sur les constructions AWS. Par exemple, vous pouvez utiliser la méthode Bucket.import () pour obtenir un objet BucketRef, qui peut être utilisé dans la plupart des endroits où un compartiment est requis. Ce modèle permet de traiter les ressources définies en dehors de votre application comme si elles faisaient partie de votre application.
Source: https://docs.aws.Amazon.com/CDK/latest/userguide/aws_construct_lib.html
Il permet également d'importer des modèles CloudFormation existants: https://docs.aws.Amazon.com/CDK/latest/userguide/use_cfn_template.html
L'importation de ressources existantes dans des piles est désormais prise en charge par CloudFormation:
Annonce d'AWS: AWS CloudFormation lance l'importation de ressources
Instructions Via un exemple: ICI
Cloudformer peut vous aider à créer une nouvelle pile à partir de ressources existantes et vous pouvez ensuite ajouter plus de ressources à la pile. Mais je ne sais pas comment "fusionner" une pile existante avec des ressources existantes en dehors de la pile.