Konfigurieren Sie eine Katalogintegration für AWS Glue Iceberg REST¶
Folgen Sie den Schritten in diesem Thema, um eine Katalogintegration für den AWS Glue Iceberg REST-Endpunkt mit Signatureversion 4 (SigV4)-Authentifizierung zu erstellen.
Schritt 1: Zugriffsberechtigungen für den AWS Glue-Datenkatalog konfigurieren¶
Erstellen Sie eine IAM-Richtlinie für Snowflake für den Zugriff auf den AWS Glue Data Catalog. Verbinden Sie die Richtlinie mit einer IAM-Rolle, die Sie bei der Erstellung einer Katalogintegration angeben. Eine Anleitung dazu finden Sie unter Erstellen von IAM-Richtlinien und Ändern von Rollenberechtigungsrichtlinien im AWS-Benutzerhandbuch für die Identitäts- und Zugriffsverwaltung.
Beispiel für eine schreibgeschützte Richtlinie¶
Snowflake benötigt mindestens die folgenden Berechtigungen für den AWS Glue Data Catalog, um auf Informationen über den Glue Iceberg REST-Katalog zuzugreifen.
glue:GetCatalog
glue:GetDatabase
glue:GetDatabases
glue:GetTable
glue:GetTables
Die folgende Beispielrichtlinie (im JSON-Format) bietet die erforderlichen Berechtigungen für den Zugriff auf alle Tabellen in einer bestimmten Datenbank.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowGlueCatalogTableAccess",
"Effect": "Allow",
"Action": [
"glue:GetCatalog",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:GetTable",
"glue:GetTables"
],
"Resource": [
"arn:aws:glue:*:<accountid>:table/*/*",
"arn:aws:glue:*:<accountid>:catalog",
"arn:aws:glue:*:<accountid>:database/<database-name>"
]
}
]
}
Bemerkung
Sie können das
Resource
-Element dieser Richtlinie ändern, um die zulässigen Ressourcen weiter einzuschränken (z. B. Katalog, Datenbanken oder Tabellen). Weitere Informationen dazu finden Sie unter Von AWS Glue definierte RessourcentypenWenn Sie die Verschlüsselung für AWS Glue verwenden, müssen Sie die Richtlinie ändern, um AWS-KMS-Berechtigungen (AWS Key Management Service) hinzuzufügen. Weitere Informationen dazu finden Sie unter Einrichten der Verschlüsselung in AWS Glue.
Beispiel für eine Richtlinie zum Lesen und Schreiben¶
Die folgende Beispielrichtlinie (im JSON-Format) bietet die erforderlichen Berechtigungen für den Lese- und Schreibzugriff auf alle Tabellen in allen Datenbanken. Für die Konfiguration des Schreibzugriffs für extern verwaltete Tabellen verwenden Sie diese Richtlinie als Beispiel.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowGlueCatalogTableAccess",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"glue:GetCatalog",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:CreateDatabase",
"glue:DeleteDatabase",
"glue:GetTable",
"glue:GetTables",
"glue:CreateTable",
"glue:UpdateTable",
"glue:DeleteTable"
],
"Resource": [
"arn:aws:glue:*:<accountid>:table/*/*",
"arn:aws:glue:*:<accountid>:catalog",
"arn:aws:glue:*:<accountid>:database/*",
"arn:aws:s3:<external_volume_path>"
]
}
]
}
Bemerkung
Die Richtlinie muss den Zugriff auf Ihren Speicherort ermöglichen, damit der AWS Glue Catalog Metadaten in den Tabellenspeicherort schreiben kann.
Die Zeile
"arn:aws:glue:*:<accountid>:database/*"
imResource
-Element dieser Richtlinie gibt alle Datenbanken an. Dies ist erforderlich, wenn Sie aus Snowflake eine neue Datenbank in Glue mit dem Befehl CREATE SCHEMA erstellen möchten. Um den Zugriff auf eine einzelne Datenbank zu beschränken, können Sie den Namen der Datenbank angeben. Weitere Informationen zum Definieren von Ressourcen finden Sie unter Von AWS Glue definierte Ressourcentypen.Wenn Sie die Verschlüsselung für AWS Glue verwenden, müssen Sie die Richtlinie ändern, um AWS-KMS-Berechtigungen (AWS Key Management Service) hinzuzufügen. Weitere Informationen dazu finden Sie unter Einrichten der Verschlüsselung in AWS Glue.
(Optional) Zugriffssteuerung für Lake Formation konfigurieren¶
Wenn Sie AWS Lake Formation für eine fein abgestufte Zugriffssteuerung verwenden, stellen Sie sicher, dass Ihre Lake Formation-Konfiguration Snowflake den Zugriff auf Ihre Katalogobjekte und die zugrunde liegenden Daten ermöglicht.
Die IAM-Rolle, die Sie im vorherigen Schritt erstellt haben – die Rolle, die Sie in Snowflake angeben, wenn Sie eine Katalogintegration erstellen – muss die lakeformation:GetDataAccess
IAM-Berechtigung haben. Diese Berechtigung gewährt Lese- und Schreibzugriff auf die zugrunde liegenden Daten:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "lakeformation:GetDataAccess",
"Resource": "*"
}
]
}
Weitere Informationen dazu finden Sie unter Zugrunde liegende Datenzugriffssteuerung in der Dokumentation zu Lake Formation.
Sie müssen der IAM-Rolle auch Datenberechtigungen erteilen. Die Methode, mit der Sie Datenberechtigungen erteilen, hängt von der Einrichtung Ihrer Lake Formation ab. Sie könnten zum Beispiel die Methode der benannten Ressourcen verwenden, um AWS Glue-Objekten Berechtigungen zu erteilen, oder Sie verwenden eine Tag-basierte Zugriffssteuerung. Weitere Informationen und Anweisungen finden Sie in der AWS Lake Formation-Dokumentation.
Schritt 2: Katalogintegration in Snowflake erstellen¶
Erstellen Sie eine Katalogintegration für den Endpunkt AWS Glue Iceberg REST mit dem Befehl CREATE CATALOG INTEGRATION (Apache Iceberg™ REST). Geben Sie die IAM-Rolle an, die Sie konfiguriert haben. Für CATALOG_NAME
verwenden Sie Ihre AWS-Konto-ID.
CREATE CATALOG INTEGRATION glue_rest_catalog_int
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'rest_catalog_integration'
REST_CONFIG = (
CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg'
CATALOG_API_TYPE = AWS_GLUE
CATALOG_NAME = '123456789012'
)
REST_AUTHENTICATION = (
TYPE = SIGV4
SIGV4_IAM_ROLE = 'arn:aws:iam::123456789012:role/my-role'
SIGV4_SIGNING_REGION = 'us-west-2'
)
ENABLED = TRUE;
Wobei:
CATALOG_URI
ist der Dienstendpunkt für den Katalog AWS Glue Iceberg REST.CATALOG_NAME
ist die ID Ihres AWS-Kontos.
Weitere Informationen finden Sie unter CREATE CATALOG INTEGRATION (Apache Iceberg™ REST). Dort finden Sie auch Anweisungen für die Konfiguration einer Katalogintegration für AWS Glue.
Schritt 3: AWS-IAM-Benutzer und externe ID für Ihr Snowflake-Konto abrufen¶
Um Informationen über den AWS IAM-Benutzer und die externe ID für Ihr Snowflake-Konto abzurufen, führen Sie den Befehl DESCRIBE CATALOG INTEGRATION aus. Sie geben diese Informationen im nächsten Schritt an AWS weiter, um eine Vertrauensstellung einzurichten.
DESCRIBE CATALOG INTEGRATION glue_rest_catalog_int;
Notieren Sie die folgenden Werte:
Wert
Beschreibung
GLUE_AWS_IAM_USER_ARN
Der AWS-IAM-Benutzer, der für Ihr Snowflake-Konto erstellt wurde, in diesem Beispiel
arn:aws:iam::123456789001:user/abc1-b-self1234
. Snowflake stellt genau einen IAM-Benutzer für Ihr gesamtes Snowflake-Konto bereit. Alle Glue-Katalogintegrationen in Ihrem Konto verwenden diesen IAM-Benutzer.
GLUE_AWS_EXTERNAL_ID
Eine externe ID zum Einrichten einer Vertrauensstellung.
Schritt 4: AWS Glue-Datenkatalog IAM-Benutzerzugriff gewähren¶
Aktualisieren Sie die Vertrauensrichtlinie für die gleiche IAM-Rolle, die Sie beim Erstellen der Katalogintegration mit dem ARN angegeben haben (GLUE_AWS_ROLE_ARN
). Fügen Sie die Werte, die Sie sich im vorherigen Schritt notiert haben, zur Vertrauensrichtlinie hinzu.
Eine Anleitung dazu finden Sie unter Ändern einer Vertrauensrichtlinie.
Das folgende Beispiel für eine Richtlinie zeigt, wo die Werte GLUE_AWS_IAM_USER_ARN
und GLUE_AWS_EXTERNAL_ID
angegeben werden müssen:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "<glue_iam_user_arn>"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<glue_aws_external_id>"
}
}
}
]
}
Wobei:
glue_iam_user_arn
ist der WertGLUE_IAM_USER_ARN
, den Sie erfasst haben.
glue_aws_external_id
ist der WertGLUE_AWS_EXTERNAL_ID
, den Sie erfasst haben.
Bemerkung
Wenn Sie aus Sicherheitsgründen eine neue Katalogintegration erstellen (oder eine vorhandene Katalogintegration mit der Syntax CREATE OR REPLACE CATALOG INTEGRATION neu erstellen), hat die neue Katalogintegration eine andere externe ID und kann die Vertrauensstellung nicht auflösen, es sei denn, Sie ändern die Vertrauensrichtlinie mit der neuen externen ID.
Um zu überprüfen, ob Ihre Berechtigungen korrekt konfiguriert sind, erstellen Sie eine Iceberg-Tabelle, die diese Katalogintegration verwendet. Snowflake prüft erst dann, ob Ihre Berechtigungen korrekt eingestellt sind, wenn Sie eine Iceberg-Tabelle erstellen, die auf diese Katalogintegration verweist.
Nächste Schritte¶
Nachdem Sie eine Katalogintegration für AWS Glue Iceberg REST konfiguriert haben, können Sie eine Iceberg-Tabelle erstellen.