aws-samples / eb-node-express-sample

Sample Express application for AWS Elastic Beanstalk
Apache License 2.0
281 stars 248 forks source link

Unable to deploy #18

Open kuabhish opened 4 years ago

kuabhish commented 4 years ago

I am following https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/nodejs-dynamodb-tutorial.html

and so I downloaded the zip of this repo and was trying to deploy it.

But I aam getting the following error all the time:


Invalid option specification (Namespace: 'aws:elasticbeanstalk:container:nodejs:staticfiles', OptionName: '/static'): Unknown configuration setting.

How can I solve it?

sveinhov commented 4 years ago

I'm having the same problem. kuabhish, were you able to resolve this?

kuabhish commented 4 years ago

Sorry @sveinhov i didn’t move forward with it. I stopped actually. I am stuck with the development work now. After I finish it I will try it again.

laggleton commented 4 years ago

Found the issue - it doesn't work with the default Linux version https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-specific.html#command-options-nodejs

Solution: When you create the application and choose the Platform as 'Node.js' you then need to select the Platform branch as 'Node.js running on 64bit Amazon Linux' - don't choose any of the 'Linux 2' options. Then it should be deployable.

eavestn commented 4 years ago

-First of all, I think you guys should download this link: https://github.com/aws-samples/eb-node-express-signup -Then unzip the file. -Then enter the file and zip all elements inside the file(Dont zip the entire folder(root), you should only zip the files inside it ) -Then deploy it

Don't do this. That repo is seven years old.

geoseong commented 4 years ago

I have problem related this.

I've changed container:nodejs:staticfiles -> environment:proxy:staticfiles configuration but eb command still return this error

ERROR: ServiceError - Configuration validation exception: Invalid option specification (Namespace: 'aws:elasticbeanstalk:container:nodejs:staticfiles', OptionName: '/static'): Unknown configuration setting.

here are my configurations file.

git

[credential]
    helper = !aws --profile {my-aws-profilename} codecommit credential-helper $@
    UserHttpPath = true

.ebextensions/options.config

option_settings:
  aws:elasticbeanstalk:customoption:
    NewSignupEmail: me@example.com
  aws:elasticbeanstalk:application:environment:
    THEME: "flatly"
    AWS_REGION: '`{"Ref" : "AWS::Region"}`'
    STARTUP_SIGNUP_TABLE: '`{"Ref" : "StartupSignupsTable"}`'
    NEW_SIGNUP_TOPIC: '`{"Ref" : "NewSignupTopic"}`'
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: nginx
  aws:elasticbeanstalk:environment:proxy:staticfiles:
    /static: /static

.elasticbeanstalk/config.yml

branch-defaults:
  master:
    environment: null
    group_suffix: null
global:
  application_name: ebstudy200928
  branch: master
  default_ec2_keyname: eb-study-200928
  default_platform: Node.js 12 running on 64bit Amazon Linux 2
  default_region: ap-northeast-2
  include_git_submodules: true
  instance_profile: null
  platform_name: null
  platform_version: null
  profile: {my-aws-profilename}
  repository: eb-study-200928
  sc: git
  workspace_type: Application

Checking in my ElasticBeanstalk Console, there is only "Application" named ebstudy200928. there's no "Environment" existed.

kuasha commented 3 years ago

Found the issue - it doesn't work with the default Linux version https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-specific.html#command-options-nodejs

Solution: When you create the application and choose the Platform as 'Node.js' you then need to select the Platform branch as 'Node.js running on 64bit Amazon Linux' - don't choose any of the 'Linux 2' options. Then it should be deployable.

This is correct. This is because of the differences between the old Amazon Linux and new Linux 2.

From: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html

Important
Amazon Linux 2 platform versions are fundamentally different than Amazon Linux AMI platform versions (preceding Amazon Linux 2). These different platform generations are incompatible in several ways. If you are migrating to an Amazon Linux 2 platform version, be sure to read the information in Migrating your Elastic Beanstalk Linux application to Amazon Linux 2 ( https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.migration-al.html ) .

Someone from EB team should probably make the changes and push a new branch for the new platform.

ferrbruno commented 3 years ago

Correct option for Linux 2: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html#command-options-general-environmentproxystaticfiles

bitshiftnetau commented 3 years ago

Same issue here, I was able to deploy it the first time. subsequent uploads failed for this reason. Please update your samples and documentation.

fdchiu commented 3 years ago

What you could do is: 1) Go to .ebextensions folder 2) open options.config 3) Remove this line: aws:elasticbeanstalk:environment:proxy:staticfiles: /static: /static

Assuming you have run eb init and eb create command from your local source directory

bitshiftnetau commented 3 years ago

Any official update on this issue?

This configuration is now deprecated on the platform but I can't make the change to Amazon Linux 2 until this is solved.

edwardbc commented 3 years ago

Go to .ebextensions/options.config and just switch the line:

aws:elasticbeanstalk:container:nodejs:staticfiles:

for

aws:elasticbeanstalk:environment:proxy:staticfiles:

as this is now a global value and no longer environment specific. No need to remove it.

Re-zip from the root folder and upload, it should work. Otherwise go to the logs section (not the main Environment screen) to see more details of what you could be doing wrong.

ndougiven3 commented 3 years ago

This error is caused by the namespace aws:elasticbeanstalk:container:nodejs:staticfiles which is defined in .ebextensions/options.config , this namespace format is meant for Amazon Linux 1 . If you are running on Amazon Linux 2 please replace it with aws:elasticbeanstalk:container:nodejs::ProxyFiles . then save and zip the from the root of the source bundle. read more about this namespace here https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-specific.html

pc300000 commented 2 years ago

I switched to (deprecated) Linux and was able to see the website "The next big thing is coming". However, when I entered the name, I got the error message "Well this is embarrassing. It looks like we're having trouble getting you on the list.".

ahmete60 commented 1 year ago

When you create the application and choose the Platform as 'Node.js' you then need to select the Platform branch as 'Node.js running on 64bit Amazon Linux' - don't choose any of the 'Linux 2' options.

Currently there are no other options but Linux 2

syties0803 commented 1 year ago

edwardbc is correct, it works for me.

Go to .ebextensions/options.config and just switch the line:

aws:elasticbeanstalk:container:nodejs:staticfiles:

for

aws:elasticbeanstalk:environment:proxy:staticfiles: