Planen einer externen Funktion für AWS

Unter diesen Themen finden Sie Unterstützung bei der Vorbereitung zum Erstellen einer externen Funktion für AWS (Amazon Web Services) entweder über die AWS Management Console oder mithilfe einer AWS-CloudFormation-Vorlage, die von Snowflake bereitgestellt wird.

Unter diesem Thema:

Voraussetzungen

In dieser Anleitung wird davon ausgegangen, dass Sie ein erfahrener Benutzer der AWS Management Console sind.

Sie benötigen:

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

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

    • Erstellen von AWS-Lambda-Funktionen

    • Erstellen von API Gateway-Endpunkten

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

  • Wenn Sie einen privaten Endpunkt verwenden möchten, benötigen Sie die ID Ihrer Virtual Private Cloud (VPC). (Hinweis: Sie benötigen eine VPC-ID, keine VPC-Endpunkt-ID. VPC-Endpunkt-IDs können sich im Verlauf der Zeit ändern).

    Wenn Sie Ihre VPC-ID noch nicht kennen, können Sie diese durch Ausführen des folgenden Befehls auf der Snowflake-Weboberfläche ermitteln:

    select system$get_snowflake_platform_info();
    
    Copy

    Die Ausgabe sollte ungefähr wir folgt aussehen:

    {"snowflake-vpc-id":["vpc-12345678"]}
    
    Copy

    Notieren Sie sich die VPC-ID. Nachdem Sie entschieden haben, ob Sie die externe Funktion mithilfe der AWS Management Console oder mit einer AWS-CloudFormation-Vorlage erstellen, kopieren Sie die VPC-ID in das entsprechende Feld auf dem Arbeitsblatt:

Wählen Sie Ihren Endpunkttyp aus: Regionaler Endpunkt vs. Privater Endpunkt

Der Zugriff auf einen Proxydienst (wie das Amazon API Gateway) erfolgt über eine URI, die manchmal auch als „Endpunkt“ bezeichnet wird. Gemäß der Anleitung zum Erstellen Ihres Amazon API Gateway werden Sie aufgefordert, einen der folgenden Endpunkttypen zu wählen:

  • Einen regionalen Endpunkt

  • Einen privaten Endpunkt

Die folgenden Informationen können Ihnen bei der Wahl des Endpunkttyps helfen.

Auf einen regionalen Endpunkt kann über AWS-Regionen oder sogar über Cloudplattformen hinweg zugegriffen werden. Ihre Snowflake-Instanz, Ihr Proxydienst und Ihr Remotedienst können sich alle in verschiedenen Regionen oder sogar auf verschiedenen Cloudplattformen befinden. Beispielsweise könnte eine Snowflake-Instanz, die auf Azure ausgeführt wird, Anforderungen an einen regionalen Amazon API Gateway-Endpunkt senden, der seinerseits Daten an einen Remotedienst weiterleiten könnte, der auf GCP ausgeführt wird.

Ein privater Endpunkt kann so konfiguriert werden, dass der Zugriff nur innerhalb einer Region möglich ist. Beispielsweise kann ein privater Endpunkt so konfiguriert sein, dass der Zugriff nur von einer Snowflake VPC (Virtual Private Cloud) in der gleichen AWS-Region möglich ist. Für die Kommunikation zwischen einer Snowflake VPC und einem privaten Endpunkt wird AWS PrivateLink verwendet.

Weitere Einzelheiten zu den Typen von Endpunkten auf AWS finden Sie unter:

Wenn Sie einen privaten Endpunkt verwenden möchten und sich nicht sicher sind, welche Region Sie verwenden, können Sie Ihre Region feststellen, indem Sie eine der folgenden Aktionen ausführen:

  • Rufen Sie die SQL-Funktion CURRENT_REGION() auf (z. B. SELECT CURRENT_REGION()).

  • Überprüfen Sie den Hostnamen Ihres Snowflake-Kontos, der normalerweise den Cloudanbieter und die Region angibt. Weitere Informationen zu Hostnamen von Konten, Regionen und Cloudanbieter finden Sie unter Unterstützte Cloudregionen.

