- 経緯・目的
- AWS Lambda を学ぶ
- AWS Amplify を話にデてきたので学ぶ
- GraphQLも話にデてきたので学ぶ
- AppSync も話に出てきたので学ぶ
- AWS lambda の学習に戻る
- 時間まとめ
- この後
経緯・目的
- 検証環境のRDSがある (たまにしか使わない)
- RDSは停止しても7日間で勝手に起動する
- Lambdaで止めるのがよくあるパターン。止めたい
AWS Lambda を学ぶ
AWS Lambda とは
AWS Lambda(イベント発生時にコードを実行)| AWS を読む
lambdaを使用すれば、実質どのようなタイプのアプリケーションやバックエンドサービスでも管理を必要とせずに実行できます。
- サーバーレスの総本山
lambda関数をお気に入りの言語(node.js、python、go、javaなど)で記述 - うーん node か pythonだとは思うが…
インフラストラクチャのプロビジョニングや管理は必要ありません。
aws lambdaでは、消費したコンピューティング時間に対してのみ料金を支払う - エコ
関数に適切なメモリサイズを選択することにより、コード実行時間を最適化できます i
プロビジョニングされた同時実行を有効にすることで、関数を初期化し、2桁のミリ秒以内に応答するようにハイパー対応できる - オーラバトラー
リアルタイムストリーム処理。。aws lambdaとamazon kinesisを使用してリアルタイムのストリーミングデータを処理することで - リアルタイムストリームにも使える lambda ウェブアプリケーション。。デベロッパーは、aws lambdaをawsの他のサービスと組み合わせることで、スケールアップまたはスケールダウンを自動的に行う強力なウェブアプリケーションを構築し、複数のデータセンターにわたって可用性の高い設定で実行できます。 - ウェブアプリケーションにもつかえるらしい 2021/10/09 21:05 18m
サーバーレスアーキテクチャでは、bustleでインフラストラクチャを管理する必要は一切ないため、すべてのエンジニアは新しい機能の構築や新規開発に集中できます
チュートリアルしてみた
サーバーレスコードを実行する方法 – アマゾン ウェブ サービス (AWS)
料金チェック
AWS が設計した Arm ベースのプロセッサアーキテクチャを使用する Graviton2 で実行される AWS Lambda 関数は、x86 プロセッサで実行される関数と比較して、最大 34% 優れた料金パフォーマンスを実現します。 - 4割パフォーマンスがよいみたい
Arm 料金 GB-秒あたり 0.0000133334USD リクエスト 100 万件あたり 0.20USD - ◎まぁ、無いも同然な料金 (一日に何回か起動停止をするだけなら)
AWS Amplify を話にデてきたので学ぶ
AWS Amplify - 静的ウェブホスティング - アマゾン ウェブ サービス
- 静的配信らしい
静的ウェブアプリケーションをグローバルにデプロイおよびホストするためのフルマネージドサービスを提供し、信頼性の高い Amazon のコンテンツ配信ネットワークを介して、世界中に数百の POP (Point Of Presence) で配信
Amplify コンソールでアプリケーションのコードリポジトリを接続するだけで、コードコミットを行う度に、フロントエンドとバックエンドへの変更を単一のワークフローにデプロイします。
シングルクリックでamazon route53で管理されるカスタムドメインを設定し、無料のhttps証明書を受け取ります - 安全安心な証明書がもらえそう (Let's Encrypt が最近大変だった)
パスワードの保護。ユーザー名とパスワードを設定して、まだリリースされていない機能を内部関係者と共有します。
CloudFront との違いは?
Amplifyを使って完全サーバレスなWebアプリを作る|F Lab|Fixel株式会社
AWS Amplify は、Amazon CloudFront のグローバルエッジネットワークを活用して、ウェブアプリをグローバルに配信します
- Amplify VS CloudFront ではなく、Amplify uses CloudFront だね。 Amplify は CloudFormation みたいなものっぽい
awsのインフラ構築をすることが多いですが、今まではコツコツcloudformationのコードを書いていました。amplifyを使うと、コマンドラインでいくつか対話形式で選択・入力するだけで、コードを書くことなく、勝手にやってくれます。
※実際は裏でcloudformationが動いています。 - AWS CloudFromationのラッパーだった
amplifyはreact、vue.js、angularに対応していますが、今回はフロント実装にvue.jsを採用しています
amplifyに関わらず、cloudfront+s3の構成は反映にかなり時間が掛かる事があるので、accessdeniedが発生する時は、1?2時間ぐらい待つ必要があるかもしれません
GraphQLも話にデてきたので学ぶ
GraphQLはRESTの置き換えではない|こんぴゅ|note
- GraphQLはRESTの部分の開発がいらなくなるんだよね
restではurlがひとつのリソースを表すため、複数のリソースが必要な複雑な画面では複数回のapiリクエストが必要になる。
- フィールド指定も得意な GraphQL
graphqlサーバはスキーマ定義に対応するデータを複数のデータソースから引っ張るわけだが、直接dbを叩いてもいいし、既存のrestful apiを内部的に叩いてもokである。
キャッシュ効率。graphqlは単一エンドポイントなので、httpのcache-controllのようなurlベースのキャッシュ機構やcdnでのキャッシュはそのままでは使えない - 不便そう
graphqlではリクエストが通れば200で返し、何かエラーが発生した時はエラーオブジェクトに内容が吐かれる
AppSync も話に出てきたので学ぶ
AWS AppSync(アプリデータをリアルタイムで保存、同期)| AWS
- こんな名前だけど、 GraphQL 専用サービスみたい (わかりにくい)
- GraphQLはRESTの部分の開発がいらなくなるんだよね(重要事項)
- AWS サービス群の中で、モバイルの下にある AWS AppSync
- モバイル用APIみたいな感じで使われることが多いからかな?
オフラインのクライアントを簡単に同期できるようにするクライアント側のデータストア - ちょっと気になる 2021/10/11 18:47 4m
マネージド型のgraphqlサブスクリプションにより、aws appsyncでは、数百万のクライアントに対しwebsocketsを介して、データの更新をリアルタイムでプッシュできます - すごそう 2021/10/11 18:48 5m graphql apiを、aws cliやコンソール、amplify cli、もしくはcloudformation経由で、数秒の内に作成することができます。 - 俺は GraphQLをCF経由で数秒の内で作成することが可能なんだよ (ドローデーモン先生)
- X-Ray 知らない 2021/10/11 18:50 7m
- まぁ GraphQLのものだとわかった
- AppSync というのは、モバイルアプリケーションをデータと同期する、という意味だろう
- まぁ名前を素直に解釈すると、 モバイルアプリケーション(スマホアプリ)を最新版に同期させるものっぽいけど
AWS lambda の学習に戻る
というか、ここまでいうなら、80ポートでアクセスしたら hello world いう web サーバ作ってみたい 2021/10/09 21:07 20m
モジュール 1 - AWS で基本的なウェブアプリケーションを構築する
- このチュートリアルでやろうとしてるのは、
- 80を受けるの Amplify で作ったもの (多分cloudfront)
- lambdaはそこに動的処理を加える じゃん
- まぁ、餅は持ちやだね
- (80は CloudFrontで受けるべき)
- まぁ、Lambda を使うと、動的部分や更新部分を サーバなしでできるよ、ってことで。 2021/10/11 19:07 11m
というかそのものズバリ RDS lambda 落とす とかで調べてみたい
EC2ならあった
Lambda を使用して、Amazon EC2 インスタンスを一定の間隔で停止および起動する
- amazon cloudwatch events も使うの?
aws instance scheduler - ☆そういうのもあるのね
4.スケジュールに合わせこの関数をトリガーするよう、cloudwatch eventsのルールを作成します - 実は CloudWatch Events がcronみたいなものなのか?
3 STEP
- (1)権限
- (2)関数つくりとテスト
(3)cloudWatch Events ルール
[fixed rate of]に、分、時間、もしくは日の単位で時間間隔を入力します。[cron expression]に、lambdaにインスタンスを停止させる時刻を表すスケジュール式を入力します。 - ◎本当に CloudWatch Events でcronだった 2021/10/11 19:31 23m
最後に激ナがcFn テンプレートがついていた(時代は CDK)
これかな (LambdaでRDSを落とす)
https://go-journey.club/archives/11747
- ☆これをそのままやればできそう 2021/10/11 19:36 27m
せっかくなのでこれも (Lambdaで RDSや EC2を落とす)
移行先の開発環境の利用中においても、従量課金型サービスであれば、使用しない時間帯を設定することで、コスト削減につなげることができるようになります。i - ◎確かに 2021/10/11 19:38 (やりたいかもリストに載せた)
時間まとめ
- 2021/10/10にはじめた
- 2021/10/11 21:52におわった
- 40+44+53 = 137分かかった
- ↑の内、このブログにまとめるのに20分かかった
この後
- 実際に私物AWSでRDS自動で落とすのをやってみる
- やった: 次: AWS Lambda で RDSを止めた - t_hazawaの日記
- その後、業務のにやる
- でもその前に楽しいJS中級者3章読む (楽しい)
こういう風にRDSを落としていきたい
- ルールは、夜の間に落とす感じにしようか 2021/10/11 21:24
- 使ってるときに落ちると嫌なので 2021/10/11 21:24