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-filepackaged-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-namestack-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-namestack-name
\ --s3-bucketamzn-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.