Amazon AppFlowを触ってみた
この記事はアンテクアドベントカレンダー2022の7日目の記事です。
https://adventar.org/calendars/7821
皆さんこんにちは、サーバーサイドエンジニアの大川です。今回はAWSのAppFlowを触ってみたので体験談を残しておこうと思います!
注意点
料金について
Amazon AppFlowは動作させると料金が発生します。また2022/12/07現在無料枠などの設定もありません。「誤って高額請求を発生させてしまった!」なんてことがないように注意しましょう!
ちなみにAppFlowの料金は実行料金とデータ処理料金の2種類のようです。
1フロー実行あたり 0.001USD(実行料金) + 1ヶ月あたりの処理データ量1GBあたり0.09USD(処理料金)です。更に今回はS3を使いますので場合によってはそちらの料金もかかります。
料金通知アラームなどをうまく活用して高額請求を防ぎましょう!
Amazon AppFlowの料金について↓
https://aws.amazon.com/jp/appflow/pricing/
今回やること
今回やりたいことを図にしてみました!今回は初めてなのでS3 → S3感のAppFlowを使ったCSVファイルの共有をしてみたいと思います。(AppFlowでのデータの加工は別の記事で実施します。今回はCSVをとりあえず移動するところまでやってみます。)
準備
CSVの準備
今回、AppFlowで移動を行うテスト用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の設置
次にバケットの作成です。今回は下記2種類のバケットを作成します。それぞれアクセスを一切ブロックしない設定にします!
- miriwo-test-aバケット
- miriwo-test-bバケット
また各バケットにフォルダを作成しておきます。
- miriwo-test-aバケットのルートにinフォルダ
- miriwo-test-bバケットのルートにoutフォルダ
またmiriwo-test-aバケットのinフォルダの中にtest.csvをアップロードしておきます。
フローの作成
それではここからフローの作成をやっていきましょう!
AppFlowのトップページにアクセスし「フローを作成」をクリックします。
各種情報を入力してゆきます。
フロー名:任意のフロー名を入力してください
フローの説明:任意のフローの説明を入力してください
暗号化設定をカスタマイズするのチェック:今回は体験なのでチェックなしで大丈夫です
新しいタグを追加:追加しないで大丈夫です
入力を確認し「次へ」をクリックします。
送信元と送信先の設定を行います。
送信元:S3を選択します。
送信先:S3を選択します。
送信元のS3の設定から実施します。
- S3バケットを選択:先に追加したmiriwo-test-aバケットを選択します
- バケットプレフィックスを入力:作成したフォルダ名であるinを入力します
- データ形式の設定:CSV形式を選択します
送信先のS3の設定を実施します。
- S3バケットを選択:先に追加したmiriwo-test-bバケットを選択します
- バケットプレフィックスを入力:作成したフォルダ名であるoutを入力します
- データ形式の設定:CSV形式を選択します
- ファイル名の設定:タイムスタンプなしを選択します
最後にフロートリガーの設定を実施します。
- フローをトリガーする方法を選択:オンデマンドで実行を選択します。
ちなみに各フロートリガーを簡単に説明すると
- オンデマンドで実行:AWSの画面から「フローを実行ボタン」を人間がクリックしてフローを実行
- スケジュール通りにフローを実行:予め指定した日時に自動でフローを実行
- イベントでフローを実行:別途設定するSalesforceなどのイベントをきっかけに自動でフローを実行
となります。今回はあくまでお試しなので「オンデマンドで実行」を選んだわけです。
設定できたら「次へ」をクリックしましょう。
データフィールドのマッピングではCSVの情報を変更する場合などに設定します。
- マッピング方法:手動でフィールドをマッピングする
- 送信元から送信先フィールドのマッピング、送信フィールドを選択:すべてのフィールドを直接マッピングする
今回はCSVを移動させるだけなので上記だけ設定して「次へ」をクリックします。(CSVデータの改変などは別に紹介予定です。)
フィルターはこの設定だと登録できないので「次へ」をクリックします。
確認して作成のページでは内容を確認して問題無さそうなら「フローを作成」をクリックします。
これでAppFlowの設定は完了です。
実行
それでは実際に作成したフローを実行してみましょう!
まずAppFlowのトップページから「フローを表示」をクリックします。
フロー名をクリックします。
「フローを実行」をクリックしてフローを動かします。
フローが実行されますので終了を待ちます。
正常に終了したようです!
それでは実際にS3のmiriwo-test-bバケットのoutフォルダを見に行ってみましょう。
当該フォルダにフロー名のディレクトリが生成され、更にその下のフォルダの中にファイルが入っています。
このファイルにチェックマークを着けてダウンロードします。
拡張子こそ無いものの、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"
"4","Hanako","Satou","abcd1234","16"
おわりに
こちらでS3 → S3のファイルの移動の体験は完了です!
本来S3同士でファイルをやり取りすることにはあまり使わず、AWSサービス → 別のサービスの同期などで使います!
今度はAppFlow内でデータを改変する方法について記事を書こうかと思っております!
お読みいただきありがとうございました!