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
860
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
430
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
730
立川で超かぐや姫!について話したい / Talking Cosmic Princess Kaguya! in Tachikawa
contour_gara
1
460
AR グラス + ミニ PC で実現する新しいモバイル環境
contour_gara
0
390
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
600
Other Decks in Programming
See All in Programming
FreeBSDでZabbixを動かす
kenkino
0
300
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
130
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
180
AI活用は、個人から組織へ|マルチプレイヤーエージェントハーネス「QM」の社内活用事例 / AI use is moving from individuals to orgs
rkaga
1
110
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
420
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
1.3k
Webの地図
yosuke_furukawa
PRO
6
4.6k
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
240
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
490
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
140
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
410
How I Stole PSI from Android Studio - DroidKaigi2026
worker8
0
130
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
Building AI with AI
inesmontani
PRO
1
1.2k
Fireside Chat
paigeccino
43
4k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
450
The browser strikes back
jonoalderson
0
1.7k
Amusing Abliteration
ianozsvald
1
300
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
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