Amazon AppFlowでCSVの内容を一部変更してみる part3
この記事はアンテクアドベントカレンダー2022 14日目の記事です
https://adventar.org/calendars/7821
皆さんこんにちは、サーバーサイドエンジニアの大川です。今回はAWSのAppFlowを使ってCSVのキー内容を合体して出力してみようと思います!
注意点
Amazon AppFlowはフローを実行するたびに料金が発生します。
ご注意ください。また詳しい内容は下記の「注意点」をご確認ください!
今回やること
今回やりたいことは恒例のS3からS3に対してCSVを送ることです。
CSVを送る過程でfirst_nameとlast_nameの2つの値を合体してnameとして送ってみようと思います。
今回使用する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「データフィールドを編集」のページを開きます。
下記のフィールドにチェックをつけます。
- first_name
- last_name
「式を追加」をクリックします。
「式を選択」で「連結」を選択します。
「新しい送信先フィールドを入力」に「name」と入力し「式を使用してフィールドをマッピングする」をクリックし式を保存します。
フローそのものの設定も保存しましょう。
ちなみに設定が完了したあとのマッピングフィールドの内容は下記の様になりました。
実行
早速当該のフローを実行してみましょう!
フローが正常に完了したことを確認してS3のフォルダを確認します。
新規作成されたディレクトリに入りファイルを選択しダウンロードします。
内容を確認すると既存の情報にプラスして、nameの値が追加されていました!今回も無事終了です!
- 送信元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","name"
"1","Tarou","Yamada","abcd1234","20","Tarou Yamada"
"2","Hanako","Yamada","abcd1234","22","Hanako Yamada"
"3","Tarou","Satou","abcd1234","24","Tarou Satou"
"4","Hanako","Satou","abcd1234","16","Hanako Satou"
おわりに
まさかこんなに簡単にCSVの内容を連結する事ができると思っていませんでした、、!複雑なことはできませんがある程度ならアプリケーションではなくAppFlowに式を記載することで対応できそうです、、!