danmaid / danmaid.com

https://danmaid.com
MIT License
0 stars 0 forks source link

負債の整理 #11

Open danmaid opened 1 year ago

danmaid commented 1 year ago

あちこちに散らばっていて、地味にコストがかかっているものを整理する。

大したコストではないのだが、円安の影響もあって地味に効いてきた。

danmaid commented 1 year ago

AWS IAM MFA の登録のとき、 「MFA デバイスから 2 つの連続したコードを入力します。」ってところには、30秒くらいで有効期限が切れるワンタイムパスワードを2回分連続で入れるってこと。

danmaid commented 1 year ago

コストトップである ELB を何とかする。 ELB の用途は、 https の提供。ただ、 1 台あたり 毎月 USD 13.91 ほどかかっている。USD/JPY 1:150 だとすると 2千円。イタタ。 https の提供用途としては CloudFront が良い。こっちは 3つほど設定入れているけど USB 0.01。スバラシイ。

でも、結局 Origin として提供するコンテンツとして ELB 使っていたら元も子もないので、 CloudFront + XXX (ELB以外) の手段に置き換えられる何某を確認していく。

danmaid commented 1 year ago

っとその前にちょっと思ったのが、元々 N. Virginia と Oregon に配置していたわけで、それは一番安いから。円安になったから東京が安くなった・・・。なんてことはないよな・・。

danmaid commented 1 year ago

N. Virginia: 0.0225 618 = 13.905 Oregon: 0.0225 618 = 13.905 東京: 0.0243 618 = 618 = 15.0174

昔からこんなもんな気がするが。。。

danmaid commented 1 year ago

デフォルトルールによって静的コンテンツの提供をしている。これは CloudFront + S3 で行けるはず。Content-Type にはちょっと注意が必要かも?

WebSocket と SSE はどうするか。

image

danmaid commented 1 year ago

WebSocket は API Gateway かな。 https://aws.amazon.com/jp/api-gateway/pricing/#WebSocket_APIs

danmaid commented 1 year ago

SSE は・・・ API Gateway でできるのか?

danmaid commented 1 year ago

https://zenn.dev/microcms/articles/aws-serverless-http-response-streaming#lambda-%2B-api-gateway

この人も書いている通り、たぶんできないはず。 WebSocket は専用の投げ先みたいなのを API Gateway が提供してくれるので、そこにちょいちょい書くってやり方で実現していたはず。

danmaid commented 1 year ago

さっきの人曰く、 AppRunner ではできるらしい。 AppRunner ってなんだ?

danmaid commented 1 year ago

コンテナベースでまるっとやってくれるやつらしい。要は組み合わせ系だろう。そして時間課金なのでこれは却下かな。

danmaid commented 1 year ago

もう一つの候補として Lambda Function URL か。

danmaid commented 1 year ago

これはいけそう。料金計算もいい感じ。 https://aws.amazon.com/jp/lambda/pricing/#Lambda_HTTP_Response_Stream_Pricing

たぶん無理だと思うけど lambda@edge でできたら・・・ハッピーなんだが。

danmaid commented 1 year ago

なんとなく行けるような気がしなくもないが、そもそも lambda@edge だと VPC リソースにアクセスできないので、意味があるのか?

danmaid commented 1 year ago

結論。

aws.danmaid.com => ELB の置き換え先

これで。

danmaid commented 1 year ago

違った。それはそれで検証できたけど、 ELB の部分を CloudFront に置き換えるであれば、後ろ側は ECS のままにするのが正当か。

danmaid commented 1 year ago

んー。その場合、ECS でタスク (コンテナ) が落ちて再起動したとき、外部からの接続部分 (CloudFront) が変わってしまうからそこをケアする手段が必要になるのか。

danmaid commented 1 year ago

ということで、 AWS に関しては ECS も外す方向でよしとする

danmaid commented 1 year ago

HTTP ヘッダーによる振り分けは、 lambda@edge で。

image image image image image

lambda@edge のログがリージョンごとに CloudFront に配信されると思っていた(前は普通にされていた)のだが、全然配信されなくてしんどかった。ドキュメント通りに確認してみたけどダメだったのはなぜだろうなぁ。

danmaid commented 1 year ago

イベントの実装は・・・・。SNS でごにょごにょかなと思ったけど、EventBridge なんていう素敵なものがあるじゃないか。

danmaid commented 1 year ago

いずれにしてもコードから直接 on するような使い方はできないようだな。ふむ

danmaid commented 1 year ago

API Gateway Websocket は。接続全体を管理する機能はないようで、個々の接続を別途管理してごにょごにょする。

ってことは無理に使わなくても?って気になるが、常時起動による課金を避けるためにはこれ以外の選択肢はない・・のかな。