Herokuの無料プランが無くなるらしいのでojosamaのインフラをAWSへ移行する
こういう情報が来た
有料プランは月額700円
まぁ月額700円程度なら有料プランにしても良いが、AWSの勉強にもなるのでアプリケーションをAWSで動作する構成に作り変えたい ということでアプリケーションの設計と移行計画を練る
現状のアプリケーション構成
フロントエンド
バックエンド
名前解決
移行後のアプリケーション構成
フロントエンド
素のHTMLとJS
バックエンド
名前解決
期待値
無料枠に多分収まる
移行計画
/icons/pass.icon heroku側の画面にのみお知らせを追加する location.hrefをJSで強制的に書き換えて画面遷移させたり、リダイレクトで飛ばしたりしても良いんだけれど、違うドメインにいきなり飛ばすのは人によっては不安に感じるかもしれないのでやらない
あくまでユーザ自身の操作で画面遷移してもらう
/icons/pass.icon ojosamaの各種ドキュメント(README、API仕様書など)を修正 /icons/pass.icon ojosamaのAPIを使ってるOSSに修正PRを出す その他
/icons/pass.icon API Gatewayのスロットリング設定
/icons/pass.icon CloudFrontのプライスクラス設定変更
最終的なインフラ構成
https://gyazo.com/f65e9af157bf9d87162d07365be0abc3
code:plantuml
@startuml
actor ユーザ as u
actor 開発者 as dev
cloud AWS {
package ユーザがアクセスする領域 {
database S3 as s3
}
package デプロイ機構 {
}
}
node GitHub as gh
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円程度なので、だいぶお安く運用できてる