技術検証：AWS LambdaとEventBridgeを使用してYouTube APIから動画データをDynamoDBに挿入する実践手順

## はじめに
本記事は、[前回の記事](https://qiita.com/free-honda/items/5af2cea6c674fba14597)に続く検証内容となります。

**前回は、AWS Lambdaを使用してYouTube APIから動画データを取得し、それをDynamoDBに保存する仕組みを構築しました。**

![スクリーンショット 2024-12-07 12.45.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/d920a410-e2c0-48f0-5711-5b0db59785a0.png)

:::note warn
***今回は、EventBridgeを活用して定期実行のスケジュールを設定し、さらなる効率化を目指した内容です。***
:::

少し複雑な検証内容ではありますが、興味のある方はぜひご覧ください！

## 前回の振り返り
前回は、YouTube APIの設定、Lambda関数の作成、データ挿入処理、IAMロールの設定まで、サーバーレス構成で動画データ管理システムを構築するステップを紹介しました。

https://qiita.com/free-honda/items/5af2cea6c674fba14597

:::note
**これをさらに発展させ、毎日決まった時間に動画データを取得してデータベースに保存する仕組みを実装します。**
:::

## 知識整理
AWS Lambda、YouTube API、DynamoDBについては、前回の記事で基本的な知識を簡単にまとめていますので、そちらをご参考ください。

https://qiita.com/free-honda/items/5af2cea6c674fba14597

:::note warn
***今回は、前回触れていなかった EventBridge について簡単に整理します。***
:::

### EventBridgeとは
EventBridgeは、AWSが提供するイベント駆動型のサービスです。

https://aws.amazon.com/jp/eventbridge/

特定の条件やスケジュールに基づいてイベントを発生させ、それを基に処理を実行できます。

:::note warn
**例えば、毎日特定の時間にLambda関数を実行したり、他のAWSサービスからのイベントをトリガーにした処理を行うことが可能です。**
:::

過去の記事でもEventBridgeに関する技術検証を行っていますので、興味のある方はぜひご覧ください！

https://qiita.com/free-honda/items/93b80701c64a2848b66c

## 実際にやってみた

### EventBridgeでスケジュールを設定
AWSマネジメントコンソールで「Lambda」を検索し、前回作成した「```YouTubeDataFetcher```」のLambda関数を選択します。

![スクリーンショット 2024-12-07 11.20.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/8a528a31-2a16-a634-612f-b4b5700c0b8e.png)

「トリガーの追加」をクリックして新規ルールを作成します。ルールタイプは「スケジュール式」を選択し、設定を進めます。

![スクリーンショット 2024-12-07 11.22.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/e9ade894-f4fd-ca3c-f1dc-2cb30370a2aa.png)

:::note alert
ここでは、日本時間の11時30分にスケジュールを設定しています。AWSの表示はデフォルトでUTCとなっているため、以下のようにcron式を設定してください。

```
cron(30 2 * * ? *)
```

**※日本時間（JST）とUTCの時差（+9時間）に注意してください。**

:::

設定後、EventBridgeのスケジュールがLambda関数にトリガーされることを確認できます。

![スクリーンショット 2024-12-07 11.24.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/04228c3c-8ffa-171d-a1b2-2d3f591fa0f4.png)

### EventBridgeのルールの修正

次に、先ほど作成したイベントスケジュールのルールを少し修正します。

![スクリーンショット 2024-12-07 11.27.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/42f44321-5e89-0e4e-ac41-e3bda391d186.png)

作成した「test」のルールを選択し、編集ボタンをクリックします。

ここでは1箇所だけ設定の修正が必要となりますので、その部分について画面ショット付きで解説します。

![スクリーンショット 2024-12-07 11.29.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/f49b5654-f4af-fc70-9422-2e5aa73451fa.png)

Lambda関数に渡すデータ（動画IDなど）が必要な場合、EventBridgeで送信するペイロードを設定することができます。

```json
{
  "video_id": "dQw4w9WgXcQ"  // テストしたいYouTube動画のID
}
```

:::note warn
Lambda関数を手動で実行する際にテストデータをJSON形式で受け渡ししていた部分を、EventBridge側のルールで渡すことができます。
:::

## スケジュール後の検証確認
次に、EventBridge側で設定したスケジュールが正しく実行されたか確認します。

![スクリーンショット 2024-12-07 11.36.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/6b821166-cd02-7f69-17bd-7ecf42922c28.png)

設定した時間ちょうどに、イベントスケジュールがトリガーされたことが確認できました。

次に、Lambda関数が正常にトリガーされているかを確認します。

![スクリーンショット 2024-12-07 11.38.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/46a57a6f-1fc2-0026-5567-17f4409f4a6f.png)

こちらでも、EventBridgeのトリガー通りの時間でLambda関数が実行されていることがわかります。

最後に、DynamoDB側でデータが正しく取得されているかを確認します。

![スクリーンショット 2024-12-07 11.53.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/5d6da3e8-d4dc-95e2-6679-14f65ad70a37.png)

***Lambda関数が実行され、YouTube APIから取得した動画データがDynamoDBに正常に挿入されたことが確認できました。***

| video_id       | title                                           | views | likes | dislikes | published_at        |
|----------------|-------------------------------------------------|-------|-------|----------|---------------------|
| sdBro6Vl15E    | 未経験からエンジニアへ！職種・年収・オススメ度を徹底解説！ | 46    | 5     | 0        | 2024-12-04T09:00:55Z |

:::note warn
***中身の属性や値も、想定通り取得されていることが確認でき、検証は大成功です！！***
:::

## まとめ
今回の検証は、前回の内容も含めて予想以上に時間がかかりましたが、最終的に無事やり遂げることができ、良かったです。

:::note alert
***特に、EventBridgeは昔に比べて画面操作が大きく変わっていて、使い慣れるのに時間がかかりましたが、それを乗り越えることができました！***
:::

この記事が、誰かの技術的な支えになれば嬉しいです！

## 関連記事

https://business.ntt-east.co.jp/content/cloudsolution/column-488.html

https://qiita.com/shimajiri/items/1f3f2a0994423d689485

https://www.cloudsolution.tokai-com.co.jp/white-paper/2024/0206-445.html