フロントエンド専のエンジニアが見よう見まねでawsのLambdaを用いて個人開発をした

誰も興味ないサイトの紹介をする意義 仕事では主にAngular、Vue、Reactを使っているフロントエンドしかできない30歳が、インフラ~すべてに手を出してみた。 作成したはいいけど、12か月後、awsの無料枠終了を見据え、運用する気はない。 そこで、ひとつ記事にでも残しておこうという思いで筆を取ることにした。 作成したサービス Vote For Name-難読エンジニアワードの読み方を投票で決めよう 簡単なアンケートサイト。 アイデアに関しては、悲しいかな、特筆すべき点はない。 エンジニアリングするうえで、読み方がよくわからない言葉が良くあるので、それを投票で決めようといった魂胆。 競合とかは特に調べていない。 使用した技術 インフラ aws Lambda aws RDB aws API GateWay Vercel バックエンド NestJS TypeORM フロントエンド NextJS インフラ インフラは初めて、awsに手を出してみた。 永久無料枠がない従量課金制は初めてなので、請求に不安を感じる。 柔軟にスケールできていいのだろうけれど、スケールアップしないので、定額の方がうれしい。 まあ、いい勉強にはなった。 無料枠のよくわからないawsの無料枠について真剣に調べてみた CORSでクロスオリジンの設定をする際に、なんでドメインを絞り込む必要があるのか浅く理解した AWSのRDSに接続したいけど踏み台サーバーでうまく接続できなかったので、RDSをパブリックサブネットに置きHeidiSQLで接続を試みる バックエンド バックエンドにはNestJSを採用した。 理由は、フロントと言語を統一することで効率化を図れるという点と、学習コストが低そうだった点。 Angularに似ている言語ということで、普段Angularを業務利用している身としては、非常に手っ取り早く、概要をつかむことができた。 言語としての不満はなく、今後も使っていきたいと思ったが、いかんせん日本語の情報が少なく苦労した。 NestJSのエラーレスポンスをカスタマイズする NestJsで作成したプロジェクトをAWSのLambdaにあげて動かすまでの作業ログを残しておく LambdaにのせたNestJSでapp.enableCors();を指定しているのにCORSエラーがでたので解消するまでを記録した フロント 迷うことなく、NextJSにした。 現在、個人開発をするとなったら、一択の選択肢かなと感じている。 ただ今回、Next13のAppDirにちょっと戸惑う点もあった。 SSRの書き方とかが簡略してていいと思う反面、サーバーコンポーネントとかの概念がいまだにつかみ切れていない。 それでも、引き続きNextJSを採用し続けると思われる。 フロントのサーバーはVercelにアップしたNextJS使うのであれば、第一の選択肢だろうし、実際そうなった。 エックスサーバーで借りたドメインのサブドメイン使用し、Vercelにカスタムドメインを設定する このサービスの今後 awsの無料枠を終えた後も続けるメリットはないので、運用していく気はない。 ただせっかく勉強のために作ったので、無料枠を終えるまでは暇を見つけて、issueを解決していきたいと考えている。 isuue 動けばいいやという思いもありつくったので、細かい箇所を理解しつつ、ブラッシュアップしていきたい。 初回アクセス時Vercelがサーバーレス関数の発火をまたずにタイムアウトする。 CORSの設定をちゃんやる LambdaとGithubの連携をする JWT認証をCSRF認証に変更してみる マイグレーションの設定をちゃんとやる とか🤔🤔

投稿日 · 2023-08-24 · 更新日 · 2024-06-07 · 1 分 · nove-b

無料枠のよくわからないawsの無料枠について真剣に調べてみた

個人開発でawsデビューをしたが、料金不安なので調べてみることにした。 正直開発したサービスがawsの何のサービスを使用しているかわからないので請求書ダッシュボードからあげだしてみた。 請求書ダッシュボードにあるデータ AWSの概要 アクティブなサービスの合計数:8 アクティブな AWS リージョンの合計数:5 アクティブなサービスの合計数が何かというのを調べるために、aws の請求 > 請求に行き、サービス別料金を見ると一覧で見れる。 アクティブなサービス 今回は下記を使用しているらしい。 API Gateway CloudWatch Data Transfer Elastic Compute Cloud Key Management Service Lambda Relational Database Service Simple Storage Service ぱっと見、知らないサービスもあったが、いったん寝かせておく。 アクティブな AWS リージョン 次にアクティブな aws リージョンの合計数について調べてみる。 調べた感じ利用できるリレージョンとのこと、つまり使用しているリレージョンではない。 つまり気にしなくていい。 awsの無料枠 AWSの無料枠は注意が必要。 というのも3パターンの無料枠がある。 無料トライアル 指定期間利用できる無料枠 12 か月間無料 AWS に最初にサインアップした日から 12 か月間無料で使用できるプラン 無料枠 有効期限はなく、AWS のすべてのお客様が利用可能 つまり上の2つは期限が過ぎれば支払いが発生する可能性がある。 また最後の1つも枠を超えれば、支払いが発生する可能性がある。 ただこちらは枠さえ守れば永久的に無料で使用することができる。 AWS 無料利用枠を参照することで無料枠を調査することができる。 これを用い、使用したサービスの無料枠を中心に見ていきたい。 今回使用したawsのサービスがどういう無料枠の形態を取っているか API Gatewayは12か月無料で以降は課金される。 CloudWatchは無期限無料で10 のカスタムメトリクスおよびアラームが無料とのこと カスタムメトリックスはユーザーが独自に定義し、収集、監視できるメトリックデータのこと アラームとは特定の条件が満たされた場合にユーザーに通知を送信するための仕組み Data Transferは記述がない。 使っているかもわからない Elastic Compute Cloud(EC2)は12か月無料で以降は課金される。 Key Management Serviceは無期限無料で20,000/月の無料リクエスト枠がある Lambdaは無期限無料で100 万/月の無料リクエスト枠がある Relational Database Serviceは12か月無料で以降は課金される。 Simple Storage Service(S3)は12か月無料で以降は課金される。 うーん、どうなんだろう 正直、釈然としない。...

