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