テスト環境を構築検討していく③【踏み台サーバ作成】
こんにちは投資ロウトです。
背景
ある程度NestJSでAPIの作成も進んできたので、Postmanによる単体テストではなく、アプリからのAPI呼び出しで動作を確認していきたいという思いも進めていくと出てくると思います。
ただなるべくコストを抑えていきたいため、本番環境よりもコストを抑えた類似環境でテスト環境を構築していきます。
※ECSなどはリソースだけで費用がかかるので、EC2などのインスタンスを止めながら開発コストを抑えたい。
そのため本番環境を簡易で構築し、テストを行う環境を整備していきます。
踏み台サーバー作成
こちらもcloudformationでEC2でpublicサブネットに作成していきますが、踏み台サーバーを作成する前に、事前にキーペアが必要なので、事前に作成していきます。
キーペアの作成
①EC2でキーペアの画面に遷移
②キーペアを作成をクリックする
③名前を記載して、作成をクリックする
④ローカルにフォルダを作成
※すでに過去.sshフォルダを作成している前提
ダウンロードした.pemを.sshに配置する
mv ダウンロードしたファイル場所 ~/.ssh/キーペアのファイル名.pem
キーペアを作成したのでcloudformationで作成していく
【注意したこと】
踏み台サーバーはsshでアクセスするだけなので、コストを抑えること。
具体的には「AWS::EC2::Instance」のBlockDeviceMappingsのプロパティで、EbsのプロパティのVolumeSizeを8に設定や、VolumeTypeをgp2にしました。
【AMI ID】
検索方法について
なんやかんやで、作成に成功したようです。
踏み台サーバーへアクセスする
ssh -i ~/.ssh/キーペアのファイル user名@ポート番号
アクセス成功
便利だったこと
cloudformationでOutputsにexportとして定義することで、他のyamlファイルでimportしてパラメータが作成でき、構築が便利になりました。
また以下のcloudformationのエクスポートからそのエクスポートされた項目が使用できるようになります。
※ただSSMパラメータを利用した方法もあるらしいです。
■ AWS Systems Manager Parameter Store を使用して CloudFormation スタック間で値を共有する | AWS re:Post
便利なサイト
awsのcloudformationで使用するもののパラメータ等を解説したサイトがありました。
[*] AWS リソースおよびプロパティタイプのリファレンス
その他補足事項
EC2のインスタンスで、「停止」&「開始」と「再起動」で挙動が違うのは、初めて知りました。「停止」&「開始」は仮想サーバーが入れ替わるが、「再起動」の場合はそのままとのことでした。
その際に以下のような違いがあるとのことです。
例)
AWSのハードウェアにトラブルが発生した。
→「停止」&「開始」による仮想サーバーの入れ替え操作にて、ハードウェア等が起因のエラーだった場合は解決されるとのことでした。
その他利用できるサービスについて
- AWS Elastic Beanstalk
AWS Elastic Beanstalk・・・AWS クラウド上のアプリケーションにおける迅速なデプロイ・管理が可能となるサービスで、リソースのプロビジョニング、ロードバランシング、Auto Scaling、モニタリングなどの自動的な処理が可能。
- AWS App Runner
AWS App Runner・・・API サービスなどの Web アプリケーションを AWS クラウド環境で実行するためのお手軽な方法となり、既存のコンテナイメージやソースコードを、AWS クラウド上で動作するコンテナ化された Web アプリケーションとして実行できる。
- AWS Lambda
AWS Lambda・・・イベント発生時にお客様のコードを実行する、サーバーレスコンピューティングサービスで、Amazon API Gateway を使用し、Lambda 関数の HTTP エンドポイントを持つ Web API を作成できる。
Discussion