[過去記事]Amazon 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をとりあえず移動するところまでやってみます。）

![private__Online_Whiteboard_for_Visual_Collaboration-1024x364.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/f44f480a-c186-f607-997c-67650150d385.png)

## 準備

### CSVの準備

今回、AppFlowで移動を行うテスト用CSVを作ってみました！このファイルをフローを使って移動してみたいと思います！

```csvs
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をアップロードしておきます。

![miriwo-test-a_-_S3_bucket-1024x291.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/b5a372a3-b066-050f-08d1-8aa1dc1d8a67.png)

### フローの作成

それではここからフローの作成をやっていきましょう！

AppFlowのトップページにアクセスし「フローを作成」をクリックします。

各種情報を入力してゆきます。

フロー名：任意のフロー名を入力してください
フローの説明：任意のフローの説明を入力してください
暗号化設定をカスタマイズするのチェック：今回は体験なのでチェックなしで大丈夫です
新しいタグを追加：追加しないで大丈夫です

入力を確認し「次へ」をクリックします。

![Amazon_AppFlow-1-1024x938.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/76c26fbc-0ab2-c9c1-17f2-7e9e630ece9f.png)

送信元と送信先の設定を行います。

送信元：S3を選択します。

![Amazon_AppFlow-2-1024x476.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/569eac3e-18d0-edfa-f4ab-392587909516.png)

送信先：S3を選択します。

![Amazon_AppFlow-3-1024x576.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/48295558-aa00-d896-d761-8f143423999d.png)

送信元のS3の設定から実施します。

- S3バケットを選択：先に追加したmiriwo-test-aバケットを選択します
- バケットプレフィックスを入力：作成したフォルダ名であるinを入力します

![Amazon_AppFlow-4-1024x344.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/7949b79f-8ab4-aa35-506a-fc3dbab2ce41.png)
データ形式の設定：CSV形式を選択します

送信先のS3の設定を実施します。

- S3バケットを選択：先に追加したmiriwo-test-bバケットを選択します
- バケットプレフィックスを入力：作成したフォルダ名であるoutを入力します
- データ形式の設定：CSV形式を選択します
- ファイル名の設定：タイムスタンプなしを選択します

![Amazon_AppFlow-5-1024x590.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/c08a8f48-c01c-8800-323a-0ae8cfbbbfc2.png)

最後にフロートリガーの設定を実施します。

- フローをトリガーする方法を選択：オンデマンドで実行を選択します。

ちなみに各フロートリガーを簡単に説明すると

- オンデマンドで実行：AWSの画面から「フローを実行ボタン」を人間がクリックしてフローを実行
- スケジュール通りにフローを実行：予め指定した日時に自動でフローを実行
- イベントでフローを実行：別途設定するSalesforceなどのイベントをきっかけに自動でフローを実行

となります。今回はあくまでお試しなので「オンデマンドで実行」を選んだわけです。

![Amazon_AppFlow-6-1024x229.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/8f81d34a-7eff-763d-d15e-3fe405063a6b.png)

設定できたら「次へ」をクリックしましょう。
データフィールドのマッピングではCSVの情報を変更する場合などに設定します。

- マッピング方法：手動でフィールドをマッピングする

![Amazon_AppFlow-9-1024x184.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/300a42be-a676-4c22-cfb0-200b49da527d.png)

- 送信元から送信先フィールドのマッピング、送信フィールドを選択：すべてのフィールドを直接マッピングする

![Amazon_AppFlow-10-1024x446.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/86a8faf7-7a10-c828-f02f-f922785e4b44.png)

今回はCSVを移動させるだけなので上記だけ設定して「次へ」をクリックします。（CSVデータの改変などは別に紹介予定です。）

![Amazon_AppFlow-11-1024x944.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/c03c14c4-3d23-2001-f265-476cbe096763.png)

フィルターはこの設定だと登録できないので「次へ」をクリックします。

![Amazon_AppFlow-12-1024x158.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/f39885d6-120c-14ef-fb90-94db17518805.png)

確認して作成のページでは内容を確認して問題無さそうなら「フローを作成」をクリックします。
これでAppFlowの設定は完了です。

### 実行

それでは実際に作成したフローを実行してみましょう！
まずAppFlowのトップページから「フローを表示」をクリックします。
フロー名をクリックします。

![Amazon_AppFlow-14-1024x225.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/a4eda46a-bbee-9be0-f8ac-d7f8b4c2c982.png)

「フローを実行」をクリックしてフローを動かします。

![Amazon_AppFlow-15-1024x868.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/3fc02beb-9e81-814d-664e-3361a381ff38.png)

フローが実行されますので終了を待ちます。

正常に終了したようです！

![Amazon_AppFlow-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/5348c471-d303-7b5f-baa6-5c0fafbcd884.png)

それでは実際にS3のmiriwo-test-bバケットのoutフォルダを見に行ってみましょう。

当該フォルダにフロー名のディレクトリが生成され、更にその下のフォルダの中にファイルが入っています。

![miriwo-test-b_-_S3_bucket-1024x343.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/d006039b-1c0f-def6-c35c-187cb245b685.png)

このファイルにチェックマークを着けてダウンロードします。

![miriwo-test-b_-_S3_bucket-1-1024x212.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/555fbcd4-a2b8-6fe9-da9f-f987a3300bec.png)

拡張子こそ無いものの、CSVが出力されていました！変更点といえば各値にダブルクオートがついていることくらいです！

- 送信元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

```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/