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à.
Carica gli artefatti locali in un bucket S3 con AWS CLI
Puoi utilizzarlo AWS CLI per caricare artefatti locali a cui fa riferimento un CloudFormation modello in un bucket Amazon S3. Gli artefatti locali sono file a cui fai riferimento nel tuo modello. Invece di caricare manualmente i file in un bucket S3 e quindi aggiungere le relative posizioni al modello, puoi specificare gli artefatti locali nel modello e utilizzare il comando per caricarli rapidamente. package
Un artefatto locale è un percorso a un file o a una cartella che il comando package carica in Amazon S3. Ad esempio, un artefatto può essere un percorso locale al codice sorgente della AWS Lambda funzione o un file OpenAPI dell'API REST di Amazon API Gateway.
Quando si utilizza il comando: package
-
Se specifichi un file, il comando lo carica direttamente nel bucket S3.
-
Se si specifica una cartella, il comando crea un
.zipfile per la cartella e quindi carica il.zipfile. -
Se non specificate un percorso, il comando crea un
.zipfile per la directory di lavoro e lo carica.
È possibile specificare un percorso assoluto o relativo, in cui il percorso è relativo alla posizione del modello.
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 possibile utilizzare il modello restituito per creare o aggiornare uno stack.
Nota
Puoi utilizzare artefatti locali solo per le proprietà di risorsa supportate dal comando package. Per ulteriori informazioni su questo comando e un elenco delle proprietà delle risorse supportate, consultate la packagedocumentazione nel AWS CLI Command Reference.
Prerequisiti
Prima di iniziare, devi disporre di un bucket Amazon S3 esistente.
Package e distribuzione di un modello con artefatti locali
Il seguente modello specifica l'artefatto locale per il codice sorgente della funzione Lambda. Il codice sorgente è memorizzato nella cartella. /home/user/code/lambdafunction
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 packagecomando seguente crea e carica un .zip file della cartella del codice sorgente della funzione nella radice del bucket specificato.
aws cloudformation package \ --s3-bucketamzn-s3-demo-bucket\ --template/path_to_template/template.json\ --output-template-filepackaged-template.json\ --output json
Il comando genera un nuovo modello nel percorso specificato da. --output-template-file Sostituisce il riferimento all'artefatto con la posizione Amazon S3, come illustrato di seguito. Il .zip file viene denominato utilizzando il MD5 checksum del contenuto della cartella, anziché utilizzando il nome della cartella stessa.
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://amzn-s3-demo-bucket/md5 checksum"
}
}
}
}
Dopo aver impacchettato gli elementi del modello, distribuisci il modello elaborato utilizzando il comando. deploy
aws cloudformation deploy \ --template-filepackaged-template.json\ --stack-namestack-name
Quando distribuisci modelli di dimensioni superiori a 51.200 byte, usa il deploy comando con l'--s3-bucketopzione per caricare il modello su S3, come nell'esempio seguente.
aws cloudformation deploy \ --template-filepackaged-template.json\ --stack-namestack-name\ --s3-bucketamzn-s3-demo-bucket
Nota
Per un altro esempio di utilizzo del package comando per caricare artefatti locali, vedi. Dividi un modello in pezzi riutilizzabili usando pile annidate