Erstellen einer externe Funktion mit einer AWS-CloudFormation-Vorlage

In diesem Dokument wird beispielhaft gezeigt, wie Sie eine externe Funktion auf AWS unter Verwendung einer CloudFormation-Vorlage erstellen. Wenn Sie die Vorlage anpassen möchten, können Sie mehr über AWS CloudFormation erfahren.

Snowflake bietet eine Vorlage, mit der Sie beginnen können. Diese Vorlage verbirgt einige Details des Erstellungsprozesses und codiert einige Namen (z. B. den Stagingbereichsnamen) und Funktionen fest. Wenn Sie bereit sind, Ihre eigene benutzerdefinierte externe Funktion zu erstellen, können Sie entweder eine Kopie der Vorlage anpassen, oder Sie können die flexiblere Anleitung unter Erstellen einer anpassbaren externen Funktion auf AWS nutzen.

Unter diesem Thema:

Siehe auch:

Einführung

Die CloudFormation-Vorlage führt beim Erstellen einer externen Funktion die beiden folgenden Schritte aus:

  • Erstellen des Remotedienstes (z. B. AWS Lambda).

  • Erstellen und Konfigurieren des Proxydienstes (z. B. Amazon API Gateway).

Mit der Vorlage werden auch folgende Schritte ausgeführt:

  • Erstellen von zwei IAM-Rollen (eine für Lambda und eine für das API Gateway).

  • Konfigurieren einer Ressourcenrichtlinie für das API Gateway.

Die Vorlage steht unter https://github.com/Snowflake-Labs/sfguide-external-functions-examples/tree/main/DeploymentTemplates/aws/BasicSetup.yaml zur Verfügung.

Voraussetzungen

Sie benötigen:

  • Ein Konto mit AWS, einschließlich Berechtigungen für:

    • AWS-Rollen über IAM (Identitäts- und Zugriffsverwaltung) erstellen

    • AWS-Lambda-Funktionen erstellen

    • API Gateway-Endpunkte erstellen

  • Ein Snowflake-Konto, in dem Sie über ACCOUNTADMIN-Berechtigungen oder eine Rolle mit der Berechtigung CREATE INTEGRATION verfügen.

In diesem Dokument wird davon ausgegangen, dass Sie ein erfahrener AWS-Administrator sind.

Arbeitsblatt

Wenn Sie Ihre externe Funktion erstellen, sollten Sie sich bestimmte Informationen, die Sie eingeben, notieren (z. B. die API Gateway-URL), damit Sie diese Informationen in nachfolgenden Schritten verwenden können. Das Arbeitsblatt unten hilft Ihnen, diese Informationen festzuhalten.

==============================================================================================
=========================================== Worksheet ========================================
==============================================================================================

New IAM Role Name........: _____________________________________________
New IAM Role ARN.........: _____________________________________________
Resource Invocation URL..: _____________________________________________
API_AWS_IAM_USER_ARN.....: _____________________________________________
API_AWS_EXTERNAL_ID......: _____________________________________________

