AWSで作るはじめてのETL【StepFunctions編集】
概要
トリガー起動されたStepFunctionsのワークフローを編集する。
StepFunctions
StepFunctionsに遷移

StepFunctions選択
自分のStepFunctionsをクリック

編集

StepFunctions構築
1. Choice
Choiceステートを選択してドラッグ&ドロップ

2. Add new choice rule
Add new choice ruleをクリックしてルールを追加する

6個になるように作る(Rule #5になるまで)

3. StartJobRun
StartJobRunステートを選択して「ここに状態をドロップ」の場所にドラッグ&ドロップ
5個になるように作る

4. Fail
Failステートを選択して「ここに状態をドロップ」の場所にドラッグ&ドロップ

5. StartJobRun 状態名
StartJobRun ステートの設定より、状態名を編集
- 状態名:
import-users - タスクが完了するまで待機 - オプション:
有効化

6. StartJobRun 引数と出力
StartJobRun ステートの引数と出力より、引数を編集
- 引数
json
{
"JobName": "job-[自分の名前]-[番号]-import-users"
}
7. 他のJob編集
同様にして他のジョブも修正する
products
- 状態名:
import-products - JobName:
job-[自分の名前]-[番号]-import-products
- 状態名:
orders
- 状態名:
import-orders - JobName:
job-[自分の名前]-[番号]-import-orders
- 状態名:
order_items
- 状態名:
import-order_items - JobName:
job-[自分の名前]-[番号]-import-order_items
- 状態名:
weather
- 状態名:
import-weather - JobName:
job-[自分の名前]-[番号]-import-weather
- 状態名:

8. Choice編集
Choiceのルールをクリックする


Rule #1 ~ Rule #5及び Default rule を下記のように修正する
Rule #1
- Condition:
{% $split($states.input.detail.object.key, '/')[0] = 'users' %} - Then next state is:
import-users
- Condition:
Rule #2
- Condition:
{% $split($states.input.detail.object.key, '/')[0] = 'products' %} - Then next state is:
import-products
- Condition:
Rule #3
- Condition:
{% $split($states.input.detail.object.key, '/')[0] = 'orders' %} - Then next state is:
import-orders
- Condition:
Rule #4
- Condition:
{% $split($states.input.detail.object.key, '/')[0] = 'order_items' %} - Then next state is:
import-order_items
- Condition:
Rule #5
- Condition:
{% $split($states.input.detail.object.key, '/')[0] = 'weather' %} - Then next state is:
import-weather
- Condition:
Default rule
- Then next state is:
Fail
- Then next state is:
保存
保存をクリック

動作確認
s3-[自分の名前]-[番号]-datalakeのusersフォルダに下記ファイルをアップロードする
名前は users.csv にすることに注意
前回アップロードしたファイルを上書きして良い


動作確認: Glue Job確認
自身のStepFunctionsが動いていて、import-usersをキックしていればOK

