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内でデータを改変する方法について記事を書こうかと思っております!

お読みいただきありがとうございました!

参考文献

https://aws.amazon.com/jp/appflow/pricing/

TAGS使用タグ一覧