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à.
Come risolvere i problemi relativi alle proprietà di sola scrittura nelle risorse AWS::Lambda::Function
Questo argomento spiega come risolvere i problemi relativi alle proprietà di sola scrittura nelle risorse AWS::Lambda::Function quando si utilizza il generatore IaC.
Problema
La risorsa AWS::Lambda::Function dispone di tre set di proprietà che si escludono a vicenda per specificare il codice Lambda:
-
Le proprietà
Code/S3BucketeCode/S3Keye, facoltativamente, la proprietàCode/S3ObjectVersion -
Proprietà
Code/ImageUri -
Proprietà
Code/ZipFile
È possibile utilizzare solo uno di questi set per una determinata risorsa AWS::Lambda::Function.
Il generatore IaC non è in grado di determinare quale set di proprietà esclusive di sola scrittura sia stato utilizzato per creare o aggiornare la risorsa. Di conseguenza, include solo il primo set di proprietà nel modello generato. Le proprietà Code/ImageUri e Code/ZipFile vengono omesse.
Inoltre, il generatore IaC emette i seguenti avvisi:
-
MUTUALLY_EXCLUSIVE_PROPERTIES: avvisa cheCode/S3BucketeCode/S3Keysono identificate come proprietà che si escludono a vicenda. -
UNSUPPORTED_PROPERTIES: avvisa che la proprietàCode/S3ObjectVersionnon è supportata.
Per includere risorse AWS::Lambda::Function in un modello generato, devi scaricare e aggiornare il modello con le proprietà del codice corrette.
Risoluzione
Se memorizzi il codice Lambda in un bucket Amazon S3 e non utilizzi la proprietà S3ObjectVersion, puoi importare il modello generato senza alcuna modifica. Il generatore IaC ti chiederà il bucket e la chiave Amazon S3 come parametri del modello durante l’operazione di importazione.
Se memorizzi il codice Lambda come repository Amazon ECR, puoi aggiornare il modello utilizzando le seguenti istruzioni:
-
Esegui il download del modello generato.
-
Rimuovi le proprietà e i parametri corrispondenti per le proprietà
Code/S3BucketeCode/S3Keydal modello generato. -
Sostituisci le proprietà rimosse nel modello generato con la proprietà
Code/ImageUri, specificando l’URL per il repository Amazon ECR. -
Apri il modello generato nella console del generatore IaC e scegli il pulsante Importa modello modificato.
Se memorizzi il codice Lambda come in un file zip, puoi aggiornare il modello seguendo le seguenti istruzioni:
-
Esegui il download del modello generato.
-
Rimuovi le proprietà e i parametri corrispondenti per le proprietà
Code/S3BucketeCode/S3Keydal modello generato. -
Sostituisci le proprietà rimosse nel modello generato con la proprietà
Code/ZipFile. -
Apri il modello generato nella console del generatore IaC e scegli il pulsante Importa modello modificato.
Se non disponi di una copia del codice Lambda, puoi aggiornare il modello seguendo le seguenti istruzioni:
-
Utilizza l'azione AWS Lambda
GetFunctionAPI (ad esempio, utilizzando ilaws lambda get-functionAWS CLI comando). -
Nella risposta, il parametro
RepositoryTypeèS3se il codice si trova in un bucket Amazon S3 oECRse il codice si trova in un repository Amazon ECR. -
Nella risposta, il parametro
Locationcontiene un URL prefirmato da utilizzare per scaricare il pacchetto di implementazione per 10 minuti. Scarica il codice. -
Carica il codice in un bucket Amazon S3.
-
Esegui un’operazione di importazione con il modello generato e fornisci il nome e la chiave del bucket come valori dei parametri.