Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running ...
Search
Daisuke Garaike
August 04, 2026
Programming
930
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
https://tamadev.connpass.com/event/395127/
Daisuke Garaike
August 04, 2026
More Decks by Daisuke Garaike
See All by Daisuke Garaike
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
440
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
780
立川で超かぐや姫!について話したい / Talking Cosmic Princess Kaguya! in Tachikawa
contour_gara
1
490
AR グラス + ミニ PC で実現する新しいモバイル環境
contour_gara
0
410
TDD 実践ミニトーク
contour_gara
1
440
Spring Boot と AWS S3 を使ったアプリケーションのテスト
contour_gara
0
170
ノート PC に Linux 入れてみたけど結構良かった
contour_gara
0
3.7k
JUnit5 から Kotest へ
contour_gara
0
220
社外での学びを社内に還元したい
contour_gara
1
610
Other Decks in Programming
See All in Programming
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
370
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
330
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
110
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
480
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
400
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
140
Are APIs Still Relevant in the AI Era?
soyuka
0
450
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
180
R8 の設定見直しでアプリサイズ削減
andpad
0
210
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
650
Kubernetes祭り #2 OP/ED
bells17
0
110
Featured
See All Featured
Music & Morning Musume
bryan
48
7.4k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
300
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
So, you think you're a good person
axbom
PRO
2
2.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
320
エンジニアに許された特別な時間の終わり
watany
109
250k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
270
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Transcript
S3 を使うアプリケーションを ローカル完結で動かすことに 全力を注いでみた 2026-08-07 多摩.dev #4 Daisuke Garaike
課題 1 AWS が外部サービス
終 制作・著作 gara
LocalStack を使う • Docker • compose.yaml services: app: environment: AWS_S3_ENDPOINT:
http://localstack:4566/ localstack: image: localstack/localstack-pro:latest environment: LOCALSTACK_AUTH_TOKEN: ${TOKEN} 4
課題 2 ブラウザから 署名付き URL が叩けない
署名付き URL • バックエンドを経由せずに S3 のファイルを使える • ブラウザからアクセスする 6
なぜブラウザから署名付き URL が叩けないのか services: app: environment: AWS_S3_ENDPOINT: http://localstack:4566/ • アプリが発行する署名付き
URL は、 http://[BUCKET].localstack:4566/ • もちろん名前解決できない 7
*.localhost.localstack.cloud • localhost に名前解決される ◦ *.localhost.localstack.cloud -> localhost.localstack.cloud -> localhost
8
アプリで localstack に向ける必要がある services: app: environment: AWS_S3_ENDPOINT: http://s3.localhost.localstack.cloud:4566/ localstack: image:
localstack/localstack-pro:latest networks: default: aliases: - s3.localhost.localstack.cloud environment: 9 LOCALSTACK_AUTH_TOKEN: ${TOKEN}
無事にブラウザから署名付き URL が叩ける • [BUCKET].s3.localhost.localstack.cloud:4566 -> localhost.localstack.cloud:4566 -> localhost:4566 ◦
LocalStack のコンテナが 4566 を ローカルにマッピングする必要あり 10
終 制作・著作 gara
課題 3 え? オフラインで動かない?
LocalStack はオフラインでは動かない services: localstack: image: localstack/localstack-pro:latest environment: LOCALSTACK_AUTH_TOKEN: ${TOKEN} •
トークン認証 • 公開 DNS による *.localhost.localstack.cloud 解決 13
LocalStack やめよう • MinIO を使おう ◦ 追記: MinIO は登壇時点でメンテナンスを 終了しているようです。
使用する際は自己責任でお願いいたします。 MinIO の他にも S3 フェイクを実現する サービスはあるので、それらを使うことを 推奨いたします。 14
トークン認証は解決するが、公開 DNS 問題は? • *.localhost は、localhost になる ◦ RFC 6761
“Special-Use Domain Names” (2013) ◦ 外部の DNS に問い合わせずにループバック • MinIO に自分は s3.localhost だと 思わせれば勝ち ◦ [BUCKET].s3.localhost -> localhost ◦ MINIO_DOMAIN で指定可能 15
オフラインでも動くローカル完結アプリの完成 services: app: environment: AWS_S3_ENDPOINT: http://s3.localhost:9000/ minio: image: minio/minio:latest networks:
default: aliases: - s3.localhost environment: MINIO_DOMAIN: s3.localhost 16
S3 は ローカルでかつ オフラインで 動かせる 終 制作・著作 gara