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

Pour certaines propriétés de ressource qui nécessitent un emplacement Amazon S3 (nom de compartiment et nom de fichier), vous pouvez plutôt spécifier des références locales. Par exemple, vous pouvez spécifier l'emplacement S3 du code source de votre AWS Lambda fonction ou d'un fichier Amazon API Gateway REST API Open API (anciennement Swagger). Au lieu de télécharger manuellement les fichiers dans un compartiment S3 puis d'ajouter l'emplacement à votre modèle, vous pouvez spécifier des références locales, appelées artefacts locaux, dans votre modèle, puis utiliser la packageCLIcommande 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 un API fichier ouvert REST API d'Amazon API Gateway.

Si vous spécifiez un fichier, la commande le charge directement dans le compartiment S3. 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. Ensuite, vous pouvez utiliser le modèle retourné pour créer ou mettre à jour une pile.

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.

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.

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

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 package commande suivante crée un .zip fichier contenant le dossier de code source de la fonction, puis télécharge le .zip fichier dans le dossier racine du mybucket compartiment.

Commande package de la

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

La commande enregistre le modèle qu'il génère vers le chemin d'accès spécifié par l'option --output-template-file. La commande remplace l'artefact par l'emplacement Amazon S3, comme l'illustre l'exemple suivant :

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://mybucket/<md5 checksum>" } } } }