---
title: AWSでサンタさんのプレゼント配達システムを構築！ 手紙からの情報抽出、配達経路の最適化
tags:  #aws #生成ai #aws marketplace  
author: [Takuya Yamazaki](https://www.docswell.com/user/kkmtyyz)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/LE1345V2JG.jpg?width=480
description: 2024年12月18日に開催したクリスマス企画「AWSでサンタさんのプレゼント配達システムを構築！ 手紙からの情報抽出、配達経路の最適化」セッションの発表資料です。 2024年12月19日開催「AWS Skills Guild 第一回勉強会」でもショートバージョンを発表しました。  もしもサンタさんの仕事をシステム化するとしたら… そんなアイデアをAWSで形にしてみました！ こどもの手紙から生成AIで情報を抽出し、地図上に最適化されたプレゼント配達経路を表示するシステムです。 ゼロから少しずつアーキテクチャを完成させていく内容なので、AWS初心者も楽しめます！  ソースコードも公開しているため、AWS CDKで誰でもすぐにデプロイ可能です。
published: December 19, 24
canonical: https://www.docswell.com/s/kkmtyyz/ZG1NQ9-2024-12-19-164412
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/LE1345V2JG.jpg)

2024-12-18 クリスマス企画
AWSでサンタさんの
プレゼント配達システムを構築！
― 手紙からの情報抽出、配達経路の最適化 ―
山崎 拓也


# Page. 2

