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 AWS::Lambda::Functionrisorse quando si utilizza il generatore IAc.

Problema

La AWS::Lambda::Function risorsa dispone di tre set di proprietà che si escludono a vicenda per specificare il codice Lambda:

  • Code/S3Buckete Code/S3Key proprietà e, facoltativamente, la proprietà Code/S3ObjectVersion

  • Code/ImageUri property

  • Code/ZipFile property

È possibile utilizzare solo uno di questi set per una determinata AWS::Lambda::Function risorsa.

Il generatore IAc non è in grado di determinare quale set di proprietà esclusive di sola scrittura è stato utilizzato per creare o aggiornare la risorsa. Di conseguenza, include solo il primo set di proprietà nel modello generato. Le Code/ZipFile proprietà Code/ImageUri and vengono omesse.

Inoltre, il generatore IAc emette i seguenti avvisi:

  • MUTUALLY_EXCLUSIVE_PROPERTIES— Lo avverte Code/S3Bucket e Code/S3Key vengono identificate come proprietà che si escludono a vicenda.

  • UNSUPPORTED_PROPERTIES— Avverte che la proprietà non è supportata. Code/S3ObjectVersion

Per includere AWS::Lambda::Function risorse in un modello generato, è necessario 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 S3ObjectVersion la proprietà, 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 ECR repository Amazon, puoi aggiornare il modello utilizzando le seguenti istruzioni:
  1. Scarica il modello generato.

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

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

  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. Scarica il modello generato.

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

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

  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. Usa l' AWS Lambda GetFunctionAPIazione (ad esempio, usando il aws lambda get-function AWS CLI comando).

  2. Nella risposta, il RepositoryType parametro indica 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 Location parametro contiene una firma predefinita URL che puoi utilizzare per scaricare il pacchetto di distribuzione 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.