Skip to content

AWSで作るはじめてのETL【EventBridge】

概要

特定の条件でワークフローを実行するEventBridgeとEventBridgeの権限を管理するIAMロールを作成します。

IAMロール作成

一覧よりIAMをクリック。

ロール作成

信頼されたエンティティを選択

  • 信頼されたエンティティタイプ: カスタム信頼ポリシー

カスタム信頼ポリシーを下記のように設定する。

json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "sts:AssumeRole"
            ],
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "events.amazonaws.com"
                ]
            }
        }
    ]
}

許可を追加

AWSStepFunctionsFullAccessにチェックを入れて次へ

ロール設定

下記のように入力し作成。

ロール名: role-[自分の名前]-[番号]-eventbridge

EventBridge

EventBridge遷移

ルールを作成

ルール設定

名前: rule-[自分の名前]-[番号]-users-created

それ以外はそのまま

イベントパターンを構築

作成のメソッド: カスタムパターン (JSON エディタ) を選択し、下記を設定

json
{
  "source": ["aws.s3"],
  "detail-type": ["Object Created"],
  "detail": {
    "bucket": {
      "name": ["s3-[自分の名前]-[番号]-datalake"]
    },
    "object": {
      "key": [{
        "prefix": "users/"
      }]
    }
  }
}

ターゲットを選択

ターゲットタイプ: AWS のサービス

ターゲットを選択: Step Functions ステートマシン

ステートマシン: sfn-[自分の名前]-[番号]-object-import

実行ロール: 既存のロールを使用を選択しrole-[自分の名前]-[番号]-eventbridge

タグ

変えずに次へ

作成

ルール作成 その他

「ルールを作成」->「作成」を繰り返し、同様にして下記EventBridgeを作成する

  • rule-[自分の名前]-[番号]-products-created
  • rule-[自分の名前]-[番号]-orders-created
  • rule-[自分の名前]-[番号]-order_items-created
  • rule-[自分の名前]-[番号]-weather-created

なお、それぞれのイベントパターンは下記の通り

  • products
json
{
  "source": ["aws.s3"],
  "detail-type": ["Object Created"],
  "detail": {
    "bucket": {
      "name": ["s3-[自分の名前]-[番号]-datalake"]
    },
    "object": {
      "key": [{
        "prefix": "products/"
      }]
    }
  }
}
  • orders
json
{
  "source": ["aws.s3"],
  "detail-type": ["Object Created"],
  "detail": {
    "bucket": {
      "name": ["s3-[自分の名前]-[番号]-datalake"]
    },
    "object": {
      "key": [{
        "prefix": "orders/"
      }]
    }
  }
}
  • order_items
json
{
  "source": ["aws.s3"],
  "detail-type": ["Object Created"],
  "detail": {
    "bucket": {
      "name": ["s3-[自分の名前]-[番号]-datalake"]
    },
    "object": {
      "key": [{
        "prefix": "order_items/"
      }]
    }
  }
}
  • weather
json
{
  "source": ["aws.s3"],
  "detail-type": ["Object Created"],
  "detail": {
    "bucket": {
      "name": ["s3-[自分の名前]-[番号]-datalake"]
    },
    "object": {
      "key": [{
        "prefix": "weather/"
      }]
    }
  }
}

動作確認: S3

S3サービスをクリック

動作確認: フォルダ作成

s3-[自分の名前]-[番号]-datalakeを選択し、フォルダを作成

usersフォルダを作成する

同様にして下記フォルダも作成する

  • products
  • orders
  • order_items
  • weather

動作確認: ファイルアップロード

s3-[自分の名前]-[番号]-datalakeusersフォルダに下記ファイルをアップロードする

users.csv

動作確認: StepFunctions確認

自身のStepFunctionsが動いていることが確認できればOK

(失敗する場合もあるが、一度でも成功している履歴があればOK)

一覧に戻る

構築一覧に戻る