Beispiel: Erstellen Sie einen Trigger AWS CodeCommit für eine bestehende AWS Lambda Funktion - AWS CodeCommit

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.

Beispiel: Erstellen Sie einen Trigger AWS CodeCommit für eine bestehende AWS Lambda Funktion

Der einfachste Weg, einen Trigger zu erstellen, der eine Lambda-Funktion aufruft, besteht darin, diesen Trigger in der Lambda-Konsole zu erstellen. Diese integrierte Integration stellt sicher, dass Sie CodeCommit über die zum Ausführen der Funktion erforderlichen Berechtigungen verfügen. Um einen Trigger für eine bestehende Lambda-Funktion hinzuzufügen, rufen Sie die Lambda-Konsole auf und wählen Sie die Funktion aus. Führen Sie auf der Registerkarte Triggers (Auslöser) zu der Funktion die Schritte unter Add trigger (Auslöser hinzufügen) aus. Diese Schritte gleichen denen unter So erstellen Sie die Lambda-Funktion:.

Sie können auch einen Trigger für eine Lambda-Funktion in einem CodeCommit Repository erstellen. Dazu müssen Sie eine vorhandene Lambda-Funktion zum Aufrufen auswählen. Außerdem müssen Sie die für CodeCommit die Ausführung der Funktion erforderlichen Berechtigungen manuell konfigurieren.

Manuelles Konfigurieren von Berechtigungen, um die Ausführung einer Lambda-Funktion CodeCommit zu ermöglichen

Wenn Sie einen Trigger erstellen CodeCommit , der eine Lambda-Funktion aufruft, müssen Sie die Berechtigungen, mit denen CodeCommit die Lambda-Funktion ausgeführt werden kann, manuell konfigurieren. Um diese manuelle Konfiguration zu vermeiden, sollten Sie den Trigger für die Funktion stattdessen in der Lambda-Konsole erstellen.

Um die Ausführung einer Lambda-Funktion CodeCommit zu ermöglichen
  1. Öffnen Sie einen Klartext-Editor und erstellen Sie eine JSON-Datei, die den Namen der Lambda-Funktion, die Details des CodeCommit Repositorys und die Aktionen angibt, die Sie in Lambda zulassen möchten, ähnlich der folgenden:

    { "FunctionName": "MyCodeCommitFunction", "StatementId": "1", "Action": "lambda:InvokeFunction", "Principal": "codecommit.amazonaws.com", "SourceArn": "arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo", "SourceAccount": "111122223333" }
  2. Speichern Sie die Datei als JSON-Datei mit einem Namen, den Sie sich leicht merken können (z. B.. json). AllowAccessfromMyDemoRepo

  3. Führen Sie mithilfe der JSON-Datei, die Sie gerade erstellt haben, im Terminal (Linux, macOS oder Unix) oder in der Befehlszeile (Windows) den aws lambda add-permissions Befehl aus, um der mit Ihrer Lambda-Funktion verknüpften Ressourcenrichtlinie eine Berechtigung hinzuzufügen:

    aws lambda add-permission --cli-input-json file://AllowAccessfromMyDemoRepo.json

    Dieser Befehl gibt den JSON-Wert der soeben hinzugefügten Richtlinienanweisung zurück, ähnlich folgendem Beispiel:

    { "Statement": "{\"Condition\":{\"StringEquals\":{\"AWS:SourceAccount\":\"111122223333\"},\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo\"}},\"Action\":[\"lambda:InvokeFunction\"],\"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"codecommit.amazonaws.com\"},\"Sid\":\"1\"}" }

    Weitere Informationen zu Ressourcenrichtlinien für Lambda-Funktionen finden Sie unter AddPermissionund The Pull/Push Event Models im AWS Lambda Benutzerhandbuch.

  4. Melden Sie sich unter https://console.aws.amazon.com/iam/ bei der IAM-Konsole an AWS Management Console und öffnen Sie sie.

  5. Wählen Sie im Navigationsbereich Dashboard die Option Roles und in der Liste der Rollen lambda_basic_execution aus.

  6. Wählen Sie auf der Zusammenfassungsseite für die Rolle die Registerkarte Permissions (Berechtigungen) aus und wählen Sie unter Inline Policies (Eingebundene Richtlinien) die Option Create Role Policy (Rollenrichtlinie erstellen) aus.

  7. Wählen Sie auf der Seite Set Permissions (Berechtigungen festlegen) die Option Policy Generator (Richtliniengenerator) und dann Select (Auswählen) aus.

  8. Führen Sie auf der Seite Edit Permissions die folgenden Schritte aus:

    • Wählen Sie unter Effect die Option Allow aus.

    • Wählen Sie AWS unter Service die Option AWS CodeCommit.

    • Wählen Sie unter Aktionen die Option aus GetRepository.

    • Geben Sie unter Amazon Resource Name (ARN) (Amazon-Ressourcenname (ARN)) den ARN für das Repository ein (z. B. arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo).

    Wählen Sie Add Statement und anschließend Next Step aus.

  9. Wählen Sie auf der Seite Review Policy (Richtlinie überprüfen) die Option Apply Policy (Richtlinie anwenden) aus.

    Die Richtlinienanweisung sollte dann dem folgenden Beispiel ähneln:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt11111111", "Effect": "Allow", "Action": [ "codecommit:GetRepository" ], "Resource": [ "arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo" ] } ] }

