Chargement d'artefacts locaux dans un compartiment S3 - 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.

Chargement d'artefacts locaux dans un compartiment S3

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 le fichier OpenAPI (anciennement Swagger) d'une API REST Amazon API Gateway. Au lieu de 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, que l'on appelle des artefacts locaux, dans votre modèle et ensuite 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 fichier OpenAPI d'une API REST 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 fichier .zip pour le dossier, puis charge le fichier .zip. Si vous ne spécifiez pas de chemin d'accès, la commande crée un fichier .zip pour 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.

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 la liste des propriétés de ressource prises en charge, veuillez consulter la commande aws cloudformation package dans la Référence des commandes AWS CLI.

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

Commande de package

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

La commande enregistre le modèle qu'il génère vers le chemin d'accès spécifié par l'option --output. 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>"
      }
    }
  }
}