1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Snowflake Openflow(SPCS)Slackコネクタで画像を取り込む時の注意点

Posted at

要約

メッセージは入るのに画像ファイルが入らないときは、外部アクセス統合に紐づくネットワークルールを確認する。
SPCS方式の場合、ネットワークルールに files.slack.com を許可したら直った。
Openflowの取り込み後テーブルはメッセージと添付ファイルのパスが別テーブルに分かれていて、紐付けが必要だった。


事象:Slackにスクショ投稿 → メッセージは取れるが画像が来ない

状況

  • OpenflowのSlackコネクタを利用
    • Slack用のコネクタは2種類あるがsimple ingestという方を使用
  • OpenflowのデプロイはSPCS方式
  • Snowflake上の対象テーブルにメッセージは取り込まれている
  • 同テーブル内のhasfiles = true が立っている
  • しかし添付ファイル(画像)の実体が入ってこない

ログ

Openflowのログ(event table)を見たところ、以下のようなエラーが出ていた。

failed to connect to a new server endpoint

※ログにURLそのものは出ていない(マスク/省略されることもある)


原因:Slackファイル取得のための外部通信先がnetwork ruleに入っていない

ドキュメント
を元に、slack.comwss.slack.comをネットワークルールに設定してましたが、
今回の環境では、ファイル実体の取得先として files.slack.com が必要だった。


解決:files.slack.com を許可(network rule)

やったこと

  • 対象のRuntimeのメニューからExternal access integrationsを選択
  • image.png
  • 対象の外部アクセス統合名を確認する
  • image.png
  • 外部アクセス統合に紐づけられたネットワークルールを確認image.png
  • 対象のネットワークルールにfiles.slack.comを追加
    image.png

結果:スクショ(画像)が取り込まれるようになった。


取り込み後の注意点

Openflow(Slackコネクタ)では取り込んだデータが複数のテーブルに出力されます。
また、添付ファイルはパスがDOC_METADATAテーブル内に格納され、実体がステージ上に格納されていました。
image.png

メッセージに紐づく画像ファイルを特定したい場合は
DOC_METADATAテーブルのevent_tsSLACK_MESSAGESテーブルのtsをキーにjoinする必要がありました。
チャンネルが複数ある場合は、チャンネルIDもキーにする必要があります。

SQL例

select * 
from SLACK_MESSAGES as msg
left outer join 
DOC_METADATA as meta
on msg.ts = meta.event_ts

テーブル定義

create or replace TABLE DOC_METADATA (
	EVENT_TS TIMESTAMP_TZ(9) NOT NULL,
	CHANNEL_ID VARCHAR(16777216) NOT NULL,
	USER_ID VARCHAR(16777216),
	FILE_ID VARCHAR(16777216) NOT NULL,
	FILE_NAME VARCHAR(16777216),
	FILE_MIMETYPE VARCHAR(16777216),
	FILE_SIZE NUMBER(38,0),
	CONTENT_SHA256 VARCHAR(16777216),
	STAGED_FILE_PATH VARCHAR(16777216)
);

create or replace TABLE SLACK_MESSAGES (
	HASFILE BOOLEAN,
	HASFILES BOOLEAN,
	TYPE VARCHAR(16777216),
	SUBTYPE VARCHAR(16777216),
	TEAM VARCHAR(16777216),
	CHANNEL VARCHAR(16777216),
	USER VARCHAR(16777216),
	USERNAME VARCHAR(16777216),
	TEXT VARCHAR(16777216),
	TS TIMESTAMP_TZ(9),
	THREADTS TIMESTAMP_TZ(9),
	INTRO BOOLEAN,
	STARRED BOOLEAN,
	WIBBLR BOOLEAN,
	APPID VARCHAR(16777216),
	BOTID VARCHAR(16777216),
	BOTLINK VARCHAR(16777216),
	DISPLAYASBOT BOOLEAN,
	UPLOAD BOOLEAN,
	PARENTUSERID VARCHAR(16777216),
	CLIENTMSGID VARCHAR(16777216),
	UNFURLLINKS BOOLEAN,
	UNFURLMEDIA BOOLEAN,
	THREADBROADCAST BOOLEAN,
	LOCKED BOOLEAN,
	SUBSCRIBED BOOLEAN,
	HIDDEN BOOLEAN,
	NONOTIFICATIONS BOOLEAN,
	CHUNKINDEX NUMBER(38,0),
	CHUNKCOUNT NUMBER(38,0),
	INGESTTS TIMESTAMP_TZ(9),
	WORKSPACEID VARCHAR(16777216)
);


終わりに

この記事が何かの参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?