Is there anyway to push my EB instance to run a later node.js version, the docs here say that the supported platform version is only 4.4.3 but I need to run 6.0.0
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html#concepts.platforms.nodejs
According to the official documentation it seems that only some versions are supported on Elastic Beanstalk (mainly 4.4.3 / 0.12.6 but not 6.0.0). You can still choose between these versions in the interface but not outside this list.
The only solution I see for now is to deploy your own stack directly on an EC2 instance without using the Elastic Beanstalk service.
Related
Trying to upgrade an existing React app running on AWS Amplify from node v16 to v18
The image used is the provided Amazon Linux 2
Expected it to install node 18 on the machine it spun up and build the application, since this is the LTS version
Here is the error I get in the build process:
2022-11-15T19:19:02.924Z [WARNING]: node: /lib64/libm.so.6: version GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version GLIBC_2.28' not found (required by node)
The same problem happened to me, I fixed it by adding a custom image in the build config.
You can see the steps to add a custom image in the following link
The image that worked for me was the following:
public.ecr.aws/t7o4u3y2/node-18.2.0:latest
Amazon Linux 2 includes Glibc 2.26 or under. To use a higher glibc version, you need to consider other AMI, for example Amazon Linux 2022 (al2022-ami) as it includes glibc 2.34.
You can also revert back to Node.js 16 as it uses a lower version of Glibc.
Thanks for opening this issue. Amazon Linux 2 doesn't support the right GLIBC version at the moment, we're coordinating internally to get that updated. As #saharl-neosec mentions, you can provide a custom docker image until we fully support it:
https://github.com/aws-amplify/amplify-hosting/issues/3109
I'm trying to deploy a node.js app but get stuck with an error about missing dependencies for gdal.
Error: /lib64/libm.so.6: version 'GLIBC_2.27' not found (required by /var/app/current/node_modules/gdal/lib/binding/gdal.node)
How would I go about installing this required dependency?
gdal-async on npm explicitly supports AWS.
As its author, I will be happy to help you if it doesn't work - you can create an issue on github.
I don't know what you call gdal.js.
There is the original gdal by Mapbox and Natural Atlas that is not actively developed anymore.
There is gdal-next on which I used to work a little bit which has a current version of GDAL but it is not very active either.
There is my gdal-async which is the only one that is currently active.
And there is an Emscripten port that is pure JS and runs in the browser, but it is stalled at GDAL 2.
Supporting AWS is simply a matter of compiling with the right libraries.
I have a Node.js application running on 64bit Amazon Linux on Elastic Beanstalk, which uses nginx 1.18.0 ( https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs )
Our security department requires us now to use nginx 1.21.0 which is not supported even by 64bit Amazon Linux 2 AMIs. Is it possible to upgrade nginx version manually? I have checked documentation but couldn't find anything regarding that.
My current platform version is: Node.js running on 64bit Amazon Linux/2.0.1
Which support following NodeJS versions: 0.12.6, 0.10.39, 0.10.38, 0.10.31, 0.8.28
I am looking a way to upgrade the NodeJS version: 4.x.x which seems to be available in platform version: Node.js running on 64bit Amazon Linux/3.1.0
but when I am upgrading it. it's says
How can I select the allowed version as it's not available.
Any Help,
Thanks,
P.S
1. Already tried via save / load configurations. Unable to find any option there.
2. Don't want to do setup it from the scratch for now.
First, ensure that you have tested the changes adequately before deploying to production. After that, you can:
Note the name of the Platform ARN/Solution Stack you want to upgrade to.
Perform eb init --region REGION_NAME and pick the application and environment you are working on
Perform eb config. This opens your environment's configuration in an editor. Change the value of the PlatformArn to the one you noted above in step 1.
Also in the editor, find the option setting aws:elasticbeanstalk:container:nodejs. Change the NodeVersion to 6.9.1 or one that the error message above suggests.
Save and quit.
After the configuration is complete:
Perform eb status to verify that your environment is using the upgraded Solution Stack.
You can clone the existing environment to a new one, using a different platform version.
In the Actions menu, select "Clone with the latest platform".
That opens a new page where you can select from available OS/nodejs versions.
Once you are satisfied with the new environment, you can swap URLs with the old one in order to replace it. After that, you can remove the older env.
This has happened a few times before when Amazon releases new Environments and they do not include versions in common between the environments. The solution is to set value for nodejs version to an empty string which means to use the latest version. It could break your app, but you can make a clone with latest platform and switch to desired version of nodejs later. So run this command to do that:
aws elasticbeanstalk update-environment --region "your region" --application-name "your app" --environment-name "your env" --option-settings "OptionName=NodeVersion,Namespace=aws:elasticbeanstalk:container:nodejs,Value=''"
The Problem:
Elastic Beanstalk versions only support specific versions of NodeJS.
EG:
2.0.7 supports Node 0.12.9
2.1.3 supports Node 0.12.15
There are no longer nice 'bridging' versions so you can update the Environment and wait for it to become stable before updating the NodeJS version.
Is there any way to update both at once?
I tried doing it via the CLI with:
aws elasticbeanstalk update-environment --environment-name environment-name --solution-stack-name "64bit Amazon Linux 2016.03 v2.1.3 running Node.js" --option-settings "OptionName=NodeVersion, Namespace=aws:elasticbeanstalk:container:nodejs, Value=0.12.15"
That only updated the NodeJS version to an invalid value, putting the Environment out of order with seemingly no way to recover it.
Alternatively, is there some other way to do this?