So lösen Sie Probleme mit schreibgeschützten Eigenschaften in Ressourcen AWS::Lambda::Function - AWS CloudFormation

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

So lösen Sie Probleme mit schreibgeschützten Eigenschaften in Ressourcen AWS::Lambda::Function

In diesem Thema wird erklärt, wie Sie Probleme mit schreibgeschützten Eigenschaften in AWS::Lambda::FunctionRessourcen beheben können, wenn Sie den IaC-Generator verwenden.

Problem

Die AWS::Lambda::Function Ressource hat drei sich gegenseitig ausschließende Eigenschaftssätze zur Angabe des Lambda-Codes:

  • Code/S3Bucketund Code/S3Key Eigenschaften und optional die Code/S3ObjectVersion Eigenschaft

  • Code/ImageUri Eigenschaft

  • Code/ZipFile Eigenschaft

Nur einer dieser Sätze kann für eine bestimmte AWS::Lambda::Function Ressource verwendet werden.

Der IaC-Generator kann nicht ermitteln, welcher Satz exklusiver schreibgeschützter Eigenschaften zum Erstellen oder Aktualisieren der Ressource verwendet wurde. Daher enthält er nur den ersten Satz von Eigenschaften in der generierten Vorlage. Die Code/ZipFile Eigenschaften Code/ImageUri und werden weggelassen.

Darüber hinaus gibt der IaC-Generator die folgenden Warnungen aus:

  • MUTUALLY_EXCLUSIVE_PROPERTIES— Warnt davor Code/S3Bucket und Code/S3Key werden als sich gegenseitig ausschließende Eigenschaften identifiziert.

  • UNSUPPORTED_PROPERTIES— Warnt davor, dass die Code/S3ObjectVersion Eigenschaft nicht unterstützt wird.

Um AWS::Lambda::Function Ressourcen in eine generierte Vorlage aufzunehmen, müssen Sie die Vorlage herunterladen und mit den richtigen Codeeigenschaften aktualisieren.

Auflösung

Wenn Sie Ihren Lambda-Code in einem Amazon S3 S3-Bucket speichern und die S3ObjectVersion Eigenschaft nicht verwenden, können Sie die generierte Vorlage ohne Änderungen importieren. Der IaC-Generator fragt Sie während des Importvorgangs nach dem Amazon S3 S3-Bucket und dem Schlüssel als Vorlagenparameter.

Wenn Sie Ihren Lambda-Code als ECR Amazon-Repository speichern, können Sie Ihre Vorlage mithilfe der folgenden Anweisungen aktualisieren:
  1. Laden Sie die generierte Vorlage herunter.

  2. Entfernen Sie die Eigenschaften und die entsprechenden Parameter für die Code/S3Key Eigenschaften Code/S3Bucket und aus der generierten Vorlage.

  3. Ersetzen Sie die entfernten Eigenschaften in der generierten Vorlage durch die Code/ImageUri Eigenschaft und geben Sie dabei die URL für das ECR Amazon-Repository an.

  4. Öffnen Sie die generierte Vorlage in der IaC-Generatorkonsole und wählen Sie die Schaltfläche Bearbeitete Vorlage importieren.

Wenn Sie Ihren Lambda-Code wie in einer Zip-Datei speichern, können Sie Ihre Vorlage mithilfe der folgenden Anweisungen aktualisieren:
  1. Laden Sie die generierte Vorlage herunter.

  2. Entfernen Sie die Eigenschaften und die entsprechenden Parameter für die Code/S3Key Eigenschaften Code/S3Bucket und aus der generierten Vorlage.

  3. Ersetzen Sie die entfernten Eigenschaften in der generierten Vorlage durch die Code/ZipFile Eigenschaft.

  4. Öffnen Sie die generierte Vorlage in der IaC-Generatorkonsole und wählen Sie die Schaltfläche Bearbeitete Vorlage importieren.

Wenn Sie keine Kopie Ihres Lambda-Codes haben, können Sie Ihre Vorlage mithilfe der folgenden Anweisungen aktualisieren:
  1. Verwenden Sie die AWS Lambda GetFunctionAPIAktion (z. B. mithilfe des aws lambda get-function AWS CLI Befehls).

  2. In der Antwort gibt der RepositoryType Parameter an, S3 ob sich der Code in einem Amazon S3 S3-Bucket oder ECR in einem ECR Amazon-Repository befindet.

  3. In der Antwort enthält der Location Parameter eine vorsignierte Datei, mit der Sie URL das Bereitstellungspaket für 10 Minuten herunterladen können. Laden Sie den Code herunter.

  4. Laden Sie den Code in einen Amazon S3 S3-Bucket hoch.

  5. Führen Sie einen Importvorgang mit der generierten Vorlage aus und geben Sie den Bucket-Namen und den Schlüssel als Parameterwerte an.