![Page Image](https://bcdn.docswell.com/page/GEWPX5L2J2.jpg)

山崎 拓也
所属: SIer
仕事:
• システム開発など
• アプリとAWSインフラ両方
好き: 低レイヤ、SF、AWS
AWS関連:
• 2024 Japan AWS Top Engineer
• 2022～2024 Japan AWS All Certifications Engineer


# Page. 3

![Page Image](https://bcdn.docswell.com/page/47ZK6NM473.jpg)

今回はクリスマス企画です
• クリスマス気分で楽しくスキルアップ！
• AWS初心者でも楽しめる内容です
• 左上に
マークがあるスライドは初心者向けです


# Page. 4

![Page Image](https://bcdn.docswell.com/page/YJ6Q28NGJV.jpg)

本日伝えたいこと
• AWSを使うと面白いアイデアを素早く形にできる
• Amazon Bedrockなら生成AIを簡単にシステムに組み込める
• 難しいソリューションもAWS Marketplaceなら素早く実現できる


# Page. 5

![Page Image](https://bcdn.docswell.com/page/GJ5R295X74.jpg)

アジェンダ
• サンタさんの抱える課題
• 完成したシステムの使い方
• システム構築とポイント
• 手紙からの情報抽出
• プレゼント配達経路アプリ
• ソースコードへのリンク
• まとめ
• 告知


# Page. 6

![Page Image](https://bcdn.docswell.com/page/LE3PKYN4J5.jpg)

サンタさんの抱える課題


# Page. 7

![Page Image](https://bcdn.docswell.com/page/8EDL35W5JG.jpg)

シナリオ
• サンタさんにはこども達から沢山の手紙が届く
• 手紙には欲しいプレゼントと住所のほか、メッセージや絵も書
かれている
• サンタさんは手紙を読むのがとっても楽しみ
• サンタさんの仕事は、手紙からプレゼントと住所を帳票に書き
写し、クリスマス当日にソリに乗って配達すること


# Page. 8

![Page Image](https://bcdn.docswell.com/page/V7P24G9D78.jpg)

サンタさんの抱える課題
1. プレゼント名と住所を帳票へ書き写す作業に時間を取られて、
こども達からの手紙をゆっくり見ることができない
2. 空が飛べないタイプのサンタさんなのでソリで道路を走行す
る必要があるが、最適な配達経路が分からず無駄に時間がか
かっている


# Page. 9

![Page Image](https://bcdn.docswell.com/page/2JVDX6MGJQ.jpg)

サンタさんはこれらの課題を解決するため、AWSを使っ
てシステムを構築することにしました


# Page. 10

![Page Image](https://bcdn.docswell.com/page/5EGYVNXDEL.jpg)

完成したシステムの使い方


# Page. 11

![Page Image](https://bcdn.docswell.com/page/4JQM6Q8X7P.jpg)

注意点
• 手紙に使用する住所は全て仙台駅前のコンビニの住所を使用しています


# Page. 12

![Page Image](https://bcdn.docswell.com/page/K74V4N22J1.jpg)

手紙1 プレゼントは「ツチノコのぬいぐるみ」


# Page. 13

![Page Image](https://bcdn.docswell.com/page/LJ1345MK7G.jpg)

2枚目からはイラストなし
• 手紙2「ポケモンカード」
• 手紙3「ゴジラのしっぽ」
• 手紙4「たまごっち」
• 手紙5「クレヨン」


# Page. 14

![Page Image](https://bcdn.docswell.com/page/GJWPX53P72.jpg)

5つの手紙をAWS（S3）へアップロード
アップロード
実行
情報抽出処理
• プレゼント名
• 住所
• 住所の緯度経度


# Page. 15

![Page Image](https://bcdn.docswell.com/page/4EZK6NV6E3.jpg)

Webアプリへアクセス
1. API URL、API Keyを入力
2. Requestボタンを押す


# Page. 16

![Page Image](https://bcdn.docswell.com/page/Y76Q285L7V.jpg)

プレゼント配達経路が表示される


# Page. 17

![Page Image](https://bcdn.docswell.com/page/G75R29YME4.jpg)

マーカー選択でプレゼントと住所が表示される


# Page. 18

![Page Image](https://bcdn.docswell.com/page/9J2D42GRJR.jpg)

簡単には思いつかないルートで最適化されている
• きちんと左車線を走っている
• 左下、Uターンできる交差点まで進んでからUターンしている


# Page. 19

![Page Image](https://bcdn.docswell.com/page/DEY2MYV5EM.jpg)

これによりサンタさんの課題は解決
1. 作業自動化により、こども達からの手紙をゆっくり見られる
2. 配達経路の最適化により、配達時間に余裕が生まれる


# Page. 20

![Page Image](https://bcdn.docswell.com/page/VJN8WPM478.jpg)

システム構築とポイント


# Page. 21

![Page Image](https://bcdn.docswell.com/page/YE9KX3N4E3.jpg)

アーキテクチャ


# Page. 22

![Page Image](https://bcdn.docswell.com/page/GE8R2MKVJD.jpg)

アーキテクチャ
ここに至る過程を見ていきましょう！


# Page. 23

![Page Image](https://bcdn.docswell.com/page/LELK23ZRJR.jpg)

手紙からの情報抽出


# Page. 24

![Page Image](https://bcdn.docswell.com/page/4JM28DVPJW.jpg)

手紙からプレゼント名と住所を取得したい・・・
• 字が崩れている
• 住所も全てひらがなで書かれている
• イラストなど他の情報も含まれている


# Page. 25

![Page Image](https://bcdn.docswell.com/page/PJRM542YE9.jpg)

手紙からプレゼント名と住所を取得したい・・・
• 字が崩れている
• 住所も全てひらがなで書かれている
• イラストなど他の情報も含まれている
生成AIで解決できます！


# Page. 26

![Page Image](https://bcdn.docswell.com/page/PEXVK2D47X.jpg)

Amazon Bedrockとは
• AWSの生成AIサービス
• 6社40種類以上の様々なモデルを使用可能
• 「テキストと画像」などを一度に入力できるマルチモーダルなモデルもある
• Converse APIから同じインターフェースで様々なモデルが呼び出し可能
Converse API
「この画像は何ですか？」
https://aws.amazon.com/jp/bedrock/
「サンタさんへ充てた手紙です」


# Page. 27

![Page Image](https://bcdn.docswell.com/page/3EKQ5MXPED.jpg)

今回Bedrockへ渡すシステムプロンプト
住所は漢字に変換してもらう
出力はプログラム処理しやすい
ようにJSONにしてもらう


# Page. 28

![Page Image](https://bcdn.docswell.com/page/L73PKY54E5.jpg)

（補足）Converse APIの呼び出し方
画像データ
Converse API呼び出し
システムプロンプト
https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/conversation-inference-call.html


# Page. 29

![Page Image](https://bcdn.docswell.com/page/87DL35D5EG.jpg)

Bedrockの出力結果
システムプロンプト
• プレゼント名と住所を的確に抽出している
• 「ツチノコ」の「ツ」が取れてる点は特にすごい
• 住所は正しく漢字に変換されている
• JSONフォーマットも指定通り


# Page. 30

![Page Image](https://bcdn.docswell.com/page/VJP24GXDJ8.jpg)

ここまでのアーキテクチャ


# Page. 31

![Page Image](https://bcdn.docswell.com/page/2EVDX6LGEQ.jpg)

手紙解析プログラムの実行環境が必要


# Page. 32

![Page Image](https://bcdn.docswell.com/page/57GYVN3D7L.jpg)

手紙解析プログラムの実行環境が必要
AWS Lambda関数がぴったり！


# Page. 33

![Page Image](https://bcdn.docswell.com/page/4EQM6Q5XJP.jpg)

AWS Lambda関数とは
• サーバーレスなプログラム実行サービス
• 最大15分間プログラムを実行可能
• リクエストに応じて自動的にスケールアウト
リクエストに応じて
自動でスケールアウト
https://aws.amazon.com/jp/lambda/
最大同時実行数
を設定可能
例: 10インスタンス
までスケール


# Page. 34

![Page Image](https://bcdn.docswell.com/page/KJ4V4N92E1.jpg)

ここまでのアーキテクチャ
自動でトリガー


# Page. 35

![Page Image](https://bcdn.docswell.com/page/LE1345KKJG.jpg)

地図に表示するため住所を緯度経度に変換したい・・・


# Page. 36

![Page Image](https://bcdn.docswell.com/page/GEWPX5DPJ2.jpg)

地図に表示するため住所を緯度経度に変換したい・・・
国土地理院のAPIを呼ぶ！


# Page. 37

![Page Image](https://bcdn.docswell.com/page/47ZK6NG673.jpg)

緯度経度とフォーマットされた住所が得られる
• Bedrockから得られた住所をそのままAPIに渡す
• 以降の住所はフォーマットされたものを使う
経度, 緯度なので注意
フォーマットされた住所


# Page. 38

![Page Image](https://bcdn.docswell.com/page/YJ6Q28YLJV.jpg)

ここまでのアーキテクチャ


# Page. 39

![Page Image](https://bcdn.docswell.com/page/GJ5R29GM74.jpg)

DBにデータを保存したい・・・
• サンタさんへの手紙は不定期に来る
• DBアクセスが無い間は停止してコスト削減したい
• RDBがいい
• 地理情報も保存したい


# Page. 40

![Page Image](https://bcdn.docswell.com/page/9E2D42YRER.jpg)

DBにデータを保存したい・・・
• サンタさんへの手紙は不定期に来る
• DBアクセスが無い間は停止してコスト削減したい
• RDBがいい
• 地理情報も保存したい
Amazon Aurora Serverlessがぴったり！


# Page. 41

![Page Image](https://bcdn.docswell.com/page/D7Y2MYG57M.jpg)

Amazon Aurora Serverlessとは
• AWSのサーバーレスなRDBサービス
• インスタンス料金は時間あたりのACU（Aurora Capacity Unit）で決まる
• ACU: Auroraのインスタンススペック（東京リージョンは1ACU = 0.15USD）
• 5ACUで2時間稼働した場合: 0.15USD × 5ACU × 2時間 = 1.5USD
• 使用していない間ACUが0になるため、インスタンス料金がかからない
• 負荷に応じてACUが自動でスケール
ここからインスタンス料金無料
https://aws.amazon.com/jp/rds/aurora/serverless/


# Page. 42

![Page Image](https://bcdn.docswell.com/page/VEN8WPG4J8.jpg)

（補足）Aurora Serverless v2作成時のポイント
1. ACUを0にできるエンジンバージョンを指定する
2. DB設定やテーブル作成などにクエリエディタを使うため、DataApi機能を有効化する
1
2
クエリエディタ
コンソールからクエリを実行する機能


# Page. 43

![Page Image](https://bcdn.docswell.com/page/Y79KX3W473.jpg)

PostGIS拡張を使用して地理情報をAuroraへ保存
• PostGIS: PostgreSQLで地理情報を扱うための拡張機能
• AuroraでもPostGISが使用可能
• POINT型やLINESTRING型、便利な関数などが使用可能になる
• 公式ドキュメントのSQLを実行することで有効化
• PostGIS 拡張機能を使用した空間データの管理
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/Appendix.PostgreSQL.CommonDBATasks.PostGIS.html


# Page. 44

![Page Image](https://bcdn.docswell.com/page/G78R2MNVED.jpg)

ここまでのアーキテクチャ
インターネットアクセスに必要


# Page. 45

![Page Image](https://bcdn.docswell.com/page/L7LK23PRER.jpg)

Lambda関数は自動でスケールするためDB接続が枯渇する
・
・
・


# Page. 46

![Page Image](https://bcdn.docswell.com/page/4EM28D4PEW.jpg)

接続プール用のサービスがあるが・・・
• RDS Proxy
• フルマネージドの高可用性データベースプロキシ
• 次の場合にベストプラクティス
• 頻繁に接続を開いたり閉じたりする
• 長時間の接続を多数開いたままにする
• 時間課金
https://aws.amazon.com/jp/rds/proxy/
・
・
・


# Page. 47

![Page Image](https://bcdn.docswell.com/page/PERM54WY79.jpg)

RDS Proxyを使うとACUが0にならずコストがかかる・・・
• ACUが0.5までしか下がらないため、アクセスが無いときにもインスタン
ス料金がかかる
• 東京リージョンだと 0.075USD/h
停止せず、ここまでしか下がらない
https://aws.amazon.com/jp/blogs/database/introducing-scaling-to-0-capacity-with-amazon-aurora-serverless-v2/


# Page. 48

![Page Image](https://bcdn.docswell.com/page/P7XVK2P4JX.jpg)

RDS Proxyを使わずにDB接続を管理する
• Lambda関数の最大同時実行数を設定する
• それ以上スケールしなくなるので接続数が抑えられる
→ スケールしないため、リクエストが捌けなくなる
10インスタンス以上
増えないように設定


# Page. 49

![Page Image](https://bcdn.docswell.com/page/37KQ5MDP7D.jpg)

リクエストが失敗しないようにキューイングする
• Amazon SQSを使用する


# Page. 50

![Page Image](https://bcdn.docswell.com/page/LJ3PKYR475.jpg)

Amazon SQS と Lambda関数の連携
• Lambda関数で処理成功したメッセージは自動的にキューから削除される
• 同じメッセージの重複処理防止のため、 SQSキューの可視性タイムアウ
トを設定する
• Lambda関数の実行時間より長くする
可視性タイムアウトなし
可視性タイムアウト 15分
①メッセージ取得
①メッセージ取得
Lambda A
②Aが処理中の
メッセージも取れる
Lambda B
Lambda A
②Aが処理中の
メッセージは
15分間取れない
Lambda B


# Page. 51

![Page Image](https://bcdn.docswell.com/page/8JDL35Y57G.jpg)

処理失敗に備えてデッドレターキューを作成
• Lambda関数で処理失敗したメッセージはデッドレターキューへ入る
①失敗！
②失敗したメッセージは
DLQへ転送


# Page. 52

![Page Image](https://bcdn.docswell.com/page/VEP24G6DE8.jpg)

再処理はコンソールの「DLQ再処理の開始」ボタンから
• あるいはサンタさんがDLQのメッセージの手紙をマニュアル処理
①DLQ再処理ボタン
②ソースキューへ転送


# Page. 53

![Page Image](https://bcdn.docswell.com/page/27VDX63G7Q.jpg)

ここまでのアーキテクチャ


# Page. 54

![Page Image](https://bcdn.docswell.com/page/5JGYVNYDJL.jpg)

（補足）DB接続が頻繁に作られる可能性がある
• Lambda関数のインスタンスが生きている間は同じインスタンスで処理が
実行される
15分間
時間
手紙
1枚目
接続毎回作る
手紙
2枚目
手紙
3枚目
手紙
4枚目


# Page. 55

![Page Image](https://bcdn.docswell.com/page/47QM6QMXEP.jpg)

（補足）インスタンス内で接続を使い回す
• 接続を大域変数として持つことでインスタンスが生きている間、同じ接続
を使い回せる
15分間
大域変数として宣言
初回のみ接続作成
時間
手紙
1枚目
接続使い回す
手紙
2枚目
手紙
3枚目
手紙
4枚目


# Page. 56

![Page Image](https://bcdn.docswell.com/page/KE4V4NV271.jpg)

手紙からの情報抽出部分は完成！


# Page. 57

![Page Image](https://bcdn.docswell.com/page/L713453KEG.jpg)

プレゼント配達経路アプリ


# Page. 58

![Page Image](https://bcdn.docswell.com/page/G7WPX5PPE2.jpg)

座標は分かったが、最短経路を導くには・・・
• ダイクストラ法？
• 巡回セールスマン問題？


# Page. 59

![Page Image](https://bcdn.docswell.com/page/4JZK6NK6J3.jpg)

座標は分かったが、最短経路を導くには・・・
• ダイクストラ法？
• 巡回セールスマン問題？
難問はAWS Marketplaceで素早く解決！


# Page. 60

![Page Image](https://bcdn.docswell.com/page/YE6Q28QLEV.jpg)

AWS Marketplaceとは
• サードパーティーの製品を購入できるAWS内のオンラインストア
• ソフトウェアだけでなく、SaaSやAMI（Amazon Machine Image）、機
械学習モデルなど、様々なソリューションが揃っている
• 利用料はAWS利用料と一緒に支払う
https://aws.amazon.com/jp/mp/marketplace-service/overview/


# Page. 61

![Page Image](https://bcdn.docswell.com/page/GE5R29RMJ4.jpg)

さっそく「delivery route」で検索
209件ヒット
SaaSは32件
最も関連性が高い


# Page. 62

![Page Image](https://bcdn.docswell.com/page/972D42DR7R.jpg)

HERE Tour Planningのドキュメントをみると・・・
• 巡回セールスマン問題を解けるAPIを発見！
https://www.here.com/docs/ja-JP/category/tour-planning-api


# Page. 63

![Page Image](https://bcdn.docswell.com/page/DJY2MY25JM.jpg)

サブスクライブとAPIキー発行
• 30日間 Free Trial が提供されている


# Page. 64

![Page Image](https://bcdn.docswell.com/page/V7N8WP84E8.jpg)

最適な配達順序を取得
• プレゼント配達先の座標などをパラメーターとしてAPI呼び出し
• 配達順が返る
例
サンタさんの家から出発
例
start: 38.26099, 140.881155
start: 38.26099, 140.881155
A: 38.259464, 140.879929
E: 38.258324, 140.874039
B: 38.257568, 140.87973
C: 38.256062, 140.873245
C: 38.256062, 140.873245
D: 38.257244, 140.87645
D: 38.257244, 140.87645
B: 38.257568, 140.87973
E: 38.258324, 140.874039
A: 38.259464, 140.879929
end: 38.26099, 140.881155
end: 38.26099, 140.881155
サンタさんの家に帰る


# Page. 65

![Page Image](https://bcdn.docswell.com/page/YJ9KX3K4J3.jpg)

地図上で見ると・・・
例
start: 38.26099, 140.881155
A
E: 38.258324, 140.874039
C: 38.256062, 140.873245
E
D: 38.257244, 140.87645
B: 38.257568, 140.87973
B
A: 38.259464, 140.879929
D
end: 38.26099, 140.881155
C


# Page. 66

![Page Image](https://bcdn.docswell.com/page/GJ8R2MRV7D.jpg)

最適な配達経路はHERE Routing API（無料）で取得可能
• 始点、終点にサンタさんの家を指定
• 経由地に配達順序どおりの座標を指定
https://www.here.com/docs/ja-JP/category/routing-api-v8


# Page. 67

![Page Image](https://bcdn.docswell.com/page/LJLK23KR7R.jpg)

（補足）Routing APIからはFlexible Polylineが返る
• Flexible PolylineはHEREで提供される座標リストの圧縮表現
• デコードすると経路を表す膨大な座標が得られる
Flexible Polyline例（ 5つ）
デコード例
BG4vo_oC4w22sInHpCjNPjNPjKJjKJ_ChBrBhBBB9BxCxB9
CzExShFtUzExSjDtIxEhSpK3oBxEhSjFjUlFrUlFtUjFjU_E_Th
FhUtD3NjFtUvD3NtD3MxHliBZjDzE5QvFnUzE7Q7CnL
BGglj_oC5o2sIAAxE7S_EvU9EvUxE7S_JkDrQmF_JkDnCa_OgFhPE7fiLxKuDjHmCyE9N
BGog_oCkkn2sI8B3FuG3ToEmG_EyP_EwPjFqPxG2TzG4TzG2TjFq
PzM4nBvEoM3D2IzIoIsEmT8IgeoEqOgGiUoEoOuMlHu9Bzj
BuMlH-H1EsI9E
BG0ph_oC40t2sIgHhE-H1EmMjHoMjH8H_EkPzJiPzJHhFuD4M1M6HnPqJ1M6HlbyQxJsFrP4IxJuF8C4NqE2UoE4
UqE2U8C4NwCyLwE2UyCyL-DsT-DsT_C6BnCsB
BG-6h_oC05z2sIpIkFlPqJnPqJlPqJvJ4FhEwCkF0RmFyRFyT8FyT6KnG4e1RsP7I4KnGiK_FoPjJyenSiK_FkPlJmPpJ8Bj
B
BGszl_oCmr02sIoNhIoMvHoPnJoMvHwNxHyNxHgK5GawLI
kMQsVOuVQsVIkM4BqRuCgI
38.260988 140.881164
38.260872 140.881127
38.260662 140.881119
38.260452 140.881111
38.26029 140.881106
38.260128 140.881101
38.26008 140.881084
38.260058 140.881067
38.260057 140.881066
38.260026 140.881025
38.260001 140.880978
38.259927 140.880681
38.259846 140.880354
38.259772 140.880057
38.259722 140.879922
38.259649 140.879633
38.259484 140.878981
38.259411 140.878692
38.259329 140.87837
38.259246 140.878044
…


# Page. 68

![Page Image](https://bcdn.docswell.com/page/47M28D2P7W.jpg)

ここまでのアーキテクチャ
Lambda関数から
HEREのAPIを呼び出す


# Page. 69

![Page Image](https://bcdn.docswell.com/page/P7RM54MYJ9.jpg)

Web APIとしてLambda関数を呼び出したい・・・
• 一般的にはAPI GatewayやALB(Application Load Balancer)を使う
• 簡単に作りたい
• リソースを増やしたり複雑な設定はしたくない
• コストを増やしたくない
• 認証もリクエストのAPIキーだけでいい


# Page. 70

![Page Image](https://bcdn.docswell.com/page/PJXVK2V4EX.jpg)

Web APIとしてLambda関数を呼び出したい・・・
• 一般的にはAPI GatewayやALB(Application Load Balancer)を使う
Lambda Function URLsがぴったり！
• 簡単に作りたい
• リソースを増やしたり複雑な設定はしたくない
• コストを増やしたくない
• 認証もリクエストのAPIキーだけでいい


# Page. 71

![Page Image](https://bcdn.docswell.com/page/3JKQ5MQPJD.jpg)

AWS Lambda Function URLsとは
• Lambda関数にHTTPSエンドポイントを作る機能
• 無料
• CORSにも対応
• Private SubnetにあるLambda関数でもOK
https://aws.amazon.com/jp/blogs/news/announcing-aws-lambda-function-urls-built-in-https-endpoints-for-single-function-microservices/


# Page. 72

![Page Image](https://bcdn.docswell.com/page/LE3PKYP4J5.jpg)

ここまでのアーキテクチャ


# Page. 73

![Page Image](https://bcdn.docswell.com/page/8EDL35L5JG.jpg)

Webサイトをホストしたい・・・
• 簡単に作りたい
• 静的Webサイトでいい
• HTTPSアクセスしたい
• AWS CDK（IaC）で簡単に書きたい


# Page. 74

![Page Image](https://bcdn.docswell.com/page/V7P24G2D78.jpg)

Webサイトをホストしたい・・・
• 簡単に作りたい
• 静的Webサイトでいい
• HTTPSアクセスしたい
• AWS CDK（IaC）で簡単に書きたい
CloudFrontとS3を使った構成がぴったり！


# Page. 75

![Page Image](https://bcdn.docswell.com/page/2JVDX6DGJQ.jpg)

CloudFrontとS3でWebサイトをホスティングする
• S3に静的Webサイトのリソースを配置する（index.html）
• CloudFrontのOAC(Origin Access Control)を使用することで安全にWebサ
イトを公開できる
• S3静的Webサイトホスティング機能は使わない
（パブリックアクセスを許可する必要があるため）
• AWS CDKなら20行で簡単に構築可能
※コンソールから作業する場合はAmplify Hostingがおすすめ
https://aws.amazon.com/jp/blogs/news/amazon-cloudfront-introduces-origin-access-control-oac/


# Page. 76

![Page Image](https://bcdn.docswell.com/page/5EGYVNVDEL.jpg)

完成！
CORS設定する
今回は index.html が1つだけ


# Page. 77

![Page Image](https://bcdn.docswell.com/page/4JQM6Q6X7P.jpg)

アーキテクチャ


# Page. 78

![Page Image](https://bcdn.docswell.com/page/K74V4N42J1.jpg)

ソースコードへのリンク


# Page. 79

![Page Image](https://bcdn.docswell.com/page/LJ13454K7G.jpg)

誰でも簡単にデプロイできます
• 全てのソースコードは以下リポジトリにて公開中
• https://github.com/kkmtyyz/santa-present-delivery-system
• AWS CDK(IaC)にてAWS上にデプロイできます（課金注意）
• AWS CDK: TypeScript
Lambda: Python
Webアプリ: HTML, JavaScript


# Page. 80

![Page Image](https://bcdn.docswell.com/page/GJWPX5XP72.jpg)

まとめ


# Page. 81

![Page Image](https://bcdn.docswell.com/page/4EZK6N66E3.jpg)

まとめ
• AWSを使うと面白いアイデアを素早く形にできる
• Amazon Bedrockなら生成AIを簡単にシステムに組み込める
• 難しいソリューションもAWS Marketplaceなら素早く実現できる


# Page. 82

![Page Image](https://bcdn.docswell.com/page/Y76Q282L7V.jpg)

まとめ
• AWSを使うと面白いアイデアを素早く形にできる
• Amazon Bedrockなら生成AIを簡単にシステムに組み込める
AWSでアイデアを形にしましょう！
• 難しいソリューションもAWS Marketplaceなら素早く実現できる


# Page. 83

![Page Image](https://bcdn.docswell.com/page/G75R292ME4.jpg)

ご清聴ありがとうございました。


