
【 Alteryx One 】 Alteryx Analytics Cloud 環境からSnowflake OAuth 接続を行う方法
こんにちは、業務効率化ソリューション部のikumiです。
今回は、Alteryx Analytics CloudZプラットフォーム(以下AAC)から、SnowflakeへのOAuth接続を作成する方法について記載していきます。
なお、Alteryx Oneに関する説明については以下のブログに詳しく記載されていますので、興味のある方は確認してみてください!
Snowflake OAuth 接続の作成方法
AlteryxでOAuth2.0クライアントを作成するために、まずはSnowflake側でOAuthクライアントアプリケーションを作成する必要があります。また、今回の接続方法は、接続するSnowflakeがパブリック サブネットでホストされている必要があり、 PrivateLinkを有効にしている場合、Snowflake OAuth接続はサポートされません。
Snowflake 側での作業
- SnowflakeでOAuth 2.0クライアントアプリを作成するために、ACCOUNTADMINロールで作業を行こなう
- ワークシートに移動し、以下のコマンドを実行しセキュリティ統合を作成
CREATE SECURITY INTEGRATION
<NAME> ##任意の名前
TYPE = OAUTH
OAUTH_CLIENT = CUSTOM
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://<ログインURL>/oauth2/callback' ##AACコールバックURI。https://us1.alteryxcloud.com/oauth2/callbackなど、自身の環境に置き換える
ENABLED = TRUE
OAUTH_ALLOW_NON_TLS_REDIRECT_URI = FALSE
PRE_AUTHORIZED_ROLES_LIST = ( 'ROLE_NAME' ) ##アクセスを許可するロールリスト
##BLOCKED_ROLES_LIST = ( 'ROLE_NAME' ) ##明示的にアクセスをアクセスを許可しないロールがある場合に記載
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = 7776000
- セキュリティ統合が作成できたら、以下のコマンドを実行し情報を取得
DESC integration <NAME> ##先ほど設定した任意の名前
- 実行出来たら、以下の情報を後ほど使用するので安全な場所に保存
- OAUTH_CLIENT_ID
- OAUTH_AUTHORIZATION_ENDPOINT
- OAUTH_TOKEN_ENDPOINT
- OAUTH_REFRESH_TOKEN_VALIDITY
- 続いて、以下のコマンドを実行しクライアント シークレットを取得
select system$show_oauth_client_secrets('<NAME>'); ##先ほど設定した任意の名前
- 取得した値の中にある、以下のパラメータ値を安全な場所に保存
- OAUTH_CLIENT_SECRET
- 以上でSnowflake側の作業は一旦終了
公式Doc:Create OAuth 2.0 Client App in Snowflake
AAC 側での作業
OAuth2.0クライアントの作成
- AlteryxでOAuth2.0クライアントを作成するために、ワークスペース管理者のロールを持つユーザーが作業を行う
- ワークスペース管理ページにある、
OAuth Clients
に移動し、Create
を選択
- 設定画面で、必要な項目と、先ほど保存した情報を反映
- ※Scopeで指定できるロールは一つだけなので、各ロールごとにOAuth 2.0 クライアントを作成する必要があります。<role_name>を指定しない場合、デフォルトロールが使用されます
- ※Scopeで指定できるロールは一つだけなので、各ロールごとにOAuth 2.0 クライアントを作成する必要があります。<role_name>を指定しない場合、デフォルトロールが使用されます
公式Doc:Create OAuth 2.0 Client for Snowflake
Connectionの作成
- ホーム画面に戻り、データタブから新しいコネクションを作成、
Snowflake
を選択
- 設定画面で、必要項目を入力
- Account nameは、について、ホスト名が次の通り
mycompany.snowflakecomputing.com
だとすると、mycompany.cloud_region_id.cloud
の形式で入力
- Account nameは、について、ホスト名が次の通り
※前提条件として、ステージデータベースを指定しない場合は、デフォルトのPUBLIC
スキーマに一時ステージが作成されます。そのため、接続するSnowflakeデータベースにはPUBLIC
スキーマがあり、使用するロールに適切な権限が与えられていることを確認してください。
公式Doc:Snowflake Connections
Datasetの作成
- コネクションが作成され、既存のテーブルを確認できるので、任意のテーブルで
Create Dataset
を選択
- Datasetに移動すると、先ほどのテーブルがDatasetとして登録されているのが確認できる
Alteryx Designer CloudでSnowflakeデータセットを使用する
- Designer Cloudで新しいワークフローを作成し、先ほど登録したDatasetを選択
- 今回のユースケースの想定通り、7レコード間違いなく取り込まれていることを確認
- SALESが260以上のレコードを、Snowflakeの新しいテーブルにアウトプットするワークフローを作成
Run Job
を実行すると、Snowflakeに先ほどの条件通りのテーブルが作成されている
- また、Snowflakeの元テーブルにデータを新しく追加。8/8のSALESは350のため、作成した条件に一致し、出力対象のデータとなるはずです
- 先ほどのワークフローを、まったく修正せず再度
Run Job
を実行 - もう一度OUTPUTテーブルを確認すると、更新された情報でテーブルが作成されていることを確認できました
さいごに
今回は、AACプラットフォームでSnowflake OAth接続を作成する方法について紹介しました。何かの参考になれば幸いです。