Open danmaid opened 1 year ago
AWS IAM MFA の登録のとき、 「MFA デバイスから 2 つの連続したコードを入力します。」ってところには、30秒くらいで有効期限が切れるワンタイムパスワードを2回分連続で入れるってこと。
コストトップである ELB を何とかする。 ELB の用途は、 https の提供。ただ、 1 台あたり 毎月 USD 13.91 ほどかかっている。USD/JPY 1:150 だとすると 2千円。イタタ。 https の提供用途としては CloudFront が良い。こっちは 3つほど設定入れているけど USB 0.01。スバラシイ。
でも、結局 Origin として提供するコンテンツとして ELB 使っていたら元も子もないので、 CloudFront + XXX (ELB以外) の手段に置き換えられる何某を確認していく。
っとその前にちょっと思ったのが、元々 N. Virginia と Oregon に配置していたわけで、それは一番安いから。円安になったから東京が安くなった・・・。なんてことはないよな・・。
N. Virginia: 0.0225 618 = 13.905 Oregon: 0.0225 618 = 13.905 東京: 0.0243 618 = 618 = 15.0174
昔からこんなもんな気がするが。。。
デフォルトルールによって静的コンテンツの提供をしている。これは CloudFront + S3 で行けるはず。Content-Type にはちょっと注意が必要かも?
WebSocket と SSE はどうするか。
WebSocket は API Gateway かな。 https://aws.amazon.com/jp/api-gateway/pricing/#WebSocket_APIs
SSE は・・・ API Gateway でできるのか?
https://zenn.dev/microcms/articles/aws-serverless-http-response-streaming#lambda-%2B-api-gateway
この人も書いている通り、たぶんできないはず。 WebSocket は専用の投げ先みたいなのを API Gateway が提供してくれるので、そこにちょいちょい書くってやり方で実現していたはず。
さっきの人曰く、 AppRunner ではできるらしい。 AppRunner ってなんだ?
コンテナベースでまるっとやってくれるやつらしい。要は組み合わせ系だろう。そして時間課金なのでこれは却下かな。
もう一つの候補として Lambda Function URL か。
これはいけそう。料金計算もいい感じ。 https://aws.amazon.com/jp/lambda/pricing/#Lambda_HTTP_Response_Stream_Pricing
たぶん無理だと思うけど lambda@edge でできたら・・・ハッピーなんだが。
なんとなく行けるような気がしなくもないが、そもそも lambda@edge だと VPC リソースにアクセスできないので、意味があるのか?
結論。
aws.danmaid.com => ELB の置き換え先
これで。
違った。それはそれで検証できたけど、 ELB の部分を CloudFront に置き換えるであれば、後ろ側は ECS のままにするのが正当か。
んー。その場合、ECS でタスク (コンテナ) が落ちて再起動したとき、外部からの接続部分 (CloudFront) が変わってしまうからそこをケアする手段が必要になるのか。
ということで、 AWS に関しては ECS も外す方向でよしとする
HTTP ヘッダーによる振り分けは、 lambda@edge で。
lambda@edge のログがリージョンごとに CloudFront に配信されると思っていた(前は普通にされていた)のだが、全然配信されなくてしんどかった。ドキュメント通りに確認してみたけどダメだったのはなぜだろうなぁ。
イベントの実装は・・・・。SNS でごにょごにょかなと思ったけど、EventBridge なんていう素敵なものがあるじゃないか。
いずれにしてもコードから直接 on するような使い方はできないようだな。ふむ
API Gateway Websocket は。接続全体を管理する機能はないようで、個々の接続を別途管理してごにょごにょする。
ってことは無理に使わなくても?って気になるが、常時起動による課金を避けるためにはこれ以外の選択肢はない・・のかな。
あちこちに散らばっていて、地味にコストがかかっているものを整理する。
大したコストではないのだが、円安の影響もあって地味に効いてきた。