Auto pick the latest java SE configuration for EBS in AWS - amazon-web-services

A spring-boot application is deployed to AWS using a cloud -formation script. It fails to deploy the application when the Java SE is updated to a later version giving a similar error as below.
No Solution Stack named '64bit Amazon Linux 2018.03 v2.7.1 running Java 8' found.
Is it possible to determine the Java SE version supported by the AWS (for EBS) authomatically? Can I retrieve the latest value somehow?
Thanks in advance

Can you run this aws elasticbeanstalk list-available-solution-stacks from the CLI by giving the region also if it is not configured before. Then you can see whether the above give solution stack is listed. If not you have to raise a ticket to aws, asking them to make the solution stack available in your region. 64bit Amazon Linux 2018.03 v2.7.1 running Java 8 is one of the aws new solution stack so use the CLI and make confirm it's available in your region.

Related

Find what is making EC2 IMDSv1 calls on Windows Servers

I'm trying to get all our instances (all Windows based) upgraded to IMDSv2 and have been following the advice found here https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html#instance-metadata-transition-to-version-2 and using CloudWatch to find instances making MetadataNoToken calls (i.e. using IMDSv1).
I've found several instances using IMDSv1 this way, but I can't work out how to find out what is making the calls from with the OS.
According to CloudWatch each server is making one call per minute to the IMDSv1 service.
The support article mentions upgrading any AWS SDKs or CLI tools, but the servers in question don't have seem to have any SDKs or CLI tools installed.
Each instance has the following AWS published tools installed on them:
Amazon SSM Agent
Amazon CloudWatch Agent
AWS Tools for Windows
EC2ConfigService
AWS PV Drivers
aws-cfn-bootstrap
I've updated the Amazon SSM Agent and the Amazon CloudWatch Agent to the latest versions. But I can't find any information about how to update the AWS Tools for Windows package.
I've also run TCPView from Sysinternals on the servers and tried to find what process is making calls to the 169.254.169.254 endpoint, but it doesn't seem to pick up any traffic to that address.
I'm reluctant to just disable IMDSv1 and do a scream test as they are production servers.
If anyone has any advice or guidance on how to find what is making the IMDSv1 calls it would be appreciated.
I figured it out in the end, using the £Windows Resource Monitor Network monitor" tool, I found the exectucable that was making the calls.
I've written up the proceess in this blog post:
https://www.greystone.co.uk/2022/03/24/how-greystone-upgraded-its-aws-ec2-instances-to-use-instance-meta-data-service-version-2-imdsv2/

How do I change the platform branch when cloning an environment?

I need help fixing a deprecated Elastic Beanstalk Environment running Python with Amazon Linux. Based on the information provided Amazon Linux is deprecated and I have to switch the platform to Amazon Linux 2. My Elastic Beanstalk status is severe and my web portal is not working.
See image insert.
I tried to clone the platform and simply change to the recommended supported platform Amazon Linux2 however the option to switch is not provided as seen in the screenshot below:
How do I get this done the easy way without having to do it from scratch?
Please help. Thank you.
How do I get this done the easy way without having to do it from scratch?
You can't. It must be done manually as EB platforms based on AL2 are much different then those based on AL1. AWS provides a guide how to do it:
Migrating your Elastic Beanstalk Linux application to Amazon Linux 2

Unable to upgrade platform version on Elastic Beanstalk

Currently my workload is running on "Tomcat 8.5 with Java 8 running on 64bit Amazon Linux/3.3.9" and want to upgrade to Amazon Linux 2 and run my workload on "Tomcat 8.5 with Corretto 8 running on 64bit Amazon Linux 2/4.2.5". For testing was trying to clone the existing environment but don't see an option to upgrade the platform. The platform option is greyed out. Is this by design or am i doing something wrong ?
Is this by design or am i doing something wrong ?
Its by design and you have to do it manually. The reason is that EB platforms based on Amazon Linux (AL1) are incomtabile with those based on AL2. This means that there is no automated procedure for the upgrade. You have to follow the AWS docs to do manual upgrade:
Migrating your Elastic Beanstalk Linux application to Amazon Linux 2

How to update platform version in AWS ElasticBeanStalk?

We have a production ElasticBeanStalk on N.Virginia region. This environment uses a deprecated platform branch. Amazon recommended that we upgrade to a supported platform branch.
Platform branch - Node.js running on 64bit Amazon Linux
Current Platform version - 4.10.2
Current node js version - 10.16.3
Recommended Platform version - 4.17.9
I just tried to upgrade to a supported platform branch for Elastic Beanstalk. When I try to change the version in Platform, Amazon recommend us to clone the current environment, which creates a newer version of the platform, and then swap the CNAME of the environments.
After I cloned my environment, its Health status like "No Data".
When I try to change the Platform version in cloned environment, it doesn't allow me to update due to Health status is Invalid state.
Can any one please advice on this issue? Thanks in Advance.
Nodejs 4.17.9 is only available for 64bit Amazon Linux 2 v5.4.4 running Node.js 14 EB platform version. This EB is based on Amazon Linux 2 (AL2). Your current version uses AL1. They are incompatible with each other.
This means you have to manually migrate your current EB application to new environment based on AL2. The general steps for this are described in AWS docs:
Migrating your Elastic Beanstalk Linux application to Amazon Linux 2

Creating amazon ec2 windows AMIs using amazon sdk in java

I am writing an application which would enable my company's future clients to be able to launch Amazon aws instances with Windows OS. Hence, I would want to create windows AMIs first. The article below gives a step by step approach for creating EBS-backed windows AMIs using Amazon AWS console.
http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Creating_EBSbacked_WinAMI.html
But when I tried looking up the methods provided by CreateImageRequest API provided by Amazon SDK, I couldn't quite figure out how to replicate the AWS management console process for creating a windows image in Java. I exhausted my google searches and I came up empty. Has anyone tried this? Is this even possible at all to create Windows images through Amazon SDK?
I found that CreateInstanceRequest API has an option to specify the OS types but the options are limited to Amazon Linux or Ubuntu 12.04 LTS. The documentation for CreateInstanceRequest is below:
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/opsworks/model/CreateInstanceRequest.html
I would appreciate any useful link or code snippet. Thanks.
I don't completely understand what you are trying to achieve.
Do you want to start an instance in EC2 or with OpsWorks because your second link points to the OpsWorks documentation.
OpsWorks dosen't support Windows right now.