Beispiel: Erstellen Sie einen AWS CodeCommit Trigger für eine Funktion AWS Lambda - 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 AWS CodeCommit Trigger für eine Funktion AWS Lambda

Sie können einen Trigger für ein CodeCommit Repository erstellen, sodass Ereignisse im Repository eine Lambda-Funktion aufrufen. In diesem Beispiel erstellen Sie eine Lambda-Funktion, die die URL zurückgibt, die zum Klonen des Repositorys in ein CloudWatch Amazon-Protokoll verwendet wurde.

So erstellen Sie die Lambda-Funktion:

Wenn Sie die Lambda-Konsole verwenden, um die Funktion zu erstellen, können Sie auch einen CodeCommit Trigger für die Lambda-Funktion erstellen. Die folgenden Schritte beinhalten ein Beispiel für eine Lambda-Funktion. Das Beispiel ist in zwei Sprachen verfügbar: JavaScript und Python. Die Funktion gibt die URLs, die zum Klonen eines Repositorys verwendet wurden, in ein CloudWatch Protokoll zurück.

So erstellen Sie eine Lambda-Funktion mithilfe eines Lambda-Blueprints
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die AWS Lambda Konsole unter https://console.aws.amazon.com/lambda/.

  2. Wählen Sie auf der Seite Lambda-Funktionen die Option Create function aus. (Wenn Sie Lambda noch nicht verwendet haben, wählen Sie Jetzt starten.)

  3. Wählen Sie auf der Seite Create function die Option Author from scratch. Geben Sie im Feld Funktionsname beispielsweise MyLambdaFunctionforCodeCommiteinen Namen für die Funktion ein. Wählen Sie unter Runtime (Laufzeit) die Sprache aus, die Sie verwenden möchten, um Ihre Funktion zu schreiben, und wählen Sie dann Create function (Funktion erstellen).

  4. Wählen Sie auf der Registerkarte Configuration (Konfiguration) die Option Add trigger (Auslöser hinzufügen) aus.

  5. Wählen Sie in der Trigger-Konfiguration eine Option CodeCommitaus der Dropdownliste Dienste aus.

    Erstellen eines Repositorys mit der Konsole

    • Wählen Sie unter Repository-Name den Namen des Repositorys aus, für das Sie einen Trigger konfigurieren möchten, der die Lambda-Funktion als Reaktion auf Repository-Ereignisse verwendet.

    • 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 AWS CodeCommit Repository erstellt, entfernen Sie Alle Repository-Ereignisse und wählen Sie dann Branch oder Tag erstellen aus.

    • Wenn der Auslöser für alle Branches des Repositorys gelten soll, wählen Sie unter Branches die Option All branches aus. Wählen Sie andernfalls Specific branches aus. Der Standard-Branch für das Repository wird standardmäßig hinzugefügt. Sie können diesen Branch behalten oder aus der Liste entfernen. Aus der Liste der Repository-Branches können Sie bis zu 10 Branch-Namen auswählen.

    • (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.

    Wählen Sie Hinzufügen aus.

  6. Wählen Sie auf der Seite Configuration (Konfiguration) unter Function Code (Funktionscode) und Code entry type (Codeeingabetyp) die Option Edit Code Inline (Code inline bearbeiten) aus. Wählen Sie unter Runtime (Laufzeit)die Option Node.js aus. Wenn Sie ein Python-Funktionsbeispiel erstellen möchten, wählen Sie Python aus.

  7. Wählen Sie unter Code entry type die Option Edit code inline aus und ersetzen Sie den hello-world-Code durch eines der folgenden Beispiele.

    Für Node.js:

    import { CodeCommitClient, GetRepositoryCommand, } from "@aws-sdk/client-codecommit"; const codecommit = new CodeCommitClient({ region: "your-region" }); /** * @param {{ Records: { codecommit: { references: { ref: string }[] }, eventSourceARN: string }[]} event */ export const handler = async (event) => { // Log the updated references from the event const references = event.Records[0].codecommit.references.map( (reference) => reference.ref, ); console.log("References:", references); // Get the repository from the event and show its git clone URL const repository = event.Records[0].eventSourceARN.split(":")[5]; const params = { repositoryName: repository, }; try { const data = await codecommit.send(new GetRepositoryCommand(params)); console.log("Clone URL:", data.repositoryMetadata.cloneUrlHttp); return data.repositoryMetadata.cloneUrlHttp; } catch (error) { console.error("Error:", error); throw new Error( `Error getting repository metadata for repository ${repository}`, ); } };

    Für Python:

    import json import boto3 codecommit = boto3.client("codecommit") def lambda_handler(event, context): # Log the updated references from the event references = { reference["ref"] for reference in event["Records"][0]["codecommit"]["references"] } print("References: " + str(references)) # Get the repository from the event and show its git clone URL repository = event["Records"][0]["eventSourceARN"].split(":")[5] try: response = codecommit.get_repository(repositoryName=repository) print("Clone URL: " + response["repositoryMetadata"]["cloneUrlHttp"]) return response["repositoryMetadata"]["cloneUrlHttp"] except Exception as e: print(e) print( "Error getting repository {}. Make sure it exists and that your repository is in the same region as this function.".format( repository ) ) raise e
  8. Wählen Sie auf der Registerkarte Berechtigungen unter Ausführungsrolle die Rolle aus, um sie in der IAM-Konsole zu öffnen. Bearbeiten Sie die angefügte Richtlinie, um dem Repository, das für den Auslöser verwendet werden soll, eine GetRepository-Berechtigung zu erteilen.

Den Trigger für die Lambda-Funktion im AWS CodeCommit Repository anzeigen

Nachdem Sie die Lambda-Funktion erstellt haben, können Sie den Trigger in AWS CodeCommit anzeigen und testen. Beim Testen des Auslösers wird die Funktion als Reaktion auf die von Ihnen angegebenen Repository-Ereignisse ausgeführt.

So zeigen Sie den Trigger für die Lambda-Funktion an und testen ihn
  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 die Auslöser anzeigen möchten.

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

  4. Überprüfen Sie die Liste der Auslöser für das Repository. Sie sollten den Trigger sehen, den Sie in der Lambda-Konsole erstellt haben. Wählen Sie ihn aus der Liste aus und wählen Sie Test trigger (Trigger 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 AWS CodeCommit und der Lambda-Funktion korrekt konfiguriert haben.

  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 weiter zu überprüfen. Sie sollten eine Antwort der Lambda-Funktion auf der Registerkarte Überwachung für diese Funktion in der Lambda-Konsole sehen. Wählen Sie auf der Registerkarte Überwachung die Option Anmeldungen anzeigen aus. CloudWatch Die CloudWatch Konsole wird in einer neuen Registerkarte geöffnet und zeigt Ereignisse für Ihre Funktion an. Wählen Sie aus der Liste den Protokollstream mit dem Zeitpunkt aus, zu dem Sie den Commit per Push übertragen haben. Die angezeigten Ereignisdaten sollten wie folgt aussehen:

    START RequestId: 70afdc9a-EXAMPLE Version: $LATEST 2015-11-10T18:18:28.689Z 70afdc9a-EXAMPLE References: [ 'refs/heads/main' ] 2015-11-10T18:18:29.814Z 70afdc9a-EXAMPLE Clone URL: https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo END RequestId: 70afdc9a-EXAMPLE REPORT RequestId: 70afdc9a-EXAMPLE Duration: 1126.87 ms Billed Duration: 1200 ms Memory Size: 128 MB Max Memory Used: 14 MB