Herokuの無料プランが無くなるらしいのでojosamaのインフラをAWSへ移行する
こういう情報が来た
有料プランは月額700円
まぁ月額700円程度なら有料プランにしても良いが、
AWSの勉強にもなるのでアプリケーションを
AWSで動作する構成に作り変えたい
ということでアプリケーションの設計と移行計画を練る
現状のアプリケーション構成
フロントエンド
バックエンド
名前解決
移行後のアプリケーション構成
フロントエンド
素のHTMLとJS
バックエンド
名前解決
期待値
無料枠に多分収まる
移行計画
location.href
をJSで強制的に書き換えて画面遷移させたり、リダイレクトで飛ばしたりしても良いんだけれど、違うドメインにいきなり飛ばすのは人によっては不安に感じるかもしれないのでやらない
あくまでユーザ自身の操作で画面遷移してもらう
ojosamaの各種ドキュメント(README、API仕様書など)を修正
その他

API Gatewayのスロットリング設定

CloudFrontのプライスクラス設定変更
最終的なインフラ構成
plantuml@startuml
actor ユーザ as u
actor 開発者 as dev
cloud AWS {
package ユーザがアクセスする領域 {
[CloudFront] as cf
database S3 as s3
[Route53] as r53
[API Gateway] as apigw
[Lambda] as l
}
package デプロイ機構 {
[CodePipeline] as pipe
[Codebuild] as build
}
}
node GitHub as gh
r53 -[hidden]right- l
u -down-> r53 : 名前解決
u -down-> cf : GET index.html
cf -down-> s3
u -down-> apigw : POST /
apigw -down-> l : Lambdaプロキシ
dev -up-> gh : push
pipe -down-> gh : 更新チェック
pipe -up-> build : 起動
build -up-> s3 : 静的ファイル更新
build -up-> l : UpdateFunctionCode
build -up-> cf : Invalidation
@enduml
こうすればアクセスキーも発行不要だし、
GItHub側に認証情報を渡さずにすむ
完了
一応移行は完了した
まだHeroku側は動いているので、
AWS側と並行稼働している状態
10月中のどっかのタイミングで
herokuを解約、あるいはアプリの削除すれば後始末も完了
完全サーバレス構成にできて大変満足
・・・がユーザが任意の処理を実行できてしまうので危うさがある
少なくともLambdaに割り当てている権限分はなんらかの処理が実行できてしまう
インターネットに出ていけないように制御することはできても、何らかのAWSリソースを操作できてしまう危険がある
あとLambdaの実行環境内に何らかの認証情報や、アカウントIDなどの大事な情報が含まれてる可能性もある
なんらか頑張ってそれらのデータを引っこ抜かれたらアウトなので、移行に踏み切れないでいる
サーバの保守するの嫌なので、サーバレスな構成にしつつ値段を抑えられる構成にしたい
できないのだったらぶっちゃけアプリを停止したい気持ちが最近ある
今後
EC2使う機会は減っていくのでわざわざ覚えたくない気持ちがある
毎月のAWS費用は70円程度なので、だいぶお安く運用できてる