Amazon SNS のSnowpipeエラー通知の有効化¶
このトピックでは、Snowpipeエラー通知を Amazon Simple Notification Service (SNS)サービスにプッシュする手順について説明します。SNS は、パブリッシュ/サブスクライブメッセージングサービスです。
この機能は、次に挙げる型のロードのエラー通知をプッシュできます。
自動インジェストSnowpipe。
Snowpipe
insertFilesREST API エンドポイントへの呼び出し。Kafka用Snowflakeコネクタを使用したApache KafkaとSnowpipeインジェスチョンメソッド併用のロード限定。
このトピックの内容:
クラウドプラットフォームのサポート¶
現在この機能は、Amazon Web Services(AWS)でホストされているSnowflakeアカウントに限定されています。Snowpipeは、サポートされているクラウドストレージサービスのファイルからデータを読み込むことができます。ただし、SNSへのプッシュ通知は、AWSでホストされているSnowflakeアカウントでのみサポートされます。
メモ¶
この機能は、通知統合オブジェクトを使用して実装されます。通知統合は、Snowflakeとサードパーティのクラウドメッセージキューサービス間のインターフェイスを提供するSnowflakeオブジェクトです。単一の通知統合で複数のパイプをサポートできます。
Snowflakeは、エラー通知のメッセージ配信が最低1回あることを保証します(つまり、最低1回の試行が成功することを保証するためにメッセージ配信が複数回試行されることにより、メッセージが重複する可能性があります)。
エラー通知の有効化¶
通知統合の作成¶
Amazon SNSトピックに通知を送信する通知統合の作成 をご参照ください。
パイプでエラー通知を有効にする¶
単一の通知統合は、複数のパイプで共有できます。エラーメッセージの本文は、パイプ、外部ステージとパス、およびエラーが発生したファイルなどの詳細を識別します。
パイプのエラー通知を有効にするには、 ERROR_INTEGRATION パラメーター値を指定します。
注釈
通知統合を参照するパイプを作成または変更するには、通知統合に対する USAGE 権限を持つロールが必要です。さらに、ロールには、スキーマに対する CREATE PIPE 権限、またはパイプに対する OWNERSHIP 権限のいずれかが必要です。
Operating on an object in a schema requires at least one privilege on the parent database and at least one privilege on the parent schema.
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
新しいパイプ¶
CREATE PIPE を使用して新しいパイプを作成します。自動データロードの構成(つまり、自動インジェストSnowpipe)には、追加のパイプパラメーターが必要であることに注意してください。手順については、 クラウドメッセージングを使用した連続データロードの自動化 をご参照ください。
CREATE PIPE <name>
[ AUTO_INGEST = TRUE | FALSE ]
ERROR_INTEGRATION = <integration_name>
AS <copy_statement>
条件:
ERROR_INTEGRATION = <統合名>通知統合を作成する で作成した通知統合の名前。
次の例は、エラー通知と自動データロードの両方をサポートする CREATE PIPE ステートメントを示しています。
CREATE PIPE mypipe
AUTO_INGEST = TRUE
ERROR_INTEGRATION = my_notification_int
AS
COPY INTO mydb.public.mytable
FROM @mydb.public.mystage;
既存のパイプ¶
ALTER PIPE を使用して既存のパイプを変更します。
ALTER PIPE <name> SET ERROR_INTEGRATION = <integration_name>;
<integration_name> は、 通知統合を作成する で作成した通知統合の名前です。
例:
ALTER PIPE mypipe SET ERROR_INTEGRATION = my_notification_int;
エラー通知のメッセージペイロード¶
エラーメッセージの本文は、パイプとロード中に発生したエラーを識別します。
以下は、Snowpipeエラーを説明するサンプルのメッセージペイロードです。ペイロードには、1つ以上のエラーメッセージを含めることができます。
{\"version\":\"1.0\",\"messageId\":\"a62e34bc-6141-4e95-92d8-f04fe43b43f5\",\"messageType\":\"INGEST_FAILED_FILE\",\"timestamp\":\"2021-10-22T19:15:29.471Z\",\"accountName\":\"MYACCOUNT\",\"pipeName\":\"MYDB.MYSCHEMA.MYPIPE\",\"tableName\":\"MYDB.MYSCHEMA.MYTABLE\",\"stageLocation\":\"s3://mybucket/mypath\",\"messages\":[{\"fileName\":\"/file1.csv_0_0_0.csv.gz\",\"firstError\":\"Numeric value 'abc' is not recognized\"}]}
ペイロードの値を処理するには、文字列を JSON オブジェクトに解析する必要があることに注意してください。