Caricamento di artefatti locali in un bucket S3 - AWS CloudFormation

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Caricamento di artefatti locali in un bucket S3

Per alcune proprietà di risorsa che richiedono una posizione Amazon S3 (nome del bucket e nome del file), puoi specificare riferimenti locali. Ad esempio, potresti specificare la posizione S3 del codice sorgente della funzione AWS Lambda o un file OpenAPI (in precedenza Swagger) della REST API Gateway Amazon API. Invece di caricare manualmente i file in un bucket S3 e aggiungere la posizione al modello, puoi specificare riferimenti locali, denominati artefatti locali, nel modello e utilizzare il comando package per caricarli in modo rapido. Un artefatto locale è un percorso a un file o a una cartella che il comando package carica in Amazon S3. Ad esempio, un artefatto potrebbe essere un percorso locale al codice sorgente della funzione AWS Lambda o un file OpenAPI della REST API Gateway Amazon API.

Se specifichi un file, il comando lo carica direttamente nel bucket S3. Dopo aver caricato gli artefatti, il comando restituisce una copia del modello, sostituendo i riferimenti ad artefatti locali con la posizione S3 in cui il comando ha caricato gli artefatti. Quindi puoi utilizzare il modello restituito per creare o aggiornare uno stack.

Se specifichi una cartella, il comando crea un file .zip per la cartella e lo carica. Se non si specifica un percorso, il comando crea un file .zip per la directory di lavoro e lo carica. È possibile specificare un percorso assoluto o relativo, in cui il percorso è relativo alla posizione del modello.

Puoi utilizzare artefatti locali solo per le proprietà di risorsa supportate dal comando package. Per ulteriori informazioni su questo comando e per un elenco di proprietà di risorsa supportate, consulta il comando aws cloudformation package in Riferimento ai comandi AWS CLI.

Il seguente modello specifica l'artefatto locale per il codice sorgente della funzione Lambda. Il codice sorgente è memorizzato nella cartella /home/user/code/lambdafunction dell'utente.

Modello originale

{
  "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"
      }
    }
  }
}

Il comando seguente crea un file.zip contenente la cartella con il codice sorgente della funzione e lo carica nella cartella principale del bucket my-bucket.

Comando del pacchetto

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

Il comando salva il modello generato nel percorso specificato dall'opzione --output. Il comando sostituisce l'artefatto con la posizione di Amazon S3, come nell'esempio seguente:

Modello risultante

{
  "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>"
      }
    }
  }
}