Elastic Beanstalk の config ファイルで遊んでみた
Advanced environment customization with configuration files (.ebextensions) - AWS Elastic Beanstalk
The Resources section lets you further customize the resources in your application's environment, and define additional AWS resources beyond the functionality provided by configuration options. You can add and configure any resources supported by AWS CloudFormation, which Elastic Beanstalk uses to create environments.
CloudFormation でサポートされているリソースであれば .ebextensions 内の .config に定義することで Elastic Beanstalk 環境の一部としてデプロイできるので遊んでみました。
今回は Auto Scaling グループのヘルスチェック設定と、Lambda 関数の追加を行ってみました。
Auto Scaling グループのヘルスチェック設定
Auto Scaling health check setting for your Elastic Beanstalk environment - AWS Elastic Beanstalk
上記ドキュメントの autoscaling.config をそのまま使用しました。
Resources:
AWSEBAutoScalingGroup:
Type: "AWS::AutoScaling::AutoScalingGroup"
Properties:
HealthCheckType: ELB
HealthCheckGracePeriod: 300
Lambda 関数
Node.js 22.x の Lambda 関数のデフォルトコードでデプロイしました。
Resources:
MyLambdaFunction:
Type: "AWS::Lambda::Function"
Properties:
Handler: index.handler
Role: your-role-arn
Code:
ZipFile: |
export const handler = async (event) => {
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};
Runtime: nodejs22.x
デプロイ
Elastic Beanstalk のサンプルアプリを EB CLI からデプロイしてみた
基本的なデプロイ手順は上記ブログと同様ですが、config ファイルの作成と eb create
コマンドの実行オプションが異なります。
config ファイルの作成
上記ブログの my_environment.config に加えて上述の autoscaling.config と lambda.config も作成しました。
作成手順は my_environment.config と同様に nano コマンドでの作成です。
$ nano .ebextensions/autoscaling.config
# 以下の内容でファイルを作成
Resources:
AWSEBAutoScalingGroup:
Type: "AWS::AutoScaling::AutoScalingGroup"
Properties:
HealthCheckType: ELB
HealthCheckGracePeriod: 300
$ nano .ebextensions/lambda.config
# 以下の内容でファイルを作成
Resources:
MyLambdaFunction:
Type: "AWS::Lambda::Function"
Properties:
Handler: index.handler
Role: your-role-arn
Code:
ZipFile: |
export const handler = async (event) => {
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};
Runtime: nodejs22.x
Elastic Beanstalk 環境の作成
上記ブログでは eb create --single
コマンドを実行することで、EC2 インスタンスが 1 台かつ ELB を使用しない設定でデプロイしていました。
今回は ELB を使用するため、--single
をつけずに eb create
コマンドを実行します。
コマンド実行後にロードバランサーのタイプを選択する必要があるので、デフォルトの ALB を選択しました。
Select a load balancer type
1) classic
2) application
3) network
(default is 2): 2
デプロイ後
awseb
から始める Auto Scaling グループを確認すると、ヘルスチェックのタイプに ELB が追加されていることがわかります。
また、awseb
から始まる Lambda 関数がデプロイされていることも確認できます。
config ファイルで設定した内容がデプロイされていることを確認できました。
Lambda について
今回の Lambda はElastic Beanstalk 環境の一部としてデプロイしましたが、デフォルトコードなので Elastic Beanstalk との処理の連携はない独立したリソースです。
Elastic Beanstalk のデプロイでは Lambda に限らず CloudFormation でサポートされているリソースを環境の一部としてデプロイできるという点についてご理解頂ければ幸いです。
まとめ
Elastic Beanstalk の config ファイルで遊んでみました。
どなたかの参考になれば幸いです。
Discussion