Schritt 1: AWS Lambda und API Gateway unter Verwendung der Vorlage erstellen

  1. Öffnen Sie die AWS-Managementkonsole.

  2. Suchen Sie über die obere Suchleiste nach CloudFormation.

  3. Klicken Sie unter „Services“ auf CloudFormation.

  4. Klicken Sie auf Create stack.

    Wenn Sie die Wahl zwischen With new resources (standard) oder With existing resources (import resources) haben, dann wählen Sie With new resources (standard) aus.

  5. Wählen Sie auf der Seite Create stack unter Prepare template die Option Template is ready aus.

  6. Wählen Sie Upload a template file aus.

  7. Wählen Sie Choose file aus.

  8. Navigieren Sie zu dem Verzeichnis, das Ihre Kopie der Vorlage enthält, und wählen Sie dann diese Vorlage aus.

  9. Klicken Sie auf Next, um die Seite zu erreichen, auf der Sie die Namen für Rollen usw. eingeben.

    Bemerkung

    Die Vorlage verwendet für einige Ressourcen Standardnamen. Sie können die Namen ändern.

  10. Geben Sie einen Namen für den Stapel (Stack) ein.

  11. Geben Sie einen Namen für die API Gateway IAM-Rolle ein (Parameter apiGatewayIAMRoleName). Dies ist die von Snowflake übernommene Rolle für die Autorisierung mit dem API Gateway. Stellen Sie sicher, dass diese Rolle nicht bereits vorhanden ist, da die Vorlage sonst versucht, die vorhandene Rolle zu aktualisieren.

    Notieren Sie sich den Rollennamen auf dem Arbeitsblatt unter „New IAM Role Name“.

  12. Geben Sie einen Namen für die Lambda Execution-Rolle ein (Parameter lambdaExecutionRoleName). Diese Rolle wird vom Lambda-Dienst zum Hinzufügen von CloudWatch-Protokollen verwendet. Stellen Sie sicher, dass diese Rolle nicht bereits vorhanden ist, da die Vorlage sonst versucht, die vorhandene Rolle zu aktualisieren.

  13. Klicken Sie auf Next.

    Diese Seite bietet einige erweiterte Optionen für die Bereitstellung von Vorlagen.

    1. Legen Sie optional erweiterte Optionen fest, wie z. B. die Stapelrichtlinie. (Diese Optionen werden in der Regel für Demonstrationen nicht benötigt.)

    2. Klicken Sie auf Next.

  14. Scrollen Sie auf der Überprüfungsseite bis zum Ende, und bestätigen Sie, dass die CloudFormation-Vorlage möglicherweise IAM-Ressourcen mit benutzerdefinierten Namen erstellt. Dies ist erforderlich, weil die Vorlage zwei IAM-Rollen als Teil der Bereitstellung erstellt.

  15. Klicken Sie auf Create stack.

Die Bereitstellung dauert einige Sekunden. Sobald die Bereitstellung abgeschlossen ist, werden die erstellten Ressourcen auf der Registerkarte Resources aufgelistet.

Schritt 2: API-Integration und externe Funktion erstellen

Nachdem Sie den Remotedienst und den Proxydienst erstellt haben, müssen Sie die API-Integration und die externe Funktion erstellen und dann zu dieser Seite zurückkehren. Um die API-Integration und die externe Funktion zu erstellen, benötigen Sie die API Gateway-URL, die Sie durch Ausführung der Schritte unten erhalten.

Nachdem die Bereitstellung abgeschlossen ist, sollten Sie sich auf der Registerkarte Events für den neu erstellten Stapel befinden.

  1. Klicken Sie auf die Registerkarte Outputs.

  2. Notieren Sie sich den Wert von resourceInvocationUrl im Feld „Resource Invocation URL“ des Arbeitsblatts.

  3. Notieren Sie sich den Wert von awsRoleArn im Feld „New IAM Role ARN“ des Arbeitsblatts.

  4. Wenn Sie die API-Integration erstellen, verwenden Sie die „Resource Invocation URL“ als Wert für api_allowed_prefixes.

  5. Wenn Sie die externe Funktion erstellen, verwenden Sie die „Resource Invocation URL“ als invocation_URL.

Führen Sie anhand der obigen Informationen die Schritte in den unten stehenden Links aus:

  1. API-Integration erstellen

  2. Vertrauensstellung zwischen Snowflake und der neuen IAM-Rolle einrichten

  3. Externe Funktion erstellen

Kehren Sie dann zu dieser Seite zurück.

Schritt 3: Funktion aufrufen

Testen Sie die Funktion, indem Sie die folgenden Anweisungen ausführen:

Externe Funktion aufrufen

Problembehandlung

Erstellung des CloudFormation-Stapels schlägt fehl

Mögliche Ursache

Sie verfügen nicht über die erforderlichen Berechtigungen zum Erstellen der in der CloudFormation-Vorlage angegebenen Ressourcen. Öffnen Sie die Registerkarte Events des Stapels, um die Fehlerdetails zu prüfen.

Schauen Sie auch auf die Seite zur Problembehandlung von externen AWS-Funktionen, auf der Sie weitere Tipps zur Problembehandlung finden.