Migrating an Springboot Java API (4 Part Series)
1 Migrating an Springboot Java API: Part 1 – Docker
2 Migrating an Springboot Java API: Part 2 – Azure Build
3 Migrating an Springboot Java API: Part 3 – AWS ElasticBeanstalk
4 Migrating an Springboot Java API: Part 4 – Azure Release
On the previous post I showed how to setup an Azure DevOps pipeline to push Docker images into ECR.
In this guide I will show how to use AWS Elastic Beanstalk to pull and run these images in a fully fledged application (with database, EC2 servers, load balancer; all handled by EB)
Pre-requisites
- AWS-CLI
- EB CLI
- An AWS account with the following permissions:
- ECR (Elastic Container Registry)
- ECS (Elastic Container Service)
- EC2 (Elastic Compute Cloud)
- RDS (Relational Database Service)
- EB (Elastic Beanstalk)
IAM role
In order to initialize an EB application, I created IAM role with the following permission policies:
AdministratorAccess-AWSElasticBeanstalkAmazonEC2ContainerRegistryFullAccessEC2InstanceProfileForImageBuilderECRContainerBuildsAmazonSSMFullAccessAmazonEC2FullAccessAWSElasticBeanstalkMulticontainerDockerAWSElasticBeanstalkRoleECSAdministratorAccess-AWSElasticBeanstalk AmazonEC2ContainerRegistryFullAccess EC2InstanceProfileForImageBuilderECRContainerBuilds AmazonSSMFullAccess AmazonEC2FullAccess AWSElasticBeanstalkMulticontainerDocker AWSElasticBeanstalkRoleECSAdministratorAccess-AWSElasticBeanstalk AmazonEC2ContainerRegistryFullAccess EC2InstanceProfileForImageBuilderECRContainerBuilds AmazonSSMFullAccess AmazonEC2FullAccess AWSElasticBeanstalkMulticontainerDocker AWSElasticBeanstalkRoleECS
Enter fullscreen mode Exit fullscreen mode
Optional – push the redis cache to a private ECR repository
It was better for my project to have a locally available version of the dependencies, so I created an powershell script create-local-redis.ps1
to push a new version of the redis image
<span>aws</span><span> </span><span>ecr</span><span> </span><span>get-login-password</span><span> </span><span>--region</span><span> </span><span>AWS_REGION</span><span> </span><span>|</span><span> </span><span>docker</span><span> </span><span>login</span><span> </span><span>--username</span><span> </span><span>AWS</span><span> </span><span>--password-stdin</span><span> </span><span>AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com</span><span> </span><span>docker</span><span> </span><span>pull</span><span> </span><span>redis:7.2.1</span><span> </span><span>docker</span><span> </span><span>tag</span><span> </span><span>redis:7.2.1</span><span> </span><span>AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/local-redis:7.2.1</span><span> </span><span>docker</span><span> </span><span>push</span><span> </span><span>AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/local-redis:7.2.1</span><span> </span><span>aws</span><span> </span><span>ecr</span><span> </span><span>get-login-password</span><span> </span><span>--region</span><span> </span><span>AWS_REGION</span><span> </span><span>|</span><span> </span><span>docker</span><span> </span><span>login</span><span> </span><span>--username</span><span> </span><span>AWS</span><span> </span><span>--password-stdin</span><span> </span><span>AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com</span><span> </span><span>docker</span><span> </span><span>pull</span><span> </span><span>redis:7.2.1</span><span> </span><span>docker</span><span> </span><span>tag</span><span> </span><span>redis:7.2.1</span><span> </span><span>AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/local-redis:7.2.1</span><span> </span><span>docker</span><span> </span><span>push</span><span> </span><span>AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/local-redis:7.2.1</span><span> </span>aws ecr get-login-password --region AWS_REGION | docker login --username AWS --password-stdin AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com docker pull redis:7.2.1 docker tag redis:7.2.1 AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/local-redis:7.2.1 docker push AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/local-redis:7.2.1
Enter fullscreen mode Exit fullscreen mode
Configuration files for Elastic Beanstalk
I used the configuration for EB multicontainer
So I added a deployment/
folder side-by-side with MyJavaSolution
with the following:
deployment/├── create-local-redis.ps1├── Dockerrun.aws.json├── .ebextensions/│ │── db-instance-properties.config│ │── network-load-balancer.config│MyJavaSolution/├── ...deployment/ ├── create-local-redis.ps1 ├── Dockerrun.aws.json ├── .ebextensions/ │ │── db-instance-properties.config │ │── network-load-balancer.config │ MyJavaSolution/ ├── ...deployment/ ├── create-local-redis.ps1 ├── Dockerrun.aws.json ├── .ebextensions/ │ │── db-instance-properties.config │ │── network-load-balancer.config │ MyJavaSolution/ ├── ...
Enter fullscreen mode Exit fullscreen mode
Dockerrun.aws.json
<span>{</span><span> </span><span>"AWSEBDockerrunVersion"</span><span>:</span><span> </span><span>2</span><span>,</span><span> </span><span>"containerDefinitions"</span><span>:</span><span> </span><span>[</span><span> </span><span>{</span><span> </span><span>"name"</span><span>:</span><span> </span><span>"local-redis"</span><span>,</span><span> </span><span>"image"</span><span>:</span><span> </span><span>"AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/local-redis:7.2.1"</span><span>,</span><span> </span><span>"portMappings"</span><span>:</span><span> </span><span>[</span><span> </span><span>{</span><span> </span><span>"hostPort"</span><span>:</span><span> </span><span>6379</span><span>,</span><span> </span><span>"containerPort"</span><span>:</span><span> </span><span>6379</span><span> </span><span>}</span><span> </span><span>],</span><span> </span><span>"essential"</span><span>:</span><span> </span><span>true</span><span>,</span><span> </span><span>"memory"</span><span>:</span><span> </span><span>1024</span><span> </span><span>},</span><span> </span><span>{</span><span> </span><span>"name"</span><span>:</span><span> </span><span>"customer_DOCKER_REPOSITORY_NAME"</span><span>,</span><span> </span><span>"image"</span><span>:</span><span> </span><span>"AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/customer_DOCKER_REPOSITORY_NAME:Build.BuildNumber"</span><span>,</span><span> </span><span>"portMappings"</span><span>:</span><span> </span><span>[</span><span> </span><span>{</span><span> </span><span>"hostPort"</span><span>:</span><span> </span><span>9001</span><span>,</span><span> </span><span>"containerPort"</span><span>:</span><span> </span><span>9001</span><span> </span><span>}</span><span> </span><span>],</span><span> </span><span>"links"</span><span>:</span><span> </span><span>[</span><span> </span><span>"local-redis"</span><span> </span><span>],</span><span> </span><span>"essential"</span><span>:</span><span> </span><span>true</span><span>,</span><span> </span><span>"memory"</span><span>:</span><span> </span><span>1024</span><span> </span><span>},</span><span> </span><span>{</span><span> </span><span>"name"</span><span>:</span><span> </span><span>"ADMIN_DOCKER_REPOSITORY_NAME"</span><span>,</span><span> </span><span>"image"</span><span>:</span><span> </span><span>"AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/ADMIN_DOCKER_REPOSITORY_NAME:Build.BuildNumber"</span><span>,</span><span> </span><span>"portMappings"</span><span>:</span><span> </span><span>[</span><span> </span><span>{</span><span> </span><span>"hostPort"</span><span>:</span><span> </span><span>9002</span><span>,</span><span> </span><span>"containerPort"</span><span>:</span><span> </span><span>9002</span><span> </span><span>}</span><span> </span><span>],</span><span> </span><span>"links"</span><span>:</span><span> </span><span>[</span><span> </span><span>"local-redis"</span><span> </span><span>],</span><span> </span><span>"essential"</span><span>:</span><span> </span><span>true</span><span>,</span><span> </span><span>"memory"</span><span>:</span><span> </span><span>1024</span><span> </span><span>}</span><span> </span><span>]</span><span> </span><span>}</span><span> </span><span>{</span><span> </span><span>"AWSEBDockerrunVersion"</span><span>:</span><span> </span><span>2</span><span>,</span><span> </span><span>"containerDefinitions"</span><span>:</span><span> </span><span>[</span><span> </span><span>{</span><span> </span><span>"name"</span><span>:</span><span> </span><span>"local-redis"</span><span>,</span><span> </span><span>"image"</span><span>:</span><span> </span><span>"AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/local-redis:7.2.1"</span><span>,</span><span> </span><span>"portMappings"</span><span>:</span><span> </span><span>[</span><span> </span><span>{</span><span> </span><span>"hostPort"</span><span>:</span><span> </span><span>6379</span><span>,</span><span> </span><span>"containerPort"</span><span>:</span><span> </span><span>6379</span><span> </span><span>}</span><span> </span><span>],</span><span> </span><span>"essential"</span><span>:</span><span> </span><span>true</span><span>,</span><span> </span><span>"memory"</span><span>:</span><span> </span><span>1024</span><span> </span><span>},</span><span> </span><span>{</span><span> </span><span>"name"</span><span>:</span><span> </span><span>"customer_DOCKER_REPOSITORY_NAME"</span><span>,</span><span> </span><span>"image"</span><span>:</span><span> </span><span>"AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/customer_DOCKER_REPOSITORY_NAME:Build.BuildNumber"</span><span>,</span><span> </span><span>"portMappings"</span><span>:</span><span> </span><span>[</span><span> </span><span>{</span><span> </span><span>"hostPort"</span><span>:</span><span> </span><span>9001</span><span>,</span><span> </span><span>"containerPort"</span><span>:</span><span> </span><span>9001</span><span> </span><span>}</span><span> </span><span>],</span><span> </span><span>"links"</span><span>:</span><span> </span><span>[</span><span> </span><span>"local-redis"</span><span> </span><span>],</span><span> </span><span>"essential"</span><span>:</span><span> </span><span>true</span><span>,</span><span> </span><span>"memory"</span><span>:</span><span> </span><span>1024</span><span> </span><span>},</span><span> </span><span>{</span><span> </span><span>"name"</span><span>:</span><span> </span><span>"ADMIN_DOCKER_REPOSITORY_NAME"</span><span>,</span><span> </span><span>"image"</span><span>:</span><span> </span><span>"AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/ADMIN_DOCKER_REPOSITORY_NAME:Build.BuildNumber"</span><span>,</span><span> </span><span>"portMappings"</span><span>:</span><span> </span><span>[</span><span> </span><span>{</span><span> </span><span>"hostPort"</span><span>:</span><span> </span><span>9002</span><span>,</span><span> </span><span>"containerPort"</span><span>:</span><span> </span><span>9002</span><span> </span><span>}</span><span> </span><span>],</span><span> </span><span>"links"</span><span>:</span><span> </span><span>[</span><span> </span><span>"local-redis"</span><span> </span><span>],</span><span> </span><span>"essential"</span><span>:</span><span> </span><span>true</span><span>,</span><span> </span><span>"memory"</span><span>:</span><span> </span><span>1024</span><span> </span><span>}</span><span> </span><span>]</span><span> </span><span>}</span><span> </span>{ "AWSEBDockerrunVersion": 2, "containerDefinitions": [ { "name": "local-redis", "image": "AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/local-redis:7.2.1", "portMappings": [ { "hostPort": 6379, "containerPort": 6379 } ], "essential": true, "memory": 1024 }, { "name": "customer_DOCKER_REPOSITORY_NAME", "image": "AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/customer_DOCKER_REPOSITORY_NAME:Build.BuildNumber", "portMappings": [ { "hostPort": 9001, "containerPort": 9001 } ], "links": [ "local-redis" ], "essential": true, "memory": 1024 }, { "name": "ADMIN_DOCKER_REPOSITORY_NAME", "image": "AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/ADMIN_DOCKER_REPOSITORY_NAME:Build.BuildNumber", "portMappings": [ { "hostPort": 9002, "containerPort": 9002 } ], "links": [ "local-redis" ], "essential": true, "memory": 1024 } ] }
Enter fullscreen mode Exit fullscreen mode
db-instance-properties.config
<span>option_settings</span><span>:</span><span># Sets a decoupled database for the connection</span><span># It can be created from a specific snapshot using DBSnapshotIdentifier</span><span># If you are happy with the database, you can choose to decouple it via command line later</span><span>aws:rds:dbinstance</span><span>:</span><span>DBAllocatedStorage</span><span>:</span> <span>'</span><span>5'</span><span>DBDeletionPolicy</span><span>:</span> <span>Retain</span><span>DBInstanceClass</span><span>:</span> <span>db.t4g.micro</span><span>DBSnapshotIdentifier</span><span>:</span> <span>'</span><span>DB_INITIAL_SNAPSHOT'</span><span>HasCoupledDatabase</span><span>:</span> <span>'</span><span>true'</span><span>MultiAZDatabase</span><span>:</span> <span>'</span><span>false'</span><span>DBName</span><span>:</span> <span>DB_NAME</span><span>DBEngine</span><span>:</span> <span>DB_ENGINE</span><span>DBEngineVersion</span><span>:</span> <span>DB_ENGINE_VERSION</span><span>DBUser</span><span>:</span> <span>DB_USERNAME</span><span>DBPassword</span><span>:</span> <span>DB_PASSWORD</span><span>option_settings</span><span>:</span> <span># Sets a decoupled database for the connection</span> <span># It can be created from a specific snapshot using DBSnapshotIdentifier</span> <span># If you are happy with the database, you can choose to decouple it via command line later</span> <span>aws:rds:dbinstance</span><span>:</span> <span>DBAllocatedStorage</span><span>:</span> <span>'</span><span>5'</span> <span>DBDeletionPolicy</span><span>:</span> <span>Retain</span> <span>DBInstanceClass</span><span>:</span> <span>db.t4g.micro</span> <span>DBSnapshotIdentifier</span><span>:</span> <span>'</span><span>DB_INITIAL_SNAPSHOT'</span> <span>HasCoupledDatabase</span><span>:</span> <span>'</span><span>true'</span> <span>MultiAZDatabase</span><span>:</span> <span>'</span><span>false'</span> <span>DBName</span><span>:</span> <span>DB_NAME</span> <span>DBEngine</span><span>:</span> <span>DB_ENGINE</span> <span>DBEngineVersion</span><span>:</span> <span>DB_ENGINE_VERSION</span> <span>DBUser</span><span>:</span> <span>DB_USERNAME</span> <span>DBPassword</span><span>:</span> <span>DB_PASSWORD</span>option_settings: # Sets a decoupled database for the connection # It can be created from a specific snapshot using DBSnapshotIdentifier # If you are happy with the database, you can choose to decouple it via command line later aws:rds:dbinstance: DBAllocatedStorage: '5' DBDeletionPolicy: Retain DBInstanceClass: db.t4g.micro DBSnapshotIdentifier: 'DB_INITIAL_SNAPSHOT' HasCoupledDatabase: 'true' MultiAZDatabase: 'false' DBName: DB_NAME DBEngine: DB_ENGINE DBEngineVersion: DB_ENGINE_VERSION DBUser: DB_USERNAME DBPassword: DB_PASSWORD
Enter fullscreen mode Exit fullscreen mode
network-load-balancer.config
<span>option_settings</span><span>:</span><span># Set the instance type for EC2 instances to t3.large.</span><span>aws:ec2:instances</span><span>:</span><span>InstanceTypes</span><span>:</span> <span>t3.large</span><span># Set the instance type for Auto Scaling launch configuration to t3.large.</span><span>aws:autoscaling:launchconfiguration</span><span>:</span><span>InstanceType</span><span>:</span> <span>t3.large</span><span># Disable the listener on port 80.</span><span>aws:elbv2:listener:default</span><span>:</span><span>ListenerEnabled</span><span>:</span> <span>false</span><span># Configure Elastic Beanstalk to listen on port 9001.</span><span>aws:elbv2:listener:9001</span><span>:</span><span>DefaultProcess</span><span>:</span> <span>default</span><span>ListenerEnabled</span><span>:</span> <span>'</span><span>true'</span><span>Protocol</span><span>:</span> <span>HTTP</span><span>Rules</span><span>:</span> <span>null</span><span>SSLCertificateArns</span><span>:</span> <span>null</span><span>SSLPolicy</span><span>:</span> <span>null</span><span># Configure Elastic Beanstalk to listen on port 9002.</span><span>aws:elbv2:listener:9002</span><span>:</span><span>DefaultProcess</span><span>:</span> <span>admin</span><span>ListenerEnabled</span><span>:</span> <span>'</span><span>true'</span><span>Protocol</span><span>:</span> <span>HTTP</span><span>Rules</span><span>:</span> <span>null</span><span>SSLCertificateArns</span><span>:</span> <span>null</span><span>SSLPolicy</span><span>:</span> <span>null</span><span># Configure default Health endpoint to be Customer health</span><span>aws:elasticbeanstalk:environment:process:default</span><span>:</span><span>DeregistrationDelay</span><span>:</span> <span>'</span><span>20'</span><span>HealthCheckInterval</span><span>:</span> <span>'</span><span>15'</span><span>HealthCheckPath</span><span>:</span> <span>/api/customer/health</span><span>HealthCheckTimeout</span><span>:</span> <span>'</span><span>5'</span><span>HealthyThresholdCount</span><span>:</span> <span>'</span><span>3'</span><span>MatcherHTTPCode</span><span>:</span> <span>'</span><span>200'</span><span>Port</span><span>:</span> <span>'</span><span>9001'</span><span>Protocol</span><span>:</span> <span>HTTP</span><span>StickinessEnabled</span><span>:</span> <span>'</span><span>false'</span><span>StickinessLBCookieDuration</span><span>:</span> <span>'</span><span>86400'</span><span>StickinessType</span><span>:</span> <span>lb_cookie</span><span>UnhealthyThresholdCount</span><span>:</span> <span>'</span><span>5'</span><span># Configure additional Health endpoint to be Admin health</span><span>admin.aws:elasticbeanstalk:environment:process:admin</span><span>:</span><span>DeregistrationDelay</span><span>:</span> <span>'</span><span>20'</span><span>HealthCheckInterval</span><span>:</span> <span>'</span><span>15'</span><span>HealthCheckPath</span><span>:</span> <span>/api/admin/health</span><span>HealthCheckTimeout</span><span>:</span> <span>'</span><span>5'</span><span>HealthyThresholdCount</span><span>:</span> <span>'</span><span>3'</span><span>MatcherHTTPCode</span><span>:</span> <span>'</span><span>200'</span><span>Port</span><span>:</span> <span>'</span><span>9002'</span><span>Protocol</span><span>:</span> <span>HTTP</span><span>StickinessEnabled</span><span>:</span> <span>'</span><span>false'</span><span>StickinessLBCookieDuration</span><span>:</span> <span>'</span><span>86400'</span><span>StickinessType</span><span>:</span> <span>lb_cookie</span><span>UnhealthyThresholdCount</span><span>:</span> <span>'</span><span>5'</span><span>option_settings</span><span>:</span> <span># Set the instance type for EC2 instances to t3.large.</span> <span>aws:ec2:instances</span><span>:</span> <span>InstanceTypes</span><span>:</span> <span>t3.large</span> <span># Set the instance type for Auto Scaling launch configuration to t3.large.</span> <span>aws:autoscaling:launchconfiguration</span><span>:</span> <span>InstanceType</span><span>:</span> <span>t3.large</span> <span># Disable the listener on port 80.</span> <span>aws:elbv2:listener:default</span><span>:</span> <span>ListenerEnabled</span><span>:</span> <span>false</span> <span># Configure Elastic Beanstalk to listen on port 9001.</span> <span>aws:elbv2:listener:9001</span><span>:</span> <span>DefaultProcess</span><span>:</span> <span>default</span> <span>ListenerEnabled</span><span>:</span> <span>'</span><span>true'</span> <span>Protocol</span><span>:</span> <span>HTTP</span> <span>Rules</span><span>:</span> <span>null</span> <span>SSLCertificateArns</span><span>:</span> <span>null</span> <span>SSLPolicy</span><span>:</span> <span>null</span> <span># Configure Elastic Beanstalk to listen on port 9002.</span> <span>aws:elbv2:listener:9002</span><span>:</span> <span>DefaultProcess</span><span>:</span> <span>admin</span> <span>ListenerEnabled</span><span>:</span> <span>'</span><span>true'</span> <span>Protocol</span><span>:</span> <span>HTTP</span> <span>Rules</span><span>:</span> <span>null</span> <span>SSLCertificateArns</span><span>:</span> <span>null</span> <span>SSLPolicy</span><span>:</span> <span>null</span> <span># Configure default Health endpoint to be Customer health</span> <span>aws:elasticbeanstalk:environment:process:default</span><span>:</span> <span>DeregistrationDelay</span><span>:</span> <span>'</span><span>20'</span> <span>HealthCheckInterval</span><span>:</span> <span>'</span><span>15'</span> <span>HealthCheckPath</span><span>:</span> <span>/api/customer/health</span> <span>HealthCheckTimeout</span><span>:</span> <span>'</span><span>5'</span> <span>HealthyThresholdCount</span><span>:</span> <span>'</span><span>3'</span> <span>MatcherHTTPCode</span><span>:</span> <span>'</span><span>200'</span> <span>Port</span><span>:</span> <span>'</span><span>9001'</span> <span>Protocol</span><span>:</span> <span>HTTP</span> <span>StickinessEnabled</span><span>:</span> <span>'</span><span>false'</span> <span>StickinessLBCookieDuration</span><span>:</span> <span>'</span><span>86400'</span> <span>StickinessType</span><span>:</span> <span>lb_cookie</span> <span>UnhealthyThresholdCount</span><span>:</span> <span>'</span><span>5'</span> <span># Configure additional Health endpoint to be Admin health</span> <span>admin.aws:elasticbeanstalk:environment:process:admin</span><span>:</span> <span>DeregistrationDelay</span><span>:</span> <span>'</span><span>20'</span> <span>HealthCheckInterval</span><span>:</span> <span>'</span><span>15'</span> <span>HealthCheckPath</span><span>:</span> <span>/api/admin/health</span> <span>HealthCheckTimeout</span><span>:</span> <span>'</span><span>5'</span> <span>HealthyThresholdCount</span><span>:</span> <span>'</span><span>3'</span> <span>MatcherHTTPCode</span><span>:</span> <span>'</span><span>200'</span> <span>Port</span><span>:</span> <span>'</span><span>9002'</span> <span>Protocol</span><span>:</span> <span>HTTP</span> <span>StickinessEnabled</span><span>:</span> <span>'</span><span>false'</span> <span>StickinessLBCookieDuration</span><span>:</span> <span>'</span><span>86400'</span> <span>StickinessType</span><span>:</span> <span>lb_cookie</span> <span>UnhealthyThresholdCount</span><span>:</span> <span>'</span><span>5'</span>option_settings: # Set the instance type for EC2 instances to t3.large. aws:ec2:instances: InstanceTypes: t3.large # Set the instance type for Auto Scaling launch configuration to t3.large. aws:autoscaling:launchconfiguration: InstanceType: t3.large # Disable the listener on port 80. aws:elbv2:listener:default: ListenerEnabled: false # Configure Elastic Beanstalk to listen on port 9001. aws:elbv2:listener:9001: DefaultProcess: default ListenerEnabled: 'true' Protocol: HTTP Rules: null SSLCertificateArns: null SSLPolicy: null # Configure Elastic Beanstalk to listen on port 9002. aws:elbv2:listener:9002: DefaultProcess: admin ListenerEnabled: 'true' Protocol: HTTP Rules: null SSLCertificateArns: null SSLPolicy: null # Configure default Health endpoint to be Customer health aws:elasticbeanstalk:environment:process:default: DeregistrationDelay: '20' HealthCheckInterval: '15' HealthCheckPath: /api/customer/health HealthCheckTimeout: '5' HealthyThresholdCount: '3' MatcherHTTPCode: '200' Port: '9001' Protocol: HTTP StickinessEnabled: 'false' StickinessLBCookieDuration: '86400' StickinessType: lb_cookie UnhealthyThresholdCount: '5' # Configure additional Health endpoint to be Admin health admin.aws:elasticbeanstalk:environment:process:admin: DeregistrationDelay: '20' HealthCheckInterval: '15' HealthCheckPath: /api/admin/health HealthCheckTimeout: '5' HealthyThresholdCount: '3' MatcherHTTPCode: '200' Port: '9002' Protocol: HTTP StickinessEnabled: 'false' StickinessLBCookieDuration: '86400' StickinessType: lb_cookie UnhealthyThresholdCount: '5'
Enter fullscreen mode Exit fullscreen mode
Inital AWS Elastic Beanstalk setup
Provided the desired images are already in ECR, I first initialized EB after installing AWS and EB CLI with: eb init
<span>Select</span><span> </span><span>a</span><span> </span><span>default</span><span> </span><span>region</span><span> </span><span>1</span><span>)</span><span> </span><span>us-east-1</span><span> </span><span>:</span><span> </span><span>US</span><span> </span><span>East</span><span> </span><span>(</span><span>N.</span><span> </span><span>Virginia</span><span>)</span><span> </span><span>2</span><span>)</span><span> </span><span>us-west-1</span><span> </span><span>:</span><span> </span><span>US</span><span> </span><span>West</span><span> </span><span>(</span><span>N.</span><span> </span><span>California</span><span>)</span><span> </span><span>3</span><span>)</span><span> </span><span>us-west-2</span><span> </span><span>:</span><span> </span><span>US</span><span> </span><span>West</span><span> </span><span>(</span><span>Oregon</span><span>)</span><span> </span><span>4</span><span>)</span><span> </span><span>eu-west-1</span><span> </span><span>:</span><span> </span><span>EU</span><span> </span><span>(</span><span>Ireland</span><span>)</span><span> </span><span>5</span><span>)</span><span> </span><span>eu-central-1</span><span> </span><span>:</span><span> </span><span>EU</span><span> </span><span>(</span><span>Frankfurt</span><span>)</span><span> </span><span>6</span><span>)</span><span> </span><span>ap-south-1</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Mumbai</span><span>)</span><span> </span><span>7</span><span>)</span><span> </span><span>ap-southeast-1</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Singapore</span><span>)</span><span> </span><span>8</span><span>)</span><span> </span><span>ap-southeast-2</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Sydney</span><span>)</span><span> </span><span>9</span><span>)</span><span> </span><span>ap-northeast-1</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Tokyo</span><span>)</span><span> </span><span>10</span><span>)</span><span> </span><span>ap-northeast-2</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Seoul</span><span>)</span><span> </span><span>11</span><span>)</span><span> </span><span>sa-east-1</span><span> </span><span>:</span><span> </span><span>South</span><span> </span><span>America</span><span> </span><span>(</span><span>Sao</span><span> </span><span>Paulo</span><span>)</span><span> </span><span>12</span><span>)</span><span> </span><span>cn-north-1</span><span> </span><span>:</span><span> </span><span>China</span><span> </span><span>(</span><span>Beijing</span><span>)</span><span> </span><span>13</span><span>)</span><span> </span><span>cn-northwest-1</span><span> </span><span>:</span><span> </span><span>China</span><span> </span><span>(</span><span>Ningxia</span><span>)</span><span> </span><span>14</span><span>)</span><span> </span><span>us-east-2</span><span> </span><span>:</span><span> </span><span>US</span><span> </span><span>East</span><span> </span><span>(</span><span>Ohio</span><span>)</span><span> </span><span>15</span><span>)</span><span> </span><span>ca-central-1</span><span> </span><span>:</span><span> </span><span>Canada</span><span> </span><span>(</span><span>Central</span><span>)</span><span> </span><span>16</span><span>)</span><span> </span><span>eu-west-2</span><span> </span><span>:</span><span> </span><span>EU</span><span> </span><span>(</span><span>London</span><span>)</span><span> </span><span>17</span><span>)</span><span> </span><span>eu-west-3</span><span> </span><span>:</span><span> </span><span>EU</span><span> </span><span>(</span><span>Paris</span><span>)</span><span> </span><span>18</span><span>)</span><span> </span><span>eu-north-1</span><span> </span><span>:</span><span> </span><span>EU</span><span> </span><span>(</span><span>Stockholm</span><span>)</span><span> </span><span>19</span><span>)</span><span> </span><span>eu-south-1</span><span> </span><span>:</span><span> </span><span>EU</span><span> </span><span>(</span><span>Milano</span><span>)</span><span> </span><span>20</span><span>)</span><span> </span><span>ap-east-1</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Hong</span><span> </span><span>Kong</span><span>)</span><span> </span><span>21</span><span>)</span><span> </span><span>me-south-1</span><span> </span><span>:</span><span> </span><span>Middle</span><span> </span><span>East</span><span> </span><span>(</span><span>Bahrain</span><span>)</span><span> </span><span>22</span><span>)</span><span> </span><span>il-central-1</span><span> </span><span>:</span><span> </span><span>Middle</span><span> </span><span>East</span><span> </span><span>(</span><span>Israel</span><span>)</span><span> </span><span>23</span><span>)</span><span> </span><span>af-south-1</span><span> </span><span>:</span><span> </span><span>Africa</span><span> </span><span>(</span><span>Cape</span><span> </span><span>Town</span><span>)</span><span> </span><span>24</span><span>)</span><span> </span><span>ap-southeast-3</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Jakarta</span><span>)</span><span> </span><span>25</span><span>)</span><span> </span><span>ap-northeast-3</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Osaka</span><span>)</span><span> </span><span>(</span><span>default</span><span> </span><span>is</span><span> </span><span>3</span><span>):</span><span> </span><span>19</span><span> </span><span>Enter</span><span> </span><span>Application</span><span> </span><span>Name</span><span> </span><span>(</span><span>default</span><span> </span><span>is</span><span> </span><span>"eb_deploy"</span><span>):</span><span> </span><span>MyJavaAPI-newEnv</span><span> </span><span>Application</span><span> </span><span>MyJavaAPI-newEnv</span><span> </span><span>has</span><span> </span><span>been</span><span> </span><span>created.</span><span> </span><span>It</span><span> </span><span>appears</span><span> </span><span>you</span><span> </span><span>are</span><span> </span><span>using</span><span> </span><span>Docker.</span><span> </span><span>Is</span><span> </span><span>this</span><span> </span><span>correct</span><span>?</span><span> </span><span>(</span><span>Y/n</span><span>):</span><span> </span><span>y</span><span> </span><span>Select</span><span> </span><span>a</span><span> </span><span>platform</span><span> </span><span>branch.</span><span> </span><span>1</span><span>)</span><span> </span><span>Docker</span><span> </span><span>running</span><span> </span><span>on</span><span> </span><span>64bit</span><span> </span><span>Amazon</span><span> </span><span>Linux</span><span> </span><span>2023</span><span> </span><span>2</span><span>)</span><span> </span><span>ECS</span><span> </span><span>running</span><span> </span><span>on</span><span> </span><span>64bit</span><span> </span><span>Amazon</span><span> </span><span>Linux</span><span> </span><span>2023</span><span> </span><span>3</span><span>)</span><span> </span><span>Docker</span><span> </span><span>running</span><span> </span><span>on</span><span> </span><span>64bit</span><span> </span><span>Amazon</span><span> </span><span>Linux</span><span> </span><span>2</span><span> </span><span>4</span><span>)</span><span> </span><span>ECS</span><span> </span><span>running</span><span> </span><span>on</span><span> </span><span>64bit</span><span> </span><span>Amazon</span><span> </span><span>Linux</span><span> </span><span>2</span><span> </span><span>(</span><span>default</span><span> </span><span>is</span><span> </span><span>1</span><span>):</span><span> </span><span>2</span><span> </span><span>Cannot</span><span> </span><span>setup</span><span> </span><span>CodeCommit</span><span> </span><span>because</span><span> </span><span>there</span><span> </span><span>is</span><span> </span><span>no</span><span> </span><span>Source</span><span> </span><span>Control</span><span> </span><span>setup</span><span>,</span><span> </span><span>continuing</span><span> </span><span>with</span><span> </span><span>initialization</span><span> </span><span>Do</span><span> </span><span>you</span><span> </span><span>want</span><span> </span><span>to</span><span> </span><span>set</span><span> </span><span>up</span><span> </span><span>SSH</span><span> </span><span>for</span><span> </span><span>your</span><span> </span><span>instances</span><span>?</span><span> </span><span>(</span><span>Y/n</span><span>):</span><span> </span><span>y</span><span> </span><span>Select</span><span> </span><span>a</span><span> </span><span>keypair.</span><span> </span><span>1</span><span>)</span><span> </span><span>existing_pair</span><span> </span><span>2</span><span>)</span><span> </span><span>[</span><span> </span><span>Create</span><span> </span><span>new</span><span> </span><span>KeyPair</span><span> </span><span>]</span><span> </span><span>(</span><span>default</span><span> </span><span>is</span><span> </span><span>1</span><span>):</span><span> </span><span>2</span><span> </span><span>Type</span><span> </span><span>a</span><span> </span><span>keypair</span><span> </span><span>name.</span><span> </span><span>(</span><span>Default</span><span> </span><span>is</span><span> </span><span>aws-eb</span><span>):</span><span> </span><span>MyJavaSolutionAPI_pair</span><span> </span><span>Generating</span><span> </span><span>public/private</span><span> </span><span>rsa</span><span> </span><span>key</span><span> </span><span>pair.</span><span> </span><span>Enter</span><span> </span><span>passphrase</span><span> </span><span>(</span><span>empty</span><span> </span><span>for</span><span> </span><span>no</span><span> </span><span>passphrase</span><span>):</span><span> </span><span>Enter</span><span> </span><span>same</span><span> </span><span>passphrase</span><span> </span><span>again:</span><span> </span><span>Your</span><span> </span><span>identification</span><span> </span><span>has</span><span> </span><span>been</span><span> </span><span>saved</span><span> </span><span>in</span><span> </span><span>C:\Users\Username\.ssh\MyJavaSolutionAPI_pair.</span><span> </span><span>Your</span><span> </span><span>public</span><span> </span><span>key</span><span> </span><span>has</span><span> </span><span>been</span><span> </span><span>saved</span><span> </span><span>in</span><span> </span><span>C:\Users\Username\.ssh\MyJavaSolutionAPI_pair.pub.</span><span> </span><span>The</span><span> </span><span>key</span><span> </span><span>fingerprint</span><span> </span><span>is:</span><span> </span><span>SHA256:.../te34</span><span> </span><span>MyJavaSolutionAPI_pair</span><span> </span><span>The</span><span> </span><span>key</span><span>'s randomart image is: ... Enter passphrase: WARNING: Uploaded SSH public key for "MyJavaSolutionAPI_pair" into EC2 for region ... </span><span>Select</span><span> </span><span>a</span><span> </span><span>default</span><span> </span><span>region</span><span> </span><span>1</span><span>)</span><span> </span><span>us-east-1</span><span> </span><span>:</span><span> </span><span>US</span><span> </span><span>East</span><span> </span><span>(</span><span>N.</span><span> </span><span>Virginia</span><span>)</span><span> </span><span>2</span><span>)</span><span> </span><span>us-west-1</span><span> </span><span>:</span><span> </span><span>US</span><span> </span><span>West</span><span> </span><span>(</span><span>N.</span><span> </span><span>California</span><span>)</span><span> </span><span>3</span><span>)</span><span> </span><span>us-west-2</span><span> </span><span>:</span><span> </span><span>US</span><span> </span><span>West</span><span> </span><span>(</span><span>Oregon</span><span>)</span><span> </span><span>4</span><span>)</span><span> </span><span>eu-west-1</span><span> </span><span>:</span><span> </span><span>EU</span><span> </span><span>(</span><span>Ireland</span><span>)</span><span> </span><span>5</span><span>)</span><span> </span><span>eu-central-1</span><span> </span><span>:</span><span> </span><span>EU</span><span> </span><span>(</span><span>Frankfurt</span><span>)</span><span> </span><span>6</span><span>)</span><span> </span><span>ap-south-1</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Mumbai</span><span>)</span><span> </span><span>7</span><span>)</span><span> </span><span>ap-southeast-1</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Singapore</span><span>)</span><span> </span><span>8</span><span>)</span><span> </span><span>ap-southeast-2</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Sydney</span><span>)</span><span> </span><span>9</span><span>)</span><span> </span><span>ap-northeast-1</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Tokyo</span><span>)</span><span> </span><span>10</span><span>)</span><span> </span><span>ap-northeast-2</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Seoul</span><span>)</span><span> </span><span>11</span><span>)</span><span> </span><span>sa-east-1</span><span> </span><span>:</span><span> </span><span>South</span><span> </span><span>America</span><span> </span><span>(</span><span>Sao</span><span> </span><span>Paulo</span><span>)</span><span> </span><span>12</span><span>)</span><span> </span><span>cn-north-1</span><span> </span><span>:</span><span> </span><span>China</span><span> </span><span>(</span><span>Beijing</span><span>)</span><span> </span><span>13</span><span>)</span><span> </span><span>cn-northwest-1</span><span> </span><span>:</span><span> </span><span>China</span><span> </span><span>(</span><span>Ningxia</span><span>)</span><span> </span><span>14</span><span>)</span><span> </span><span>us-east-2</span><span> </span><span>:</span><span> </span><span>US</span><span> </span><span>East</span><span> </span><span>(</span><span>Ohio</span><span>)</span><span> </span><span>15</span><span>)</span><span> </span><span>ca-central-1</span><span> </span><span>:</span><span> </span><span>Canada</span><span> </span><span>(</span><span>Central</span><span>)</span><span> </span><span>16</span><span>)</span><span> </span><span>eu-west-2</span><span> </span><span>:</span><span> </span><span>EU</span><span> </span><span>(</span><span>London</span><span>)</span><span> </span><span>17</span><span>)</span><span> </span><span>eu-west-3</span><span> </span><span>:</span><span> </span><span>EU</span><span> </span><span>(</span><span>Paris</span><span>)</span><span> </span><span>18</span><span>)</span><span> </span><span>eu-north-1</span><span> </span><span>:</span><span> </span><span>EU</span><span> </span><span>(</span><span>Stockholm</span><span>)</span><span> </span><span>19</span><span>)</span><span> </span><span>eu-south-1</span><span> </span><span>:</span><span> </span><span>EU</span><span> </span><span>(</span><span>Milano</span><span>)</span><span> </span><span>20</span><span>)</span><span> </span><span>ap-east-1</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Hong</span><span> </span><span>Kong</span><span>)</span><span> </span><span>21</span><span>)</span><span> </span><span>me-south-1</span><span> </span><span>:</span><span> </span><span>Middle</span><span> </span><span>East</span><span> </span><span>(</span><span>Bahrain</span><span>)</span><span> </span><span>22</span><span>)</span><span> </span><span>il-central-1</span><span> </span><span>:</span><span> </span><span>Middle</span><span> </span><span>East</span><span> </span><span>(</span><span>Israel</span><span>)</span><span> </span><span>23</span><span>)</span><span> </span><span>af-south-1</span><span> </span><span>:</span><span> </span><span>Africa</span><span> </span><span>(</span><span>Cape</span><span> </span><span>Town</span><span>)</span><span> </span><span>24</span><span>)</span><span> </span><span>ap-southeast-3</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Jakarta</span><span>)</span><span> </span><span>25</span><span>)</span><span> </span><span>ap-northeast-3</span><span> </span><span>:</span><span> </span><span>Asia</span><span> </span><span>Pacific</span><span> </span><span>(</span><span>Osaka</span><span>)</span><span> </span><span>(</span><span>default</span><span> </span><span>is</span><span> </span><span>3</span><span>):</span><span> </span><span>19</span><span> </span><span>Enter</span><span> </span><span>Application</span><span> </span><span>Name</span><span> </span><span>(</span><span>default</span><span> </span><span>is</span><span> </span><span>"eb_deploy"</span><span>):</span><span> </span><span>MyJavaAPI-newEnv</span><span> </span><span>Application</span><span> </span><span>MyJavaAPI-newEnv</span><span> </span><span>has</span><span> </span><span>been</span><span> </span><span>created.</span><span> </span><span>It</span><span> </span><span>appears</span><span> </span><span>you</span><span> </span><span>are</span><span> </span><span>using</span><span> </span><span>Docker.</span><span> </span><span>Is</span><span> </span><span>this</span><span> </span><span>correct</span><span>?</span><span> </span><span>(</span><span>Y/n</span><span>):</span><span> </span><span>y</span><span> </span><span>Select</span><span> </span><span>a</span><span> </span><span>platform</span><span> </span><span>branch.</span><span> </span><span>1</span><span>)</span><span> </span><span>Docker</span><span> </span><span>running</span><span> </span><span>on</span><span> </span><span>64bit</span><span> </span><span>Amazon</span><span> </span><span>Linux</span><span> </span><span>2023</span><span> </span><span>2</span><span>)</span><span> </span><span>ECS</span><span> </span><span>running</span><span> </span><span>on</span><span> </span><span>64bit</span><span> </span><span>Amazon</span><span> </span><span>Linux</span><span> </span><span>2023</span><span> </span><span>3</span><span>)</span><span> </span><span>Docker</span><span> </span><span>running</span><span> </span><span>on</span><span> </span><span>64bit</span><span> </span><span>Amazon</span><span> </span><span>Linux</span><span> </span><span>2</span><span> </span><span>4</span><span>)</span><span> </span><span>ECS</span><span> </span><span>running</span><span> </span><span>on</span><span> </span><span>64bit</span><span> </span><span>Amazon</span><span> </span><span>Linux</span><span> </span><span>2</span><span> </span><span>(</span><span>default</span><span> </span><span>is</span><span> </span><span>1</span><span>):</span><span> </span><span>2</span><span> </span><span>Cannot</span><span> </span><span>setup</span><span> </span><span>CodeCommit</span><span> </span><span>because</span><span> </span><span>there</span><span> </span><span>is</span><span> </span><span>no</span><span> </span><span>Source</span><span> </span><span>Control</span><span> </span><span>setup</span><span>,</span><span> </span><span>continuing</span><span> </span><span>with</span><span> </span><span>initialization</span><span> </span><span>Do</span><span> </span><span>you</span><span> </span><span>want</span><span> </span><span>to</span><span> </span><span>set</span><span> </span><span>up</span><span> </span><span>SSH</span><span> </span><span>for</span><span> </span><span>your</span><span> </span><span>instances</span><span>?</span><span> </span><span>(</span><span>Y/n</span><span>):</span><span> </span><span>y</span><span> </span><span>Select</span><span> </span><span>a</span><span> </span><span>keypair.</span><span> </span><span>1</span><span>)</span><span> </span><span>existing_pair</span><span> </span><span>2</span><span>)</span><span> </span><span>[</span><span> </span><span>Create</span><span> </span><span>new</span><span> </span><span>KeyPair</span><span> </span><span>]</span><span> </span><span>(</span><span>default</span><span> </span><span>is</span><span> </span><span>1</span><span>):</span><span> </span><span>2</span><span> </span><span>Type</span><span> </span><span>a</span><span> </span><span>keypair</span><span> </span><span>name.</span><span> </span><span>(</span><span>Default</span><span> </span><span>is</span><span> </span><span>aws-eb</span><span>):</span><span> </span><span>MyJavaSolutionAPI_pair</span><span> </span><span>Generating</span><span> </span><span>public/private</span><span> </span><span>rsa</span><span> </span><span>key</span><span> </span><span>pair.</span><span> </span><span>Enter</span><span> </span><span>passphrase</span><span> </span><span>(</span><span>empty</span><span> </span><span>for</span><span> </span><span>no</span><span> </span><span>passphrase</span><span>):</span><span> </span><span>Enter</span><span> </span><span>same</span><span> </span><span>passphrase</span><span> </span><span>again:</span><span> </span><span>Your</span><span> </span><span>identification</span><span> </span><span>has</span><span> </span><span>been</span><span> </span><span>saved</span><span> </span><span>in</span><span> </span><span>C:\Users\Username\.ssh\MyJavaSolutionAPI_pair.</span><span> </span><span>Your</span><span> </span><span>public</span><span> </span><span>key</span><span> </span><span>has</span><span> </span><span>been</span><span> </span><span>saved</span><span> </span><span>in</span><span> </span><span>C:\Users\Username\.ssh\MyJavaSolutionAPI_pair.pub.</span><span> </span><span>The</span><span> </span><span>key</span><span> </span><span>fingerprint</span><span> </span><span>is:</span><span> </span><span>SHA256:.../te34</span><span> </span><span>MyJavaSolutionAPI_pair</span><span> </span><span>The</span><span> </span><span>key</span><span>'s randomart image is: ... Enter passphrase: WARNING: Uploaded SSH public key for "MyJavaSolutionAPI_pair" into EC2 for region ... </span>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) 19) eu-south-1 : EU (Milano) 20) ap-east-1 : Asia Pacific (Hong Kong) 21) me-south-1 : Middle East (Bahrain) 22) il-central-1 : Middle East (Israel) 23) af-south-1 : Africa (Cape Town) 24) ap-southeast-3 : Asia Pacific (Jakarta) 25) ap-northeast-3 : Asia Pacific (Osaka) (default is 3): 19 Enter Application Name (default is "eb_deploy"): MyJavaAPI-newEnv Application MyJavaAPI-newEnv has been created. It appears you are using Docker. Is this correct? (Y/n): y Select a platform branch. 1) Docker running on 64bit Amazon Linux 2023 2) ECS running on 64bit Amazon Linux 2023 3) Docker running on 64bit Amazon Linux 2 4) ECS running on 64bit Amazon Linux 2 (default is 1): 2 Cannot setup CodeCommit because there is no Source Control setup, continuing with initialization Do you want to set up SSH for your instances? (Y/n): y Select a keypair. 1) existing_pair 2) [ Create new KeyPair ] (default is 1): 2 Type a keypair name. (Default is aws-eb): MyJavaSolutionAPI_pair Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in C:\Users\Username\.ssh\MyJavaSolutionAPI_pair. Your public key has been saved in C:\Users\Username\.ssh\MyJavaSolutionAPI_pair.pub. The key fingerprint is: SHA256:.../te34 MyJavaSolutionAPI_pair The key's randomart image is: ... Enter passphrase: WARNING: Uploaded SSH public key for "MyJavaSolutionAPI_pair" into EC2 for region ...
Enter fullscreen mode Exit fullscreen mode
Create
- After the AWS Beanstalk Environment was initialized locally, run
eb create
to push the initial changes into the server
<span>Enter</span><span> </span><span>Environment</span><span> </span><span>Name</span><span> </span><span>(</span><span>default</span><span> </span><span>is</span><span> </span><span>MyJavaAPI-newEnv</span><span>):</span><span> </span><span>MyJavaAPI-newEnv</span><span> </span><span>Enter</span><span> </span><span>DNS</span><span> </span><span>CNAME</span><span> </span><span>prefix</span><span> </span><span>(</span><span>default</span><span> </span><span>is</span><span> </span><span>MyJavaAPI-newEnv</span><span>):</span><span> </span><span>Select</span><span> </span><span>a</span><span> </span><span>load</span><span> </span><span>balancer</span><span> </span><span>type</span><span> </span><span>1</span><span>)</span><span> </span><span>classic</span><span> </span><span>2</span><span>)</span><span> </span><span>application</span><span> </span><span>3</span><span>)</span><span> </span><span>network</span><span> </span><span>(</span><span>default</span><span> </span><span>is</span><span> </span><span>2</span><span>):</span><span> </span><span>2</span><span> </span><span>Would</span><span> </span><span>you</span><span> </span><span>like</span><span> </span><span>to</span><span> </span><span>enable</span><span> </span><span>Spot</span><span> </span><span>Fleet</span><span> </span><span>requests</span><span> </span><span>for</span><span> </span><span>this</span><span> </span><span>environment</span><span>?</span><span> </span><span>(</span><span>y/N</span><span>):</span><span> </span><span>n</span><span> </span><span>Creating</span><span> </span><span>application</span><span> </span><span>version</span><span> </span><span>archive</span><span> </span><span>"app-231023_153901209577"</span><span>.</span><span> </span><span>Uploading</span><span> </span><span>MyJavaAPI/app-231023_153901209577.zip</span><span> </span><span>to</span><span> </span><span>S3.</span><span> </span><span>This</span><span> </span><span>may</span><span> </span><span>take</span><span> </span><span>a</span><span> </span><span>while.</span><span> </span><span>Enter</span><span> </span><span>Environment</span><span> </span><span>Name</span><span> </span><span>(</span><span>default</span><span> </span><span>is</span><span> </span><span>MyJavaAPI-newEnv</span><span>):</span><span> </span><span>MyJavaAPI-newEnv</span><span> </span><span>Enter</span><span> </span><span>DNS</span><span> </span><span>CNAME</span><span> </span><span>prefix</span><span> </span><span>(</span><span>default</span><span> </span><span>is</span><span> </span><span>MyJavaAPI-newEnv</span><span>):</span><span> </span><span>Select</span><span> </span><span>a</span><span> </span><span>load</span><span> </span><span>balancer</span><span> </span><span>type</span><span> </span><span>1</span><span>)</span><span> </span><span>classic</span><span> </span><span>2</span><span>)</span><span> </span><span>application</span><span> </span><span>3</span><span>)</span><span> </span><span>network</span><span> </span><span>(</span><span>default</span><span> </span><span>is</span><span> </span><span>2</span><span>):</span><span> </span><span>2</span><span> </span><span>Would</span><span> </span><span>you</span><span> </span><span>like</span><span> </span><span>to</span><span> </span><span>enable</span><span> </span><span>Spot</span><span> </span><span>Fleet</span><span> </span><span>requests</span><span> </span><span>for</span><span> </span><span>this</span><span> </span><span>environment</span><span>?</span><span> </span><span>(</span><span>y/N</span><span>):</span><span> </span><span>n</span><span> </span><span>Creating</span><span> </span><span>application</span><span> </span><span>version</span><span> </span><span>archive</span><span> </span><span>"app-231023_153901209577"</span><span>.</span><span> </span><span>Uploading</span><span> </span><span>MyJavaAPI/app-231023_153901209577.zip</span><span> </span><span>to</span><span> </span><span>S3.</span><span> </span><span>This</span><span> </span><span>may</span><span> </span><span>take</span><span> </span><span>a</span><span> </span><span>while.</span><span> </span>Enter Environment Name (default is MyJavaAPI-newEnv): MyJavaAPI-newEnv Enter DNS CNAME prefix (default is MyJavaAPI-newEnv): Select a load balancer type 1) classic 2) application 3) network (default is 2): 2 Would you like to enable Spot Fleet requests for this environment? (y/N): n Creating application version archive "app-231023_153901209577". Uploading MyJavaAPI/app-231023_153901209577.zip to S3. This may take a while.
Enter fullscreen mode Exit fullscreen mode
If the configuration is applied correctly, then it will create a new EB application and environment, with a coupled RDS database, a EC2 instance, an S3 bucket containing the files, an ECS cluster and all necessary security groups.
Manually deploying a new version on AWS Elastic Beanstalk
Deploy
If the latest build was 20231026.21:
You can change the version in Dockerrun.aws.json
and run
<span>eb</span><span> </span><span>deploy</span><span> </span><span>--label</span><span> </span><span>"20231026.21"</span><span> </span><span>--message</span><span> </span><span>"20231026.21"</span><span> </span><span>--process</span><span> </span><span>eb</span><span> </span><span>deploy</span><span> </span><span>--label</span><span> </span><span>"20231026.21"</span><span> </span><span>--message</span><span> </span><span>"20231026.21"</span><span> </span><span>--process</span><span> </span>eb deploy --label "20231026.21" --message "20231026.21" --process
Enter fullscreen mode Exit fullscreen mode
This will result in a new application version in the server.
Config save
The configuration of a current version can be saved to be reused in different environments.
<span>eb</span><span> </span><span>config</span><span> </span><span>save</span><span> </span><span>--cfg</span><span> </span><span>my-api-v2-20231026.21</span><span> </span><span>--tags</span><span> </span><span>Environment</span><span>=</span><span>newEnv</span><span> </span><span>eb</span><span> </span><span>config</span><span> </span><span>save</span><span> </span><span>--cfg</span><span> </span><span>my-api-v2-20231026.21</span><span> </span><span>--tags</span><span> </span><span>Environment</span><span>=</span><span>newEnv</span><span> </span>eb config save --cfg my-api-v2-20231026.21 --tags Environment=newEnv
Enter fullscreen mode Exit fullscreen mode
And with that we have an environment up and running with our 2 dockerized API images.
In the next post of this series I will show how to use Azure DevOps pipelines and release to Continuously Deploy this.
Migrating an Springboot Java API (4 Part Series)
1 Migrating an Springboot Java API: Part 1 – Docker
2 Migrating an Springboot Java API: Part 2 – Azure Build
3 Migrating an Springboot Java API: Part 3 – AWS ElasticBeanstalk
4 Migrating an Springboot Java API: Part 4 – Azure Release
原文链接:Migrating an Springboot Java API: Part 3 – AWS ElasticBeanstalk
暂无评论内容