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
.zip
file per la cartella e quindi carica il.zip
file. -
Se non specificate un percorso, il comando crea un
.zip
file 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-bucket
amzn-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-file
packaged-template.json
\ --stack-namestack-name
Quando distribuisci modelli di dimensioni superiori a 51.200 byte, usa il deploy comando con l'--s3-bucket
opzione per caricare il modello su S3, come nell'esempio seguente.
aws cloudformation deploy \ --template-file
packaged-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