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.
Charger des artefacts locaux dans un compartiment S3 à l’aide de l’ 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 les fichiers vers un compartiment S3, puis d’ajouter leurs emplacements à votre modèle, vous pouvez spécifier les artefacts locaux dans votre modèle et utiliser la commande package pour les 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 OpenAPI fichier d'une API REST Amazon API Gateway.
Lorsque vous utilisez la commande package :
-
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 fichier
.zippour le dossier, puis charge le fichier.zip. -
Si vous ne spécifiez pas de chemin d’accès, la commande crée un fichier
.zippour le répertoire de travail et le 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 pour obtenir la liste des propriétés de ressources prises en charge, consultez la documentation package dans la Référence des commandes AWS CLI.
Prérequis
Avant de commencer, vous devez disposer d’un compartiment Amazon S3 existant.
package et déployer 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 dossier /home/user/code/lambdafunction.
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 commande package suivante crée et charge un fichier .zip du dossier du code source de la fonction à la racine du compartiment spécifié.
aws cloudformation package \ --s3-bucketamzn-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 à l’emplacement spécifié par --output-template-file. Elle 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 package les artefacts de votre modèle, déployez le modèle traité à l’aide de la commande deploy.
aws cloudformation deploy \ --template-filepackaged-template.json\ --stack-namestack-name
Lorsque vous déployez des modèles de plus de 51 200 octets, utilisez la commande deploy avec l’option --s3-bucket pour charger votre modèle vers S3, comme dans l’exemple suivant.
aws cloudformation deploy \ --template-filepackaged-template.json\ --stack-namestack-name\ --s3-bucketamzn-s3-demo-bucket
Note
Pour un autre exemple d’utilisation de la commande package pour charger des artefacts locaux, consultez Diviser un modèle en éléments réutilisables à l’aide de piles imbriquées.