投稿日 · 2023-08-10 · 更新日 · 2024-06-07 · 1 分 · nove-b

AWSのRDSに接続したいけど踏み台サーバーでうまく接続できなかったので、RDSをパブリックサブネットに置きHeidiSQLで接続を試みる

awsのRDSにEC2を踏み台サーバーとしてアクセスしようとしたけど、うまくいかなかったので、RDSを一時的にパブリックサブネットにしたうえでアクセスしてみる。 aws知識0だがパブリックサブネットに変更するのは問題がありそうな気がするけど、テスト環境なのでやってみる。 パブリックアクセスを有効にする RDS > データベース > 該当DB名に行き、変更ボタンをクリックする。 接続の追加設定を選択し、パブリックアクセス可能にチェックを入れるて保存する。 セキュリティグループの変更 ポート3306の解放 接続とセキュリティ > VPC セキュリティグループをクリックする。 インバウンドルール > インバウンドのルールを編集をクリックする。 タイプでMYSQL/Auroraを選択する。 ソース でMyIPを選択すると今使用しているパソコンのIPアドレスでの接続に制限できる。 接続してみる 接続できない。 セキュリティグループを追加してみる 全部公開できそうなセキュリティグループを作成し、そちらを適用させる。 インバウンドグループ IP バージョン タイプ プロトコル ポート範囲 ソース IPv4 すべてのトラフィック すべて すべて 0.0.0.0/0 アウトバウンドルール IP バージョン タイプ プロトコル ポート範囲 送信先 IPv4 すべてのトラフィック すべて すべて 0.0.0.0/0 接続してみる これでクライアントツールでRDSにアクセスすることができた。 これでとりあえずテーブルの中身を見たいという課題は解決できた。 次は踏み台サーバーを設置し、正規の流れでアクセスできるようにしたい。

投稿日 · 2023-07-05 · 更新日 · 2024-06-07 · 1 分 · nove-b

NestJsで作成したプロジェクトをAWSのLambdaにあげて動かすまでの作業ログを残しておく

個人開発プロジェクトのバックエンドをNestJSで作成した。 公開したいので、awsのLambdaに乗せて動かしてみることにした。 初めてのaws、いつかの自分のために記録として一挙手一投足のログを残しておくことにする。 前提 $ node -v v18.16.0 "@nestjs/cli": "^9.0.0", バージョンは上記の通り。 で、Dockerの設定ファイルを諸々作ったが、使っていないので、ない前提でいく。 さて、それでは進めていく。 AWSアカウントの作成 AWSの公式ウェブサイトでアカウントを作成する必要がある。 ルートユーザーの E メールアドレス AWS アカウント名 で新規アカウント作成ができる。 その後、認証コードを経て、 パスワード 連絡先情報(英語で書けって言われたのでchatGPTに住所教えて英語にしてもらった...個人情報) 請求情報 本人確認 サポートプランを選択→無料のベーシックを選択 AWS アカウント作成の流れを参考にすればいけるけど、意外と時間画かかったし、アカウント作成時にクレジットカードを登録することはいい気がしない。 とりあえず、これでアカウント作成が完了した。 必要なパッケージのインストール ここからはNestJS-サーバーレスの公式を参考にしていく。 説明のために、Nest (@nestjs/platform-express完全に機能する HTTP ルーター全体を使用して起動) をサーバーレスフレームワーク (この場合は AWS Lambda をターゲットとしています) と統合します。 公式もawsで説明してくれているので、ありがたい。 $ npm i @vendia/serverless-express aws-lambda $ npm i -D @types/aws-lambda serverless-offline まずは上記の通り、必要なパッケージをインストールする。 "@vendia/serverless-express": "^4.10.4", "aws-lambda": "^1.0.7", "@types/aws-lambda": "^8.10.119", "serverless-offline": "^12.0.4", 上記のようなバージョンがインストールされた。 次に、serverless.ymlファイルを作成する。 service: serverless-example plugins: - serverless-offline provider: name: aws runtime: nodejs14....

投稿日 · 2023-06-25 · 更新日 · 2024-06-07 · 4 分 · nove-b