エックスサーバーで借りたドメインのサブドメイン使用し、Vercelにカスタムドメインを設定する

過去にドメイン関係のトラブルに見舞われたことがある。 ドメイン関係のトラブルはクリティカルなので非常にそわそわする。 そんな時エックスサーバーのサポートが手厚く、以来、レンタルサーバー・ドメインはエックスサーバーにお世話になっている。 そのため、今回新たに作成したWebサービスもエックスドメインで借りたドメインのサブドメインに紐づけることにした。 サーバーはVercelに浮気した。 エックスサーバーでサブドメインを作成する 前述したとおり、エックスサーバーは非常にサポートが充実している。 なので、サブドメインの作成を改めてここに書く必要なんてない。 公式が最も正しく、詳しい。 サブドメイン設定を参考にサブドメインを作成する。 Vercelに紐づける 大前提としてVercelにプロジェクトが既にあるという体で進めていく。 Vercel管理画面 SettingsタブをクリックしProject Settingsページに遷移する。 サイドナビのDomainsをクリックし、inputに作成したサブドメインを入力しAddボタンをクリックする。 https://は不要なので注意。 Invalid Configurationという警告がでるが、Vercelに認識はしてもらった。 エックスサーバー管理画面 DNSレコード設定をクリックしDNSレコード一覧から対象ドメインを選択し変更ボタンをクリックする。 ここでDNSレコードが設定できるので、下記のように設定する。 項目 値 ホスト名 [サブドメイン名] 種別 CNAME 内容 cname.vercel-dns.com 優先度 上記設定を追加し、しばらく待つ。 Vercelサービスに割り当てられるドメイン サービスを作成すると独自に、割り当てられるドメインがある。 service-name.vercel.app のようなやつ。 独自ドメインを設定した暁には、このドメインをリダイレクトするのがいいと思われる。 先ほど設定したドメインの下にこのドメインがあると思うので、Editボタンをクリックすると、Redirect toというセレクトボックスがある。 そこに先ほど設定したドメインが表示されると思うので、選択し、Saveすればリダイレクトが完了する。 もしこの設定を行わないとGoogleのクローラーはどのように判断するのだろうか。 コピーサイトと間違われることもありそうなので、リダイレクトはしたほうがいい。 ただサブドメインを使用する場合は、友人に共有したいけどメインドメインがばれるのが嫌という人も多いだろう。 その場合はシェア用に取っておくのも有りかもしれない。 Vercel管理画面にて、Valid Configuration・Assigned to main 5分くらいでValid Configurationが上記のような表記に変更された。 実際に設定したドメインを訪れると作成したサービスにアクセスすることができた。 キャッシュを消さないと見れないかもしれないので注意が必要。

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

LambdaにのせたNestJSでapp.enableCors();を指定しているのにCORSエラーがでたので解消するまでを記録した

POSTメソッドを叩いたらエラーが出た NestJSで作成したAPIをLambdaに乗せ、API Gatewayでエンドポイントを作成した。 フロントエンドはNextJSで作成し、Vercelにデプロイした。 で、無事画面表示とGetが成功し、得たいデータが表示された。 ただPOST APIを叩いた時 Access to fetch at 'https://xxxxxx.amazonaws.com/api/v1/login' from origin 'https://xxxxxxx.vercel.app' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status. というエラーがでた。 CORSは有効にしている 上のエラーを読む限り、CORSに関するエラーということがわかる。 ただNestJSの方でCORSは有効にしている。 該当のソースは下記の通り。 const app = await NestFactory.create(AppModule); await app.init(); app.useGlobalPipes(new ValidationPipe()); app.useGlobalFilters(new HttpExceptionFilter()); // CORSの有効化 app.enableCors(); const expressApp = app.getHttpAdapter().getInstance(); return serverlessExpress({ app: expressApp }); Getはできているし、CORSもきっと有効に出来ているに違いない。 じゃあ、なんでPOSTはできないの? 沼に落ちた。 解決方法 ちなみに同じ状況に陥った人のために先に解決方法を載せておくと、下記のようにawait app....

投稿日 · 2023-07-12 · 更新日 · 2024-06-07 · 2 分 · 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

JavaScriptにおけるcount++と++countの違いについて調べてみた

なんとなく怪しいので、count++と++countについて調べてメモしておく。 実行してみる const pre = () => { let count = 0 console.log(++count, 'pre') } const post = () => { let count = 0 console.log(count++, 'post') } pre() // [LOG]: 1, "pre" post() // [LOG]: 0, "post" 前置インクリメント演算子 pre()の方はcountの値が1増えてから更新された値が返されるので、1が出力される。 後置インクリメント演算子 post()の方はcount の現在の値を返し、その後に1を加算するので、0が出力される。 それぞれ適宜場合を見て使用する必要がある。

投稿日 · 2023-06-28 · 更新日 · 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