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
AWSでのやらかした話
Search
O'hashi Ryuzi
February 08, 2026
29
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWSでのやらかした話
O'hashi Ryuzi
February 08, 2026
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
Google's AI Overviews - The New Search
badams
0
1.6k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Site-Speed That Sticks
csswizardry
13
1.6k
The agentic SEO stack - context over prompts
schlessera
0
970
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
570
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
Transcript
AWSでのヒヤッとやらかした話
自己紹介 • 1969年生まれ • 勤務先:クロスケアフィールド株式会社 ◦ 自社サービス開発、メンテナンス • スキル:Ruby, Vue,
Nuxt ◦ 元グラフィックデザイナー ◦ プログラマは30歳から • 趣味:料理、機械修理、ゲームなどなど
クロスケアフィールドのサービス 患者中心の医療系SNS 2014年 ファーストリリース ビデオ通話アプリ 2024年 ベータリリース オンライン診療 予約システム 2025年
アルファリリース
AWS利用は2023年から 直前の環境はMicrosoft AzureのVMで構成 デプロイは手動でAPIサーバーのファイルを上書きして再起動。 Vue.jsは手元でビルドしたファイルを Nginxの公開ディレクトリに上書き Azure VM Ngix Puma
(Rails APサー バー) APIモード リバースプロキシ Vue.jsアプリ ケーション Azure Database for MySQL
AWSで構成するにあたり、 ECSを利用したい! コンテナサービスを利用することで、 VMのOSその他の足回りメンテナンスから解放されたい 開発もDocker-Composeを利用することで、環境をほとんど本番と同じように構成できる RailsコンテナはProduction構成のDockerFileでビルドすれば、ECRにPushしてデプロイできる
Railsの方はバッチリだ!で、 Vue.jsは? 開発環境上ではVue.jsは別コンテナ → テスト中はDevServeを起動してうまいことできてる Nginxコンテナを作る? → コンテナ作っても結局ビルドしたファイルを配置するだけだし。 コンテナ増やす分コストも掛かりそう ビルドした Vue.jsのSPAファイルを S3で配布 すればいいんじゃね?
ビルドした Vue.jsのSPAアプリをS3で配布する CloudFrontの設定でnarrativebook.jp/のパスで来たものをS3バケットnarrativebook-staticバケットに回送 (APIサーバーへのアクセスのために narrativebook.jp/api*はRailsコンテナへ回送 そのままだと、SPAのパス(例:narrativebook.jp/maintimeline/1)のファイルを取りに行ってしまうので、 SPAの ルーティングに乗らない ↓
バケットへのアクセスはCloudFront以外許さず、index.html以外のアクセスは許さない =余計なパスにアクセス したときには404もしくは403エラーが発生 ↓ 404及び403エラーを返した場合、エラーを握りつぶして index.htmlへ回送=SPAのルーティングで処理される
Vue.jsのデプロイ ローカルでビルドしたファイルを S3に上書きアップロード S3に上書きアップロード 上書きアップロード
そして事件は起こる
操作していると突然トップページに遷移してしまう 実は閲覧したいページの閲覧権限がなかった → 本来なら403エラーページが表示されるはず・・・ バックエンドのAPIが403エラーもしくは404エラーを返したときも同じことが起きていた 対策: 結局、バックエンドでは 403も404も全て400で返すことで対応 404及び403エラーを返した場合、 エラーを握りつぶしてindex.htmlへ回送=SPAのルーティングで処理される
フロントエンドとバックエンドが繋がっていない 環境を揃えたStagingとProductionがあるが、 Production環境ににStaging用にビルドしていたファイルをアップロードしていた 画面の一部にビルドバージョンと指向先環境識別の文字列をこっそり表示していたので判明 デプロイは常に深夜(0時ころ)に行い、デプロイ後毎度動作確認していたのですぐに気づいた 対策: 気をつけよう
抜本的な対策 現在のVue.js配布方法が問題。 VueからNuxtに変更してNitroサーバーコンテナとRailsコンテナを並列で動作させる 最新のプロダクト「NarrativeReception」では導入済み 残りもこれに移行する予定・・・
結論 結局ヒューマンエラーが一番問題 できるだけ間違いが発生しないように環境を設計すること こそが大事 AWSあんまり関係なかった