Amazon SNSトピックに通知を送信する通知統合の作成¶
Amazon SNSトピックに通知を送信するには、そのトピック用の通知統合を作成する必要があります。これを実行するには、
注釈
現在この機能は、 AWSでホストされているSnowflakeアカウントに限定されています。
Amazon SNS トピックの作成¶
AWSアカウントにSNSトピックを作成して、すべてのエラーメッセージを処理します。SNS トピックのAmazonリソースネーム(ARN)を記録します。
注釈
SNS の標準トピックのみをサポートしています。エラー通知で使用する SNS FIFO (先入れ先出し)トピックは作成しないでください。現在、 FIFO トピックに送信されたエラー通知は警告なしで失敗します。
リージョン 間で通知を送信する際に遅延を低減し、 データエグレス の料金を回避するには、Snowflakeアカウントと同じリージョンに SNS トピックを作成することをお勧めします。
手順については、 SNS ドキュメントの Amazon SNS トピック の作成をご参照ください。
IAM ポリシーの作成¶
SNS トピックに公開するための権限を付与する、 AWS Identity and Access Management(IAM)ポリシーを作成します。ポリシーは、次のアクションを定義します。
sns:publish
:SNSトピックに公開します。
AWS 管理コンソールにログインします。
ホームダッシュボードから、 Identity & Access Management (IAM)を選択します。
左側のナビゲーションペインから Account settings を選択します。
Security Token Service Regions リストを展開し、アカウントがある 地域 に対応する AWS 地域を見つけ、ステータスが Inactive の場合は Activate を選択します。
左側のナビゲーションペインから Policies を選択します。
Create Policy を選択します。
JSON タブを選択します。
SNS トピックで実行できるアクションを定義するポリシードキュメントを追加します。
次のテキストをコピーしてポリシーエディターに貼り付けます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": "<sns_topic_arn>" } ] }
sns_topic_arn
を、先に作成した SNS トピック の ARN に置き換えます。Review policy を選択します。
ポリシー名(例:
snowflake_sns_topic
)とオプションの説明を入力して、 Create policy を選択します。
AWS IAM ロールの作成¶
SNS トピックに権限を割り当てる AWS IAM ロールを作成します。
AWS 管理コンソールにログインします。
ホームダッシュボードから、 Identity & Access Management (IAM)を選択します。
左側のナビゲーションペインから Roles を選択します。
Create role を選択します。
信頼できるエンティティタイプとして Another AWS account を選択します。
Account ID フィールドに、自分の AWS アカウントID を一時的に入力します。
Require external ID オプションを選択します。このオプションを使用すると、Amazonアカウントリソース(つまり SNS)に対するアクセス許可をサードパーティ(つまりSnowflake)に付与できます。
今は、
0000
などのダミー ID を入力します。後で、信頼関係を変更し、アカウント用に生成されたSnowflake IAM ユーザーのダミー ID を外部 ID に置き換えます。IAM ロールの信頼ポリシーの条件により、Snowflakeユーザーは、後で作成する通知統合オブジェクトを使用してロールを引き受けることができます。Next を選択します。
先ほど作成したポリシー を探し、このポリシーを選択します。
Next を選択します。
ロールの名前と説明を入力し、 Create role を選択します。
ロールの概要ページにある Role ARN 値を記録します。この値は、後にある1つ以上のステップで指定します。
通知統合を作成する¶
CREATE NOTIFICATION INTEGRATION コマンドを実行して、通知統合を作成します。統合は、作成した SNS トピックを参照するSnowflakeオブジェクトです。
コマンドを実行する際には、これらのパラメーターを以下の値に設定します。
AWS_SNS_TOPIC_ARN を、 以前に記録した SNS トピック ARN に設定します。
AWS_SNS_ROLE_ARN を、 先ほど記録した IAM ロール ARN に設定します。
注釈
AWS_SNS_ROLE_ARN の値は大文字と小文字を区別します。AWS アカウントで指定されている正確な値を使用してください。
例:
CREATE NOTIFICATION INTEGRATION my_notification_int
ENABLED = TRUE
DIRECTION = OUTBOUND
TYPE = QUEUE
NOTIFICATION_PROVIDER = AWS_SNS
AWS_SNS_TOPIC_ARN = 'arn:aws:sns:us-east-2:111122223333:sns_topic'
AWS_SNS_ROLE_ARN = 'arn:aws:iam::111122223333:role/error_sns_role';
SNS トピックへのSnowflakeアクセスの許可¶
IAMユーザーARNとSNSトピック外部IDを取得する¶
DESCRIBE INTEGRATION コマンドを実行して、作成したばかりの通知統合のプロパティを表示します。
例えば、
my_notification_int
という名前の通知統合のプロパティを表示するには:DESC NOTIFICATION INTEGRATION my_notification_int;
+---------------------------+-------------------+------------------------------------------------------+----------------------+ | property | property_type | property_value | property_default | +---------------------------+-------------------+------------------------------------------------------+----------------------+ | ENABLED | Boolean | true | false | | NOTIFICATION_PROVIDER | String | AWS_SNS | | | DIRECTION | String | OUTBOUND | INBOUND | | AWS_SNS_TOPIC_ARN | String | arn:aws:sns:us-east-2:111122223333:myaccount | | | AWS_SNS_ROLE_ARN | String | arn:aws:iam::111122223333:role/myrole | | | SF_AWS_IAM_USER_ARN | String | arn:aws:iam::123456789001:user/c_myaccount | | | SF_AWS_EXTERNAL_ID | String | MYACCOUNT_SFCRole=2_a123456/s0aBCDEfGHIJklmNoPq= | | +---------------------------+-------------------+------------------------------------------------------+----------------------+
以下のプロパティの値を記録します。
SF_AWS_IAM_USER_ARN
アカウント用に作成されたSnowflake IAM ユーザーの ARN。Snowflakeアカウントのユーザーは、通知統合を使用してこのユーザーの外部 ID を送信することにより、 IAM ロールを作成する で作成したロールを引き受けます。
SF_AWS_EXTERNAL_ID
使用するアカウント用に作成されたSnowflake IAM ユーザーの外部 ID。
次のステップでは、 IAM ロールの信頼関係をこれらの値で更新します。
DIRECTION プロパティは、Snowflakeに関するクラウドメッセージングの方向を示していることに注意してください。
IAMロールの信頼関係を変更する¶
AWS 管理コンソールにログインします。
ホームダッシュボードから、 Identity & Access Management (IAM)を選択します。
左側のナビゲーションペインから Roles を選択します。
先ほどに作成したロール を選択します。
Trust relationships タブを選択します。
Edit trust relationship を選択します。
以前に記録した通知統合プロパティの値 を使用するようにポリシードキュメントを修正します。
IAM ロールのポリシードキュメント
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "<sf_aws_iam_user_arn>" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<sf_aws_external_id>" } } } ] }
条件:
sf_aws_iam_user_arn
は、記録した SF_AWS_IAM_USER_ARN 値です。sf_aws_external_id
は、記録した SF_AWS_EXTERNAL_ID 値です。
Update Trust Policy を選択します。変更が保存されます。