Téléchargez des artefacts locaux dans un compartiment S3 à l'aide du AWS CLI - 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.

Téléchargez des artefacts locaux dans un compartiment S3 à l'aide du AWS CLI

Vous pouvez utiliser le AWS CLI pour télécharger des artefacts locaux référencés par un CloudFormation modèle dans un compartiment Amazon S3. Les artefacts locaux sont des fichiers auxquels vous faites référence dans votre modèle. Au lieu de télécharger manuellement des fichiers dans un compartiment S3 puis d'ajouter leur emplacement à votre modèle, vous pouvez spécifier des artefacts locaux dans votre modèle et utiliser la packagecommande pour les télécharger rapidement.

Un artefact local est un chemin vers un fichier ou un dossier que la commande package charge dans Amazon S3. Par exemple, un artefact peut être un chemin local vers le code source de votre AWS Lambda fonction ou le fichier OpenAPI d'une API REST Amazon API Gateway.

Lorsque vous utilisez la package commande :

  • Si vous spécifiez un fichier, la commande le charge directement dans le compartiment S3.

  • Si vous spécifiez un dossier, la commande crée un .zip fichier pour le dossier, puis télécharge le .zip fichier.

  • Si vous ne spécifiez pas de chemin, la commande crée un .zip fichier pour le répertoire de travail et le télécharge.

Vous pouvez spécifier un chemin d'accès absolu ou relatif, où le chemin d'accès relatif correspond à l'emplacement de votre modèle.

Après avoir chargé les artefacts, la commande renvoie une copie de votre modèle, en remplaçant les références vers des artefacts locaux par l'emplacement S3 où la commande a chargé les artefacts. Vous pouvez ensuite utiliser le modèle renvoyé pour créer ou mettre à jour une pile.

Note

Vous pouvez utiliser des artefacts locaux uniquement pour les propriétés de ressource que la commande package prend en charge. Pour plus d'informations sur cette commande et une liste des propriétés de ressources prises en charge, consultez la packagedocumentation dans le manuel de référence des AWS CLI commandes.

Prérequis

Avant de commencer, vous devez disposer d'un compartiment Amazon S3 existant.

Package et déploiement d'un modèle avec des artefacts locaux

Le modèle suivant spécifie l'artefact local pour le code source de la fonction Lambda. Le code source est stocké dans le /home/user/code/lambdafunction dossier.

Modèle d'origine

{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::Serverless-2016-10-31", "Resources": { "MyFunction": { "Type": "AWS::Serverless::Function", "Properties": { "Handler": "index.handler", "Runtime": "nodejs18.x", "CodeUri": "/home/user/code/lambdafunction" } } } }

La packagecommande suivante crée et télécharge un .zip fichier du dossier de code source de la fonction à la racine du compartiment spécifié.

aws cloudformation package \ --s3-bucket amzn-s3-demo-bucket \ --template /path_to_template/template.json \ --output-template-file packaged-template.json \ --output json

La commande génère un nouveau modèle sur le chemin spécifié par--output-template-file. Il remplace la référence à l'artefact par l'emplacement Amazon S3, comme indiqué ci-dessous. Le .zip fichier est nommé en utilisant la MD5 somme de contrôle du contenu du dossier, plutôt que le nom du dossier lui-même.

Modèle obtenu

{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::Serverless-2016-10-31", "Resources": { "MyFunction": { "Type": "AWS::Serverless::Function", "Properties": { "Handler": "index.handler", "Runtime": "nodejs18.x", "CodeUri": "s3://amzn-s3-demo-bucket/md5 checksum" } } } }

Après avoir empaqueté les artefacts de votre modèle, déployez le modèle traité à l'aide de la deploycommande.

aws cloudformation deploy \ --template-file packaged-template.json \ --stack-name stack-name

Lorsque vous déployez des modèles de plus de 51 200 octets, utilisez la deploy commande avec la --s3-bucket possibilité de télécharger votre modèle sur S3, comme dans l'exemple suivant.

aws cloudformation deploy \ --template-file packaged-template.json \ --stack-name stack-name \ --s3-bucket amzn-s3-demo-bucket
Note

Pour un autre exemple d'utilisation de la package commande pour télécharger des artefacts locaux, consultezDivisez un modèle en pièces réutilisables à l'aide de piles imbriquées.