Erstellen Sie einen Trigger für die Lambda-Funktion in einem CodeCommit Repository (Konsole)

Nachdem Sie die Lambda-Funktion erstellt haben, können Sie einen Trigger erstellen, der CodeCommit die Funktion als Reaktion auf die von Ihnen angegebenen Repository-Ereignisse ausführt.

Anmerkung

Bevor Sie den Trigger für das Beispiel erfolgreich testen oder ausführen können, müssen Sie die Richtlinien konfigurieren, die es ermöglichen CodeCommit , die Funktion und die Lambda-Funktion aufzurufen, um Informationen über das Repository abzurufen. Weitere Informationen finden Sie unter Um die Ausführung einer Lambda-Funktion CodeCommit zu ermöglichen.

Um einen Trigger für eine Lambda-Funktion zu erstellen
  1. Öffnen Sie die CodeCommit Konsole unter https://console.aws.amazon.com/codesuite/codecommit/home.

  2. Wählen Sie unter Repositories (Repositorys) das Repository aus, in dem Sie Auslöser für Repository-Ereignisse erstellen möchten.

  3. Wählen Sie im Navigationsbereich für das Repository Settings (Einstellungen) und anschließend Triggers (Auslöser).

  4. Wählen Sie Create trigger.

  5. Gehen Sie in Create trigger (Auslöser erstellen) wie folgt vor:

    • Geben Sie im Feld Triggername einen Namen für den Trigger ein (z. B. MyLambdaFunctionTrigger).

    • Wählen Sie unter Ereignisse die Repository-Ereignisse aus, die die Lambda-Funktion auslösen.

      Wenn Sie All repository events wählen, können Sie keine anderen Ereignisse auswählen. Wenn Sie nur einen Teil der Ereignisse auswählen möchten, löschen Sie All repository events und wählen Sie dann die gewünschten Ereignisse in der Liste aus. Wenn Sie beispielsweise möchten, dass der Trigger nur ausgeführt wird, wenn ein Benutzer ein Tag oder einen Branch im CodeCommit Repository erstellt, entfernen Sie Alle Repository-Ereignisse und wählen Sie dann Branch oder Tag erstellen aus.

    • Wenn Sie möchten, dass der Auslöser für alle Branches des Repositorys unter Branches gilt, lassen Sie die Auswahl leer, da diese Standardoption den Auslöser automatisch auf alle Branches anwendet. Wenn Sie möchten, dass dieser Auslöser nur für bestimmte Branches gilt, wählen Sie bis zu 10 Branch-Namen aus der Liste der Repository-Branches aus.

    • Wählen Sie unter Choose the service to use (Zu verwendende Services auswählen) die AWS Lambda aus.

    • Wählen Sie Lambda Lambda-Funktion den Funktionsnamen aus der Liste aus, oder geben Sie den ARN für die Funktion ein.

    • (Optional) Geben Sie unter Benutzerdefinierte Daten Informationen ein, die Sie in die Lambda-Funktion aufnehmen möchten (z. B. den Namen des IRC-Kanals, der von Entwicklern verwendet wird, um die Entwicklung im Repository zu besprechen). Dies ist ein Zeichenfolgenfeld. Es kann nicht zur Übergabe dynamischer Parameter verwendet werden.

  6. (Optional) Wählen Sie Test trigger (Auslöser testen). Damit wird die Funktion mit Beispieldaten zu Ihrem Repository, einschließlich der neuesten Commit-ID für das Repository, aufgerufen. (Falls kein Commit-Verlauf vorhanden ist, werden stattdessen aus Nullen bestehende Beispielwerte generiert.) Auf diese Weise können Sie überprüfen, ob Sie den Zugriff zwischen CodeCommit und der Lambda-Funktion korrekt konfiguriert haben.

  7. Wählen Sie Create trigger (Auslöser erstellen), um die Erstellung des Auslösers abzuschließen.

  8. Erstellen Sie einen Commit und übertragen Sie ihn per Push an das Repository, für das Sie den Auslöser konfiguriert haben, um die Funktion des Auslösers zu überprüfen. Sie sollten eine Antwort der Lambda-Funktion auf der Registerkarte Überwachung für diese Funktion in der Lambda-Konsole sehen.

