HSQLDBを利用する wagbyapp を Elastic Beanstalk で実行する
最終更新日: 2020年6月12日
R8 | R9
Amazon Elastic Beanstalk を使って、ビルドした Wagby アプリケーションをクラウド環境で実行することができます。
公式サイト https://aws.amazon.com/jp/elasticbeanstalk/
このページでは、コマンドラインインタフェース (CLI) を使った Elastic Beanstalk の利用方法を説明します。
本ページは2018年12月時点の内容にもとづいています。利用した Wagby のバージョンは R8.1.2 で、Windows OS を用いています。Windows OS 以外の環境をご利用の場合でも、このページに記載されたコマンドはご利用いただけます。
はじめに Amazon Web Service (AWS) の環境をコマンドラインで操作するための Command Line Interface (CLI) ツールのダウンロードとインストールを行います。次のページに記載の手順に従ってください。
インストール後、バージョン番号が適切に表示されるかどうかを確認します。
次のページに記載の手順に従い、AWS CLI の設定を行います。
具体的には管理者のAccess Key と Secret Access Key を指定します。
Access Key と Secret Access Key を入力します。ここではリージョン(region)および出力フォーマット(output format)はそれぞれ "ap-northeast-1" と "json" とします。"ap-northeast-1"はアジアパシフィック (東京)となります。
作業環境として Wagby をインストールしたフォルダ内に "ebs" というフォルダを用意するものとします。
インストールした AWS CLI を用いて、Elastic Beanstalkを使うためのIAMユーザを作成します。
ここではユーザ名を "ebswagby" とします。
次のように表示されます。
作成したアカウントに、"AWSElasticBeanstalkFullAccess" ポリシーを付与します。
次にアクセスキーを作成します。
次のように表示されます。
次のように入力して、アカウントとアクセスキーを紐付けます。
Python と EB CLI をインストールします。次のページを参考にしてください。
Windows で Python、pip、EB CLI をインストールする
EB CLIがインストールされると、下記のように表示されます。
インストール後、EB CLIの設定を下記ページのように行ってください。
ここまでの設定で、Elastic Beanstalkのアプリケーションにebswagbyが作成されます。まだ内容は「から」です。
また、実行したフォルダに設定ファイルが作成されます。
C:\Wagby-8.1.2\ebs\filesフォルダを作成し、ここで提供する ebs_files.zip を展開してください。(ファイルの内容は後述します。)
1. WagbyDesignerで、HSQLDB(内蔵データベース)を用いたアプリケーションをビルドしてください。
また、ログ出力はファイルへは行わず、標準出力にするように変更します。このためビルド前にカスタマイズファイルを追加します。修正方法についてDocker向けのカスタマイズファイルをご覧ください。(このページの後半部で、修正ファイルをダウンロードできます。)
なお、この修正により "管理処理 > システムログ閲覧"、"管理処理 > 統計情報"、ログを監視するジョブ(AlterMailFromLog)機能は利用できなくなります。
詳細は "環境 > オートスケール環境で運用する > システムログ閲覧" をご覧下さい。
2. ビルド後は下記ページを参考に createWar コマンドで WAR ファイルを作成します。
3. 作成したWARファイル ROOT.war を C:\Wagby-8.1.2\ebs にコピーします。
4. コピーしたWARファイル名を .elasticbeanstalk/config.yml に追加します。
5. 次のjarコマンドで .ebextensions フォルダの内容をWARファイルに追加します。
本節ではElastic Beanstalkの初期環境を作成します。詳細は下記ページをお読みください。
まず VPC、サブネット、セキュリティグループを作成します。Amazon EFSを用いたストレージの永続化の説明を参考にしてください。
次にeb createコマンドにて初期環境を作成します。実行途中にVPC、サブネット、セキュリティグループを尋ねられますので、入力していきます。
eb openコマンドを実行すると、実行したウェブアプリケーションの画面をブラウザで開くことができます。
再びアプリケーションを更新する場合には ROOT.warファイルを差し替えたあと、eb deployコマンドを用います。
作成した環境を削除するには eb terminate コマンドを用います。
eb logs コマンドで、各ログファイルを100行づつ出力することができます。
eb logs -zにて、各ログファイルをひとまとめにした zip ファイルをダウンロードすることができます。
環境はEC2インスタンスで実行されているので、IPアドレスを確認することで ec2-user で ssh 接続することができます。
eb config save コマンドで、eb create コマンドに指定した設定を保存できます。ウェブ上のAWSコンソールで変更した設定も保存されます。
設定を AWS S3 と開発機の両方に保存することもできます。以下の例は "ebswagby-dev-sc" という名前で両方に保存するものです。
eb config list コマンドを使うと、AWS S3に保存されている設定名の一覧を確認できます。
次のようになります。
ロードバランサプロセスのヘルスチェック設定を追加する方法を説明します。
"設定 > ロードバランサ—" の画面で設定します。
先に保存した ebswagby-dev-sc.cfg.yml を編集します。
編集後に eb config put コマンドを実行し、AWS S3上にある設定を上書きしておきます。
次に eb config コマンドで設定変更を行います。
ここまでの説明では、ビルドした wagbyapp アプリケーションはルートデプロイとしています。ここからはルートデプロイでないアプリケーションの実行方法を説明します。
1. C:\Wagby-8.1.2\ebs\files フォルダに、作成したWARファイルをコピーします。同時に ROOT.war も files フォルダにコピーします。この ROOT.war は index.html のみを格納しています。内容は次のとおりで、Wagby のページに転送するだけです。
2. C:\Wagby-8.1.2\ebs\files フォルダには 2 つの WAR ファイルと .ebextensions フォルダが存在しています。これらを zip ファイルに圧縮してください。
圧縮による、次のようなファイルが zip ファイルに格納されます。
この zip ファイルを C:\Wagby-8.1.2\ebs に移動します。
3. C:\Wagby-8.1.2\ebs 内の .elasticbeanstalk\config.yml を編集します。
ファイル名を、ここで作成した zip ファイルに変更します。
4. ヘルスチェックのURLを、公開するアプリケーションに合わせて修正します。
eb config save コマンドで出力したファイル(C:\Wagby-8.1.2\ebs\.elasticbeanstalk\saved_configs\ebswagby-dev-sc.cfg.yml)を次のように編集してください。
修正後、設定をアップロードします。
5. eb createコマンドを実行します。(既存の環境に eb config と eb deploy を行う、に変えてもよいです。)
6. eb open コマンドで、実行中の wagbyapp アプリケーションを開きます。
実行しているEC2インスタンスが障害により停止した場合、自動復旧されます。(正確には現行の EC2 インスタンスの状態が "terminate" になると、新しい EC2 インスタンスが作成されます。)この復旧作業はおおむね数分程度を要します。
EFS の設定にも対応しています。デプロイ時のスクリプトにてマウントしているので、復旧と同時に EFS も利用できます。
実行しているEC2インスタンス内でTomcatが障害により停止した場合、Tomcatが再起動され、自動復旧されます。
Elastic Beanstalk の環境マネージメントコンソール画面にて、状態を監視することができます。次のサイトにある、DashboardのHealthに状態が表示されます。
同画面のヘルスやモニタリングにて詳細な状態を確認できます。異常を通知するアラームを設定する機能も提供されています。
アプリケーションの入れ替えは eb deploy コマンドで行います。Amazon Elastic Beanstalk では入れ替えについて複数のデプロイメントポリシーを提供しています。Wagby では "All at once" と "Blue/Green" に対応しています。
Elastic Beanstalk がデフォルトで採用しているポリシーです。起動中のアプリケーションを停止して入れ替えを行い、再起動します。EC2インスタンスの作成等はないためデプロイにかかる時間は最小ですが、ダウンタイムが発生します。
このアプローチは(Elastic Beanstalkではない)オンプレミス環境での入れ替えと同じ手順となります。
現在、実行している環境をクローン(複製)し、複製した環境に対してeb deployを行います。複製した環境をテストし、問題なければ、環境URLのスワップを行います。これによってDNSからアクセスされる先が旧環境から新環境に入れ替わります。
旧環境をクローンして新環境を作成し、新環境に eb deploy を行います。データの移行作業は不要です。
上の手順後、新しいデータベースの設定でテーブル等を作成したのち、旧環境のWagbyのエクスポートデータをインポートします。
具体的には次のようになります。
1. 旧環境のウェブアプリケーションをメンテナンスモードに変更する。
但し、この手順はデータのエクスポートとインポートを行うため、時間がかかります。
入替時間を最小限にするための考え方を示します。
ここでは、filesフォルダ内のファイルについて説明します。
option_settings では、メモリの設定やJVMオプションを指定します。
Tomcatのconfフォルダにコピーするファイルです。wagbyapp/confから引用しています。
Amazon Elastic Beanstalk とは
ワンポイント
AWS CLIのダウンロードとインストール
C:\Wagby-8.1.2>aws --version
aws-cli/1.16.72 Python/3.6.0 Windows/10 botocore/1.12.62
設定
C:\Wagby-8.1.2>aws configure --profile admin
AWS Access Key ID [None]: XXXX
AWS Secret Access Key [None]: XXXX
Default region name [None]: ap-northeast-1
Default output format [None]: json
作業用フォルダの作成
cd C:\Wagby-8.1.2\ebs
IAMユーザの作成
C:\Wagby-8.1.2\ebs>aws iam create-user --user-name ebswagby
{
"User": {
"Path": "/",
"UserName": "ebswagby",
"UserId": "AIDAIYNOQRUPSG5XZGLTG",
"Arn": "arn:aws:iam::234318443261:user/ebswagby",
"CreateDate": "2018-12-19T09:38:57Z"
}
}
C:\Wagby-8.1.2\ebs>aws iam attach-user-policy --user-name ebswagby --policy-arn "arn:aws:iam::aws:policy/AWSElasticBeanstalkFullAccess"
C:\Wagby-8.1.2\ebs>aws iam create-access-key --user-name ebswagby
{
"AccessKey": {
"UserName": "ebswagby",
"AccessKeyId": "AKIAJFHIPKG2ZSQCIDJA",
"Status": "Active",
"SecretAccessKey": "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",
"CreateDate": "2018-12-19T09:41:55Z"
}
}
C:\Wagby-8.1.2\ebs>aws configure --profile ebswagby
AWS Access Key ID [None]: AKIAJFHIPKG2ZSQCIDJA
AWS Secret Access Key [None]: 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
Default region name [None]: ap-northeast-1
Default output format [None]: json
EB CLIのインストール
C:\Wagby-8.1.2\ebs>eb --version
EB CLI 3.14.8 (Python 3.6.7)
C:\Wagby-8.1.2\ebs>eb init --profile ebswagby
Select a default region
1) us-east-1 : US East (N. Virginia)
2) us-west-1 : US West (N. California)
3) us-west-2 : US West (Oregon)
4) eu-west-1 : EU (Ireland)
5) eu-central-1 : EU (Frankfurt)
6) ap-south-1 : Asia Pacific (Mumbai)
7) ap-southeast-1 : Asia Pacific (Singapore)
8) ap-southeast-2 : Asia Pacific (Sydney)
9) ap-northeast-1 : Asia Pacific (Tokyo)
10) ap-northeast-2 : Asia Pacific (Seoul)
11) sa-east-1 : South America (Sao Paulo)
12) cn-north-1 : China (Beijing)
13) cn-northwest-1 : China (Ningxia)
14) us-east-2 : US East (Ohio)
15) ca-central-1 : Canada (Central)
16) eu-west-2 : EU (London)
17) eu-west-3 : EU (Paris)
18) eu-north-1 : EU (Stockholm)
(default is 3): 9
Enter Application Name
(default is "ebs"): ebswagby
Application ebswagby has been created.
Select a platform.
1) Node.js
2) PHP
3) Python
4) Ruby
5) Tomcat
6) IIS
7) Docker
8) Multi-container Docker
9) GlassFish
10) Go
11) Java
12) Packer
(default is 1): 5
Select a platform version.
1) Tomcat 8.5 Java 8
2) Tomcat 8 Java 8
3) Tomcat 7 Java 7
4) Tomcat 7 Java 6
5) Tomcat 7
6) Tomcat 6
(default is 1): 1
Do you want to set up SSH for your instances?
(Y/n): Y
Select a keypair.
1) xxxx
2) yyyy
3) YOURkey1
4) [ Create new KeyPair ]
(default is 3): 3
C:\Wagby-8.1.2\ebs>type .elasticbeanstalk\config.yml
branch-defaults:
default:
environment: null
group_suffix: null
global:
application_name: ebswagby
branch: null
default_ec2_keyname: YOURkey1
default_platform: Tomcat 8.5 Java 8
default_region: ap-northeast-1
include_git_submodules: true
instance_profile: null
platform_name: null
platform_version: null
profile: ebswagby
repository: null
sc: null
workspace_type: Application
準備
HSQLDBを利用するアプリケーションのビルド
なお、ここでは「ROOTデプロイメント」としてください。"環境 > プロジェクト > プロジェクト情報 > プロジェクト識別子" を空欄とします。
config.yml
branch-defaults:
default:
environment: null
group_suffix: null
deploy:
artifact: files.zip
global:
application_name: ebswagby
branch: null
default_ec2_keyname: YOURkey1
default_platform: Tomcat 8.5 Java 8
default_region: ap-northeast-1
include_git_submodules: true
instance_profile: null
platform_name: null
platform_version: null
profile: ebswagby
repository: null
sc: null
workspace_type: Application
C:\Wagby-8.1.2\ebs>jar -uvf ROOT.war -C files .
.ebextensions/を追加中です(入=0)(出=0)(0%格納されました)
.ebextensions/tomcat/を追加中です(入=0)(出=0)(0%格納されました)
.ebextensions/tomcat/conf/を追加中です(入=0)(出=0)(0%格納されました)
.ebextensions/tomcat/conf/app_jaas.config.txtを追加中です(入=402)(出=152)(62%収縮されました)
.ebextensions/tomcat/conf/logging.propertiesを追加中です(入=3837)(出=1027)(73%収縮されました)
.ebextensions/tomcat/conf/web.xmlを追加中です(入=174412)(出=18580)(89%収縮されました)
.ebextensions/tomcat/copy.shを追加中です(入=735)(出=277)(62%収縮されました)
.ebextensions/tomcat/lib/を追加中です(入=0)(出=0)(0%格納されました)
.ebextensions/tomcat/lib/hsqldb.jarを追加中です(入=1515894)(出=1436314)(5%収縮されました)
.ebextensions/tomcat/lib/j_conint.jarを追加中です(入=6067)(出=4947)(18%収縮されました)
.ebextensions/tomcat/lib/spring-instrument-tomcat.jarを追加中です(入=10596)(出=9505)(10%収縮されました)
.ebextensions/tomcat/lib/tomcat-dbcp.jarを追加中です(入=279700)(出=259605)(7%収縮されました)
.ebextensions/tomcat-settings.configを追加中です(入=356)(出=256)(28%収縮されました)
環境の作成と起動
C:\Wagby-8.1.2\ebs>eb create -i t3.small --vpc --scale 1
Enter Environment Name
(default is ebswagby-dev):
Enter DNS CNAME prefix
(default is ebswagby-dev):
Select a load balancer type
1) classic
2) application
3) network
(default is 2):
Enter the VPC ID: vpc-0208b3ab6a7cf8978
Do you want to associate a public IP address? (Y/n):
Enter a comma-separated list of Amazon EC2 subnets: subnet-0c4d1541a528c63ba,subnet-030085de17d83f973
Enter a comma-separated list of Amazon ELB subnets: subnet-0c4d1541a528c63ba,subnet-030085de17d83f973
Do you want the load balancer to be public? (Select no for internal) (Y/n):
Enter a comma-separated list of Amazon VPC security groups: sg-0d6b4b276edf7d47c
Uploading: [##################################################] 100% Done...
Environment details for: ebswagby-dev
Application name: ebswagby
Region: ap-northeast-1
Deployed Version: app-181220_115348
Environment ID: e-qwg8jviztr
Platform: arn:aws:elasticbeanstalk:ap-northeast-1::platform/Tomcat 8.5 with Java 8 running on 64bit Amazon Linux/3.0.7
Tier: WebServer-Standard-1.0
CNAME: ebswagby-dev.ap-northeast-1.elasticbeanstalk.com
Updated: 2018-12-20 02:54:00.779000+00:00
Printing Status:
2018-12-20 02:53:59 INFO createEnvironment is starting.
2018-12-20 02:54:01 INFO Using elasticbeanstalk-ap-northeast-1-234318443261 as Amazon S3 storage bucket for environment data.
2018-12-20 02:54:29 INFO Created target group named: arn:aws:elasticloadbalancing:ap-northeast-1:234318443261:targetgroup/awseb-AWSEB-1VAQ9Q1W90LNM/444b8cf37063c0f7
2018-12-20 02:54:29 INFO Created security group named: sg-0bd8202e6522c878c
2018-12-20 02:54:44 INFO Created security group named: sg-05b09ee8430ebc4e2
2018-12-20 02:54:45 INFO Created Auto Scaling launch configuration named: awseb-e-qwg8jviztr-stack-AWSEBAutoScalingLaunchConfiguration-UAJ1WYM1BP1H
2018-12-20 02:55:46 INFO Created Auto Scaling group named: awseb-e-qwg8jviztr-stack-AWSEBAutoScalingGroup-140V8QCSW9I0D
2018-12-20 02:55:46 INFO Waiting for EC2 instances to launch. This may take a few minutes.
2018-12-20 02:56:02 INFO Created Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-1:234318443261:scalingPolicy:28d212d2-dfa2-4c4d-acd9-eda49b47e64c:autoScalingGroupName/awseb-e-qwg8jviztr-stack-AWSEBAutoScalingGroup-140V8QCSW9I0D:policyName/awseb-e-qwg8jviztr-stack-AWSEBAutoScalingScaleUpPolicy-1V9W58939HD9B
2018-12-20 02:56:02 INFO Created Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-1:234318443261:scalingPolicy:4d189f2b-8e38-4c56-a18d-a5364924f48a:autoScalingGroupName/awseb-e-qwg8jviztr-stack-AWSEBAutoScalingGroup-140V8QCSW9I0D:policyName/awseb-e-qwg8jviztr-stack-AWSEBAutoScalingScaleDownPolicy-1SL6PDFZTF41R
2018-12-20 02:56:02 INFO Created CloudWatch alarm named: awseb-e-qwg8jviztr-stack-AWSEBCloudwatchAlarmHigh-1POLW8FY2GN67
2018-12-20 02:56:02 INFO Created CloudWatch alarm named: awseb-e-qwg8jviztr-stack-AWSEBCloudwatchAlarmLow-33REXAJ9FELG
2018-12-20 02:56:33 INFO Created load balancer named: arn:aws:elasticloadbalancing:ap-northeast-1:234318443261:loadbalancer/app/awseb-AWSEB-1OB3IXUUENIYO/071ad07730276e25
2018-12-20 02:56:51 INFO Created Load Balancer listener named: arn:aws:elasticloadbalancing:ap-northeast-1:234318443261:listener/app/awseb-AWSEB-1OB3IXUUENIYO/071ad07730276e25/bfeeaa375a28bc3c
2018-12-20 02:58:16 INFO Successfully launched environment: ebswagby-dev
環境の更新
C:\Wagby-8.1.2\ebs>eb deploy
Uploading: [##################################################] 100% Done...
2018-12-19 11:26:39 INFO Environment update is starting.
2018-12-19 11:27:29 INFO Deploying new version to instance(s).
2018-12-19 11:28:51 INFO New application version was deployed to running EC2 instances.
2018-12-19 11:28:51 INFO Environment update completed successfully.
環境の削除
C:\Wagby-8.1.2\ebs>eb terminate
The environment "ebswagby-dev" and all associated instances will be terminated.
To confirm, type the environment name: ebswagby-dev
2018-12-19 12:04:55 INFO terminateEnvironment is starting.
2018-12-19 12:05:13 INFO Deleted Load Balancer listener named: arn:aws:elasticloadbalancing:ap-northeast-1:234318443261:listener/app/awseb-AWSEB-A50LMCSIA114/9c81d58f749fe7ff/f8bae4514638ef00
2018-12-19 12:05:13 INFO Deleted CloudWatch alarm named: awseb-e-xmxsxku8pv-stack-AWSEBCloudwatchAlarmLow-1MH6YXPYX8X3Q
2018-12-19 12:05:13 INFO Deleted CloudWatch alarm named: awseb-e-xmxsxku8pv-stack-AWSEBCloudwatchAlarmHigh-CD4MZA9JB0FE
2018-12-19 12:05:13 INFO Deleted load balancer named: arn:aws:elasticloadbalancing:ap-northeast-1:234318443261:loadbalancer/app/awseb-AWSEB-A50LMCSIA114/9c81d58f749fe7ff
2018-12-19 12:05:13 INFO Deleted Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-1:234318443261:scalingPolicy:1a184667-f097-4594-a60f-91143f64c263:autoScalingGroupName/awseb-e-xmxsxku8pv-stack-AWSEBAutoScalingGroup-1SY5ARKOEU41I:policyName/awseb-e-xmxsxku8pv-stack-AWSEBAutoScalingScaleUpPolicy-1GAI88NTY1XRA
2018-12-19 12:05:13 INFO Deleted Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-1:234318443261:scalingPolicy:e6b4d9dc-e576-4228-af4f-47f5642af32e:autoScalingGroupName/awseb-e-xmxsxku8pv-stack-AWSEBAutoScalingGroup-1SY5ARKOEU41I:policyName/awseb-e-xmxsxku8pv-stack-AWSEBAutoScalingScaleDownPolicy-1X717GQ3XUXBS
2018-12-19 12:05:13 INFO Waiting for EC2 instances to terminate. This may take a few minutes.
2018-12-19 12:08:01 INFO Deleted Auto Scaling group named: awseb-e-xmxsxku8pv-stack-AWSEBAutoScalingGroup-1SY5ARKOEU41I
2018-12-19 12:08:02 INFO Deleted Auto Scaling launch configuration named: awseb-e-xmxsxku8pv-stack-AWSEBAutoScalingLaunchConfiguration-F7EEGYHI7TMY
2018-12-19 12:08:02 INFO Deleted target group named: arn:aws:elasticloadbalancing:ap-northeast-1:234318443261:targetgroup/awseb-AWSEB-UH5LGMKHCUG0/0332d9446898bb31
2018-12-19 12:08:17 INFO Deleted security group named: sg-06c5ca12f134787fc
2018-12-19 12:08:17 INFO Deleted security group named: sg-049c1ae5e7e116779
2018-12-19 12:08:22 INFO Deleting SNS topic for environment ebswagby-dev.
2018-12-19 12:08:24 INFO terminateEnvironment completed successfully.
ログの確認
C:\Wagby-8.1.2\ebs>eb logs -z
Retrieving logs...
Logs were saved to C:\Wagby-8.1.2\ebs\.elasticbeanstalk\logs\181220_173713.zip
sshによる接続
$ ssh -i ~/.ssh/YOURkey1 ec2-user@13.115.203.162
The authenticity of host '13.115.203.162 (13.115.203.162)' can't be established.
ECDSA key fingerprint is SHA256:jwFnTGVSL/AF5925gfo+0sHyzOewWRUCSiXbbzMRYCk.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '13.115.203.162' (ECDSA) to the list of known hosts.
Enter passphrase for key '/home/YOU/.ssh/YOURkey1':
_____ _ _ _ ____ _ _ _
| ____| | __ _ ___| |_(_) ___| __ ) ___ __ _ _ __ ___| |_ __ _| | | __
| _| | |/ _` / __| __| |/ __| _ \ / _ \/ _` | '_ \/ __| __/ _` | | |/ /
| |___| | (_| \__ \ |_| | (__| |_) | __/ (_| | | | \__ \ || (_| | | <
|_____|_|\__,_|___/\__|_|\___|____/ \___|\__,_|_| |_|___/\__\__,_|_|_|\_\
Amazon Linux AMI
This EC2 instance is managed by AWS Elastic Beanstalk. Changes made via SSH
WILL BE LOST if the instance is replaced by auto-scaling. For more information
on customizing your Elastic Beanstalk environment, see our documentation here:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
[ec2-user@ip-10-0-1-7 ~]$
設定の保存
C:\Wagby-8.1.2\ebs>eb config save ebswagby-dev
Enter desired name of configuration.
(default is "ebswagby-dev-sc"):
Configuration saved at: C:\Wagby-8.1.2\ebs\.elasticbeanstalk\saved_configs\ebswagby-dev-sc.cfg.yml
C:\Wagby-8.1.2\ebs>eb config list
ebswagby-dev-sc
ebswagby-dev-sc.cfg.yml の例
AWSConfigurationTemplateVersion: 1.1.0.0
EnvironmentConfigurationMetadata:
DateCreated: '1545290334000'
DateModified: '1545299801287'
Description: Configuration created from the EB CLI using "eb config save".
EnvironmentTier:
Name: WebServer
Type: Standard
OptionSettings:
AWSEBV2LoadBalancerTargetGroup.aws:elasticbeanstalk:environment:process:default:
HealthCheckPath: /logonPage.do
MatcherHTTPCode: '200'
aws:autoscaling:launchconfiguration:
EC2KeyName: YOURkey1
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
InstanceType: t3.small
SecurityGroups: sg-0d6b4b276edf7d47c
aws:autoscaling:updatepolicy:rollingupdate:
RollingUpdateEnabled: true
RollingUpdateType: Health
aws:ec2:vpc:
AssociatePublicIpAddress: true
ELBScheme: public
ELBSubnets: subnet-0c4d1541a528c63ba,subnet-030085de17d83f973
Subnets: subnet-0c4d1541a528c63ba,subnet-030085de17d83f973
VPCId: vpc-0208b3ab6a7cf8978
aws:elasticbeanstalk:command:
BatchSize: '30'
BatchSizeType: Percentage
aws:elasticbeanstalk:environment:
LoadBalancerType: application
ServiceRole: aws-elasticbeanstalk-service-role
aws:elasticbeanstalk:healthreporting:system:
SystemType: enhanced
aws:elb:loadbalancer:
CrossZone: true
aws:elb:policies:
ConnectionDrainingEnabled: true
Platform:
PlatformArn: arn:aws:elasticbeanstalk:ap-northeast-1::platform/Tomcat 8.5 with Java
8 running on 64bit Amazon Linux/3.0.7
ヘルスチェックの追加
AWSコンソール
https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/environments-cfg-alb.html#environments-cfg-alb-console-process-healthchecks
コマンドライン操作
OptionSettingsの下に次の行を追記します。ここではヘルスチェックのパスと成功時のHTTPステータスを設定しています。
OptionSettings:
AWSEBV2LoadBalancerTargetGroup.aws:elasticbeanstalk:environment:process:default:
MatcherHTTPCode: '200'
HealthCheckPath: /logonPage.do
C:\Wagby-8.1.2\ebs>eb config put ebswagby-dev-sc
C:\Wagby-8.1.2\ebs>eb config ebswagby-dev --cfg ebswagby-dev-sc
Printing Status:
2018-12-20 09:58:33 INFO Environment update is starting.
2018-12-20 09:58:45 INFO Updating environment ebswagby-dev's configuration settings.
2018-12-20 09:59:57 INFO Successfully deployed new configuration to environment.
ルートデプロイでないwagbyアプリケーション
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="refresh" content="0;URL=/wagby" />
</head>
<body>redirect to <a href ="/wagby">page</a>
</body>
</html>
Archive: files.zip
Length Date Time Name
--------- ---------- ----- ----
0 12-20-2018 16:48 .ebextensions/
0 12-20-2018 19:23 .ebextensions/tomcat/
0 12-19-2018 19:53 .ebextensions/tomcat/conf/
402 12-19-2018 19:35 .ebextensions/tomcat/conf/app_jaas.config.txt
3837 12-19-2018 19:36 .ebextensions/tomcat/conf/logging.properties
174412 12-19-2018 19:36 .ebextensions/tomcat/conf/web.xml
1182 12-20-2018 18:35 .ebextensions/tomcat/copy.sh
0 12-20-2018 12:11 .ebextensions/tomcat/lib/
1515894 12-19-2018 19:35 .ebextensions/tomcat/lib/hsqldb.jar
6067 12-20-2018 12:05 .ebextensions/tomcat/lib/j_conint.jar
10596 12-20-2018 12:05 .ebextensions/tomcat/lib/spring-instrument-tomcat.jar
279700 12-20-2018 12:11 .ebextensions/tomcat/lib/tomcat-dbcp.jar
356 12-20-2018 16:16 .ebextensions/tomcat-settings.config
619 12-20-2018 19:46 ROOT.war
109358080 12-20-2018 19:21 wagby.war
--------- -------
111351145 15 files
deploy:
artifact: files.zip
OptionSettings:
AWSEBV2LoadBalancerTargetGroup.aws:elasticbeanstalk:environment:process:default:
MatcherHTTPCode: '200'
HealthCheckPath: /wagby/logonPage.do
C:\Wagby-8.1.2\ebs>eb config put ebswagby-dev-sc
C:\Wagby-8.1.2\ebs>eb create --cfg ebswagby-dev-sc
Enter Environment Name
(default is ebswagby-dev2):
Enter DNS CNAME prefix
(default is ebswagby-dev2):
Select a load balancer type
1) classic
2) application
3) network
(default is 2):
Uploading: [##################################################] 100% Done...
Environment details for: ebswagby-dev2
Application name: ebswagby
....
eb open ebswagby-dev2
自動復旧とヘルスチェックについて
EC2 インスタンス自体が異常終了した場合
EC2 インスタンスで Tomcat が異常終了した場合
環境マネージメントコンソール画面を確認する
アプリケーションの入れ替え
All at once
Blue/Green
データベースのテーブル定義に変更がない場合
データベースのテーブル定義に変更があった場合 (1)
2. 旧環境のウェブアプリケーションにてエクスポートを行う。
3. 新環境のウェブアプリケーションにてインポートを行う。
4. 環境URLのスワップを行い、旧環境と新環境を入れ替える。
5. 問題がなければ、旧環境は削除する。(eb terminate [旧環境名])
データベースのテーブル定義に変更があった場合 (2)
仕様・制約
[補足] files フォルダ内のファイルについて
.ebextensions/tomcat-settings.config
container_commands では、必要なファイルのコピーやディレクトリの作成などを行うスクリプトを呼び出しています。
option_settings:
aws:elasticbeanstalk:container:tomcat:jvmoptions:
Xms: 64m
Xmx: 512m
JVM Options: -Djava.security.auth.login.config=${CATALINA_HOME}/conf/app_jaas.config -Dsun.nio.cs.map=x-windows-iso2022jp/ISO-2022-JP -Duser.timezone=Asia/Tokyo
container_commands:
01-tomcat-copy:
env:
CATALINA_HOME: "/usr/share/tomcat8"
command: "sh .ebextensions/tomcat/copy.sh"
.ebextensions/tomcat/copy.sh
#!/bin/sh
if [ "$CATALINA_HOME" = "" ]; then
CATALINA_HOME=/usr/share/tomcat8
echo CATALINA_HOME env is nothing. use default value ${CATALINA_HOME}
fi
install -m 644 .ebextensions/tomcat/conf/* ${CATALINA_HOME}/conf
mv ${CATALINA_HOME}/conf/app_jaas.config.txt ${CATALINA_HOME}/conf/app_jaas.config
install -m 644 .ebextensions/tomcat/lib/* ${CATALINA_HOME}/lib
install -o tomcat -g tomcat -m 755 -d /usr/share/upload_dir
install -o tomcat -g tomcat -m 755 -d /usr/share/export
# output Workflow definitions xml file for InitLoader import
install -o tomcat -g tomcat -m 755 -d /var/lib/customize
# output Velocity log file for InitLoader import
install -o tomcat -g tomcat -m 755 -d ${CATALINA_HOME}/bin/logs
# output jprincipal.xml for InitLoader import
chmod 775 ${CATALINA_HOME}/bin/
chgrp tomcat ${CATALINA_HOME}/bin/
TOMCAT_SCRIPT=/usr/sbin/tomcat-elasticbeanstalk
if [ -e ${TOMCAT_SCRIPT} ]; then
fgrep 'cd ${CATALINA_HOME}/bin/' ${TOMCAT_SCRIPT}
if [ "$?" = "1" ]; then
cp ${TOMCAT_SCRIPT} ${TOMCAT_SCRIPT}.orig
sed 's/if \[ "\$1" = "start" \]; then/\
echo change current directory ${CATALINA_HOME}\/bin\
cd ${CATALINA_HOME}\/bin\/\
&/' ${TOMCAT_SCRIPT}.orig > ${TOMCAT_SCRIPT}
fi
else
echo ERROR nothing Tomcat boot script ${TOMCAT_SCRIPT}
fi
.ebextensions/tomcat/conf/app_jaas.config.txt
.ebextensions/tomcat/conf/logging.properties
.ebextensions/tomcat/conf/web.xml