Um einen privaten Endpunkt verwenden zu können, muss Ihr Konto die folgenden Anforderungen erfüllen:

  • Business Critical Edition (oder höhere) von Snowflake.

Auswählen der Methode zum Erstellen der externen Funktion

Snowflake stellt Anleitungen für zwei Methoden zum Erstellen einer externen Funktion auf AWS bereit:

  • AWS Management Console-Weboberfläche

  • AWS-CloudFormation-Vorlage, die von Snowflake bereitgestellt wird

AWS Management Console

Sie können die AWS Management Console verwenden, um eine Lambda-Funktion (als Remotedienst) und eine Amazon API Gateway-Instanz (als Proxydienst) zu erstellen. Wenn Sie diese Methode wählen, verwenden Sie auch die AWS Management Console, um sicherheitsbezogene Einstellungen zu konfigurieren.

Die Anleitung zum Erstellen einer externen Funktion über die AWS Management Console enthält ein Beispiel für eine Lambda-Funktion und Details zum Erstellen eines Basis-API-Gateways:

  • Erstanwender können die Anweisungen mit wenigen oder ohne Änderungen verwenden.

  • Erfahrene Benutzer können die Anweisungen und die Lambda-Beispielfunktion als Ausgangspunkt für die Erstellung einer benutzerdefinierten Lambda-Funktion und eines benutzerspezifisch konfigurierten API-Gateways verwenden.

AWS-CloudFormation-Vorlage

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

  • Erstellen des Remotedienstes (eine AWS Lambda-Funktion)

  • 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 die Lambda-Funktion und eine für das API Gateway)

  • Konfigurieren einer Ressourcenrichtlinie für das API-Gateway

Vorbereiten der Verwendung der AWS Management Console

Erstellen eines Arbeitsblatts zur Nachverfolgung der erforderlichen Informationen

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

===========================================================================
================ Tracking Worksheet: AWS Management Console ===============
===========================================================================

****** Step 1: Information about the Lambda Function (remote service) *****

Your AWS Account ID: ______________________________________________________

Lambda Function Name: _____________________________________________________


******** Step 2: Information about the API Gateway (proxy Service) ********

New IAM Role Name: ________________________________________________________

New IAM Role ARN: _________________________________________________________

Snowflake VPC ID (optional): ______________________________________________

New API Name: _____________________________________________________________

API Gateway Resource Name: ________________________________________________

Resource Invocation URL: __________________________________________________

Method Request ARN: _______________________________________________________


*** Step 3: Information about the API Integration and External Function ***

API Integration Name: _____________________________________________________

API_AWS_IAM_USER_ARN: _____________________________________________________

API_AWS_EXTERNAL_ID: ______________________________________________________

External Function Name: ___________________________________________________
Copy

Vorbereiten der Verwendung der AWS-CloudFormation-Vorlage

Vorlage herunterladen

Die Vorlage steht im Vorlagenverzeichnis des Snowflake-Repository von GitHub zum Download bereit.

Erstellen eines Arbeitsblatts zur Nachverfolgung der erforderlichen Informationen

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

===========================================================================
================== Tracking Worksheet: CloudFormation Template ============
===========================================================================

New IAM Role Name: ________________________________________________________

New IAM Role ARN: _________________________________________________________

Resource Invocation URL: __________________________________________________

API_AWS_IAM_USER_ARN: _____________________________________________________

API_AWS_EXTERNAL_ID: ______________________________________________________
Copy

Zusätzliche Ressourcen für die Erstellung externer Funktionen auf AWS

Wenn Sie bereit sind, einen eigenen Remotedienst für Ihre eigene externe Funktion zu erstellen, sollten Sie sich die Beispiele für Remotedienste auf Basis von Lambda-Funktionen ansehen, die unter The Snowflake Labs zur Verfügung stehen.