Amazon AppFlowで不正な値をスルーする
この記事はアンテクアドベントカレンダー2022 15日目の記事です
https://adventar.org/calendars/7821
皆さんこんにちは、サーバーサイドエンジニアの大川です。今回のAWSのAppFlowを使ってCSV内の不正な値があるレコードをスルーする設定をしてみようと思います!
今回やること
今回やりたいことはもはや言うまでも無くいつもどおりのS3からS3に対してCSVを送ることです。
CSVを送る過程でageの値に負の値があったレコードはスキップして見ようと思います。
今回使用するCSVはいつもとは若干異なり、下記の様になります。
id,first_name,last_name,password,age,
1,Tarou,Yamada,abcd1234,20,
2,Hanako,Yamada,abcd1234,22,
3,Tarou,Satou,abcd1234,24,
4,Hanako,Satou,abcd1234,-16,
前提
初回の記事を参考にS3バケット間でCSVのやり取りができる状態になっていることを前提とします。
AWSにログインしAppFlowの当該のフローの編集ページまで移動します。
手順3「データフィールドを編集」のページを開きます。
妥当性確認にて「妥当性確認を追加」をクリックします。
下記の様に設定します
- フィールド名:age
- 条件:
- アクション:レコードを無視
内容を確認して保存をクリックします。
実行
設定ができたらフローを実行してみましょう!
フローが正常に実行されたことを確認し、S3のフォルダを確認します。
CSVが格納されたディレクトリに移動し移動先のCSVをダウンロードします。
内容を確認するとidが4のレコードの情報だけスキップされ、CSVが送られていました!これで無事完了です!
- 送信元CSV
id,first_name,last_name,password,age,
1,Tarou,Yamada,abcd1234,20,
2,Hanako,Yamada,abcd1234,22,
3,Tarou,Satou,abcd1234,24,
4,Hanako,Satou,abcd1234,-16,
- 送信先CSV
"id","first_name","last_name","password","age"
"1","Tarou","Yamada","abcd1234","20"
"2","Hanako","Yamada","abcd1234","22"
"3","Tarou","Satou","abcd1234","24"
おわりに
ある程度の以上値をAppFlowでフィルターすることも簡単にできました!これで送信先に異常なデータが渡ることを防げそうです!