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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Daisuke Garaike
August 04, 2026
Programming
960
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
460
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
820
立川で超かぐや姫!について話したい / Talking Cosmic Princess Kaguya! in Tachikawa
contour_gara
2
530
AR グラス + ミニ PC で実現する新しいモバイル環境
contour_gara
0
430
TDD 実践ミニトーク
contour_gara
1
450
Spring Boot と AWS S3 を使ったアプリケーションのテスト
contour_gara
0
180
ノート PC に Linux 入れてみたけど結構良かった
contour_gara
0
3.7k
JUnit5 から Kotest へ
contour_gara
0
230
社外での学びを社内に還元したい
contour_gara
1
610
Other Decks in Programming
See All in Programming
LLM 101
dalinaum
0
440
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
3
1.6k
Modernizing iOS Apps
seyfoyun
0
140
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
400
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
210
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
3
1.3k
JIS keyboard support in Omarchy
lef237
0
180
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
500
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
350
AmebaブログはKMPから卒業します
kmars0605
0
310
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
140
Engineering Biometric UX Across Android Versions | DroidKnights 2026
ryunen344
0
110
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
エンジニアに許された特別な時間の終わり
watany
109
250k
Designing for Timeless Needs
cassininazir
1
540
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
490
The Pragmatic Product Professional
lauravandoore
37
7.5k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
540
Being A Developer After 40
akosma
PRO
92
590k
WENDY [Excerpt]
tessaabrams
14
40k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
620
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
650
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