Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9030

Node.jsアプリケーションをElastic Beanstalkにデプロイする

$
0
0

以下の記事を参考に進めます。

Express アプリケーションを Elastic Beanstalk にデプロイする - AWS Elastic Beanstalk

EB CLI のインストール

brew update
brew install awsebcli
eb --version
> EB CLI 3.18.1 (Python 3.8.2)

eb init コマンドを使用してリポジトリを作成

mkdir node-express
cd node-express
eb init --platform node.js --region ap-northeast-1
> You have not yet set up your credentials or your credentials are incorrect 
> You must provide your credentials.
(aws-access-id): 
(aws-secret-key): 

IAMユーザーを未作成の場合はIAMユーザーを作成します。

IAMユーザの作成

スクリーンショット 2020-05-26 21.13.14.png

スクリーンショット 2020-05-26 21.15.09.png

これを先ほど聞かれたアクセスID、アクセスキーに入力する。

(aws-access-id): 
(aws-secret-key): 

eb create コマンドを使用して、サンプルアプリケーションを実行する環境を作成

以下のコマンドで、Node.jsと以下のリソースで負荷分散環境を作成します。

eb create --sample node-express-env

出力結果は以下の通り。

Environment details for: node-express-env
  Application name: node-express
  Region: ap-northeast-1
  Deployed Version: Sample Application
  Environment ID: e-8ipq7n7qmh
  Platform: arn:aws:elasticbeanstalk:ap-northeast-1::platform/Node.js running on 64bit Amazon Linux/4.14.3
  Tier: WebServer-Standard-1.0
  CNAME: UNKNOWN
  Updated: 2020-05-26 12:19:11.692000+00:00
Printing Status:
INFO    createEnvironment is starting.
INFO    Using elasticbeanstalk-ap-northeast-1-421146132732 as Amazon S3 storage bucket for environment data.
INFO    Created security group named: sg-01af1a0ddcfd9d7ca
INFO    Created load balancer named: awseb-e-8-AWSEBLoa-2E65Q23TKP6X
INFO    Created security group named: awseb-e-8ipq7n7qmh-stack-AWSEBSecurityGroup-T1U98MDMFMSA
INFO    Created Auto Scaling launch configuration named: awseb-e-8ipq7n7qmh-stack-AWSEBAutoScalingLaunchConfiguration-19I5UVFLE902H
INFO    Created Auto Scaling group named: awseb-e-8ipq7n7qmh-stack-AWSEBAutoScalingGroup-QY68AJ6H91M9
INFO    Waiting for EC2 instances to launch. This may take a few minutes.
INFO    Created Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-1:421146132732:scalingPolicy:45a700e3-bae8-437c-8d5b-d40e0c980cfd:autoScalingGroupName/awseb-e-8ipq7n7qmh-stack-AWSEBAutoScalingGroup-QY68AJ6H91M9:policyName/awseb-e-8ipq7n7qmh-stack-AWSEBAutoScalingScaleDownPolicy-18EMVJIJ45S9Z
INFO    Created Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-1:421146132732:scalingPolicy:178550d0-fc58-4642-a2bd-73013ffc9612:autoScalingGroupName/awseb-e-8ipq7n7qmh-stack-AWSEBAutoScalingGroup-QY68AJ6H91M9:policyName/awseb-e-8ipq7n7qmh-stack-AWSEBAutoScalingScaleUpPolicy-FTL8NRNS0CWG
INFO    Created CloudWatch alarm named: awseb-e-8ipq7n7qmh-stack-AWSEBCloudwatchAlarmLow-J8O5Z6ANTH8O
INFO    Created CloudWatch alarm named: awseb-e-8ipq7n7qmh-stack-AWSEBCloudwatchAlarmHigh-92OFURDBRAE5
INFO    Application available at node-express-env.eba-giwvvptw.ap-northeast-1.elasticbeanstalk.com.
INFO    Successfully launched environment: node-express-env
リソース説明
EC2 インスタンス説明省略
インスタンスセキュリティグループポート 80 上のインバウンドトラフィックを許可するように設定された Amazon EC2 セキュリティグループ
ロードバランサー説明省略
ロードバランサーセキュリティグループポート 80 上のインバウンドトラフィックを許可するように設定された Amazon EC2 セキュリティグループ。
Auto Scaling グループインスタンスが終了されたか利用不可になった場合にそのインスタンスを置き換えるように設定された Auto Scaling グループ
Amazon S3 バケットElastic Beanstalk の使用時に作成されるソースコード、ログ、その他のアーティファクトの保存場所
Amazon CloudWatch アラーム環境内のインスタンスの負荷をモニタリングし、負荷が高すぎたり低すぎたりするとトリガーする 2 つの CloudWatch アラーム
AWS CloudFormation スタックElastic Beanstalk はAWS CloudFormation を使用して環境内のリソースを起動し、設定の変更を伝達します
ドメイン名ウェブアプリケーションまでのルートとなるドメイン名であり、subdomain.region.elasticbeanstalk.com の形式です。

作成した環境を開く

eb open

サイトの表示が確認できた。
ちなみにこの時点でのディレクトリ構成は以下の通り、config.ymlがあるだけ。

.
├── .elasticbeanstalk
│   └── config.yml
└── .gitignore
.elasticbeanstalk/config.yml
branch-defaults:default:environment:node-express-envgroup_suffix:nullglobal:application_name:node-expressbranch:nulldefault_ec2_keyname:nulldefault_platform:Node.jsdefault_region:ap-northeast-1include_git_submodules:trueinstance_profile:nullplatform_name:nullplatform_version:nullprofile:eb-clirepository:nullsc:nullworkspace_type:Application

express環境の作成&デプロイ

npm install -g express-generator
express && npm install
.ebextensions/nodecommand.config
option_settings:
  aws:elasticbeanstalk:container:nodejs:
    NodeCommand: "npm start"
eb deploy

数分後、環境が更新されます。環境が緑色で示されていて準備完了したら、URLを再表示して正しく動作することを確認します。

別環境を作成する

  • マネコンから新規作成
  • マネコンから既存の環境をクローン
  • eb createで作成

開発環境にデプロイして、その後はAWSのマネコンから本番へデプロイなどもできます。
今回はeb createで作成しました。

eb create node-express-production

これによりマネコンにnode-express-productionが作成されています。
git commitのメッセージを確認&選択して、デプロイをクリック。

スクリーンショット 2020-06-01 21.40.38.png

node-express-productionを選択すると、無事本番環境にも反映されます。

スクリーンショット 2020-06-01 21.40.57.png

環境変数を設定する

設定から環境変数を設定することができます。

スクリーンショット 2020-06-01 22.08.51.png

各環境の読み込み方法については以下のリンクを参照

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-cfg-softwaresettings.html#environments-cfg-softwaresettings-accessing

参考リンク


Viewing all articles
Browse latest Browse all 9030

Trending Articles