Come risolvere i problemi relativi alle proprietà di sola scrittura nelle risorse AWS::Lambda::Function - 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à.

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/S3Bucket e Code/S3Key e, 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 che Code/S3Bucket e Code/S3Key sono identificate come proprietà che si escludono a vicenda.

  • UNSUPPORTED_PROPERTIES: avvisa che la proprietà Code/S3ObjectVersion non è 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:
  1. Esegui il download del modello generato.

  2. Rimuovi le proprietà e i parametri corrispondenti per le proprietà Code/S3Bucket e Code/S3Key dal modello generato.

  3. Sostituisci le proprietà rimosse nel modello generato con la proprietà Code/ImageUri, specificando l’URL per il repository Amazon ECR.

  4. 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:
  1. Esegui il download del modello generato.

  2. Rimuovi le proprietà e i parametri corrispondenti per le proprietà Code/S3Bucket e Code/S3Key dal modello generato.

  3. Sostituisci le proprietà rimosse nel modello generato con la proprietà Code/ZipFile.

  4. 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:
  1. Utilizza l'azione AWS Lambda GetFunctionAPI (ad esempio, utilizzando il aws lambda get-function AWS CLI comando).

  2. Nella risposta, il parametro RepositoryType è S3 se il codice si trova in un bucket Amazon S3 o ECR se il codice si trova in un repository Amazon ECR.

  3. Nella risposta, il parametro Location contiene un URL prefirmato da utilizzare per scaricare il pacchetto di implementazione per 10 minuti. Scarica il codice.

  4. Carica il codice in un bucket Amazon S3.

  5. Esegui un’operazione di importazione con il modello generato e fornisci il nome e la chiave del bucket come valori dei parametri.