要約
メッセージは入るのに画像ファイルが入らないときは、外部アクセス統合に紐づくネットワークルールを確認する。
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.comとwss.slack.comをネットワークルールに設定してましたが、
今回の環境では、ファイル実体の取得先として files.slack.com が必要だった。
解決:files.slack.com を許可(network rule)
やったこと
- 対象のRuntimeのメニューから
External access integrationsを選択 
- 対象の外部アクセス統合名を確認する

- 外部アクセス統合に紐づけられたネットワークルールを確認
- 対象のネットワークルールに
files.slack.comを追加
結果:スクショ(画像)が取り込まれるようになった。
取り込み後の注意点
Openflow(Slackコネクタ)では取り込んだデータが複数のテーブルに出力されます。
また、添付ファイルはパスがDOC_METADATAテーブル内に格納され、実体がステージ上に格納されていました。

メッセージに紐づく画像ファイルを特定したい場合は
DOC_METADATAテーブルのevent_tsとSLACK_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)
);
終わりに
この記事が何かの参考になれば幸いです。