Erstellen Sie einen Trigger für eine Lambda-Funktion für ein CodeCommit Repository ()AWS CLI

Sie können auch die Befehlszeile verwenden, um einen Trigger für eine Lambda-Funktion als Reaktion auf CodeCommit Repository-Ereignisse zu erstellen, z. B. wenn jemand einen Commit in Ihr Repository überträgt.

Um einen Trigger für eine Lambda-Funktion zu erstellen
  1. Öffnen Sie einen Texteditor und erstellen Sie eine JSON-Datei mit folgenden Angaben:

    • Der Name der Lambda-Funktion.

    • Repository und Branches, die mit diesem Auslöser überwacht werden sollen. (Wenn keine Branches angegeben werden, gilt der Auslöser für alle Branches im Repository.)

    • Ereignisse, die diesen Auslöser aktivieren.

    Speichern Sie die Datei.

    Wenn Sie beispielsweise einen Trigger für ein Repository mit dem Namen erstellen möchten MyDemoRepo, der alle Repository-Ereignisse in einer Lambda-Funktion veröffentlicht, die MyCodeCommitFunctionnach zwei Zweigen benannt ist, main und preprod:

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction", "customData": "", "branches": [ "main", "preprod" ], "events": [ "all" ] } ] }

    In der JSON-Datei muss für jeden Auslöser eines Repositorys ein Auslöserblock vorhanden sein. Wenn Sie für ein Repository mehr als einen Auslöser erstellen möchten, fügen Sie in der JSON-Datei weitere Blöcke hinzu. Beachten Sie, dass alle in dieser Datei erstellten Auslöser für das angegebene Repository gelten. Es ist nicht möglich, Auslöser für verschiedene Repositorys in einer JSON-Datei zu erstellen. Wenn Sie beispielsweise zwei Auslöser für ein Repository erstellen möchten, können Sie eine JSON-Datei mit zwei Auslöserblöcken erstellen. Im folgenden Beispiel sind im zweiten Auslöserblock keine Branches angegeben, daher gilt dieser Auslöser für alle Branches:

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction", "customData": "", "branches": [ "main", "preprod" ], "events": [ "all" ] }, { "name": "MyOtherLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyOtherCodeCommitFunction", "customData": "", "branches": [], "events": [ "updateReference", "deleteReference" ] } ] }

    Sie können Auslöser für bestimmte Ereignisse erstellen, z. B. wenn ein Commit per Push an ein Repository übertragen wird. Zu den Ereignistypen zählen:

    • all für alle Ereignisse im angegebenen Repository und den angegebenen Branches

    • updateReference für Fälle, in denen Commits per Push an das angegebene Repository und die angegebenen Branches übertragen werden

    • createReference für Fälle, in denen in dem angegebenen Repository ein neuer Branch oder ein neues Tag erstellt wird

    • deleteReference für Fälle, in denen in dem angegebenen Repository ein Branch oder ein Tag gelöscht wird

    Anmerkung

    Sie können in einem Auslöser mehrere Ereignistypen verwenden. Wenn Sie all angeben, können Sie allerdings keine anderen Ereignisse angeben.

    Geben Sie im Terminal oder in der Eingabeaufforderung aws codecommit put-repository-triggers help ein, um eine vollständige Liste der gültigen Ereignistypen anzuzeigen.

    Darüber hinaus können Sie in customData eine Zeichenfolge einschließen (z. B. den Namen eines IRC-Kanal, den Entwickler verwenden, wenn Sie die Entwicklung in diesem Repository besprechen). Dies ist ein Zeichenfolgenfeld. Es kann nicht zur Übergabe dynamischer Parameter verwendet werden. Diese Zeichenfolge wird als Attribut an die CodeCommit JSON-Datei angehängt, die als Antwort auf den Trigger zurückgegeben wird.

  2. (Optional) Führen Sie an einem Terminal oder an einer Eingabeaufforderung den Befehl test-repository-triggers aus. Mit dem Folgenden wird beispielsweise getestet, ob die JSON-Datei mit dem Namen trigger.json gültig ist und die Lambda-Funktion auslösen CodeCommit kann. Dieser Test verwendet Beispieldaten, um die Funktion auszulösen, wenn keine echten Daten vorhanden sind.

    aws codecommit test-repository-triggers --cli-input-json file://trigger.json

    Bei erfolgreicher Ausführung gibt dieser Befehl etwa wie folgt aussehende Informationen zurück:

    { "successfulExecutions": [ "MyLambdaFunctionTrigger" ], "failedExecutions": [] }
  3. Führen Sie in einem Terminal oder einer Befehlszeile den Befehl aus, in dem der put-repository-triggers Trigger erstellt werden soll. CodeCommit Sie können beispielsweise eine JSON-Datei mit dem Namen trigger.json verwenden, um den Auslöser zu erstellen:

    aws codecommit put-repository-triggers --cli-input-json file://trigger.json

    Dieser Befehl gibt eine Konfigurations-ID wie die folgende zurück:

    { "configurationId": "0123456-I-AM-AN-EXAMPLE" }
  4. Führen Sie zum Anzeigen der Konfiguration des Auslösers den Befehl get-repository-triggers aus und geben Sie dabei den Namen des Repositorys an:

    aws codecommit get-repository-triggers --repository-name MyDemoRepo

    Dieser Befehl gibt die Struktur aller Auslöser zurück, die für das Repository konfiguriert sind, ähnlich folgendem Beispiel:

    { "configurationId": "0123456-I-AM-AN-EXAMPLE", "triggers": [ { "events": [ "all" ], "destinationArn": "arn:aws:lambda:us-east-1:111122223333:MyCodeCommitFunction", "branches": [ "main", "preprod" ], "name": "MyLambdaFunctionTrigger", "customData": "Project ID 12345" } ] }
  5. Erstellen Sie einen Commit und übertragen Sie ihn per Push an das Repository, für das Sie den Auslöser konfiguriert haben, um die Funktion des Auslösers zu prüfen. Sie sollten eine Antwort der Lambda-Funktion auf der Registerkarte Überwachung für diese Funktion in der Lambda-Konsole sehen.