Ruby on Rails deployment on Amazon ElasticBeanstalk:Signature Expired Error - ruby-on-rails

This is the first time I am deploying my application to Amazon EC2 using Beanstalk .
I am following this guide.
Click (http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_Ruby_rails.html)
After filling all the info after eb init.
At the step
Select a solution stack.
It is throwing me the same error everytime
$ SignatureDoesNotMatch. Signature expired: 20141211T092422Z is now earlier than 20141212T091944Z (20141212T092444Z - 5 min.)
I am entering the access key and secret as provided by Amazon security credentials.
How can I deploy my application? Any tutorials/articles where I can find some other way around?

Found the solution,It was happening because of server clock and my local machine time was not synchronized.
It can be done by installing ntp tools on your machine.
Article followed
http://www.cyberciti.biz/faq/howto-install-ntp-to-synchronize-server-clock/

Related

Want to deploy my app to my domain, what to do when after eb deploy is successful?

Pardon me if my question sounds stupid, but I've been cracking my brain on this for quite a while, obviously its my first time deploying and i'm a beginner.
I've followed this tutorial (http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_Ruby_rails.html) to deploy my rails app to elastic beanstalk. Everything is successful, eb deploy is successful, eb open opens my application in the terminal(w3m) too.
BUT what am I suppose to do next? I mean
Am i suppose to do anything with the 'upload and deploy' button on Elastic Beanstalk Console? Currently its at Sample Application.
I've tried aws elasticbeanstalk create-application-version --application-name my-application --version-label v2 --source-bundle S3Bucket=(bucket name),S3Key=(zip file)
but in return I get A client error (InvalidParameterCombination) occurred when calling the CreateApplicationVersion operation: Unable to download from S3 location (Bucket: name of bucket Key: name of zip file). Reason: Moved Permanently
What am I suppose to do at the hosted zones at Route 53? I put type: CNAME and value as the url in elastic beanstalk console, and obviously going to my domain says 'Congratulations Your first AWS Elastic Beanstalk Ruby Application is now running on your own dedicated environment in the AWS Cloud' since 'upload and deploy' is at sample application.
OR is my thought process all wrong? Hope someone can enlighten me and tell me what to do. I just need to deploy my web app to my own domain. Thanks in advance.
I don't know if this is useful, the message after eb deploy:
Creating application version archive "(name of app)".
Uploading (name of app).zip to S3. This may take a while.
Upload Complete.
INFO: Environment update is starting.
INFO: Deploying new version to instance(s).
INFO: Environment health has transitioned from Ok to Info. Command is executing on all instances.
INFO: New application version was deployed to running EC2 instances.
INFO: Environment update completed successfully.
Okay, I feel dumb.
I just have to type eb status --verbose into the terminal, copy and paste the CNAME given into Route 53 hosted zone.

Invalid AMI option for Elastic Beanstalk

I am trying to setup a Rails server on AWS using Elastic Beanstalk. I am following the guide here. I managed to configure the EB CLI, and I am at the part where I am trying to deploy the app to an EB environment. However, I am getting an error that the AMI option I provided is inval
[rails-beanstalk$] eb create first-beanstalk-env -sr aws-beanstalk-service-role
WARNING: You have uncommitted changes.
Creating application version archive "app-8bc6-160112_090122".
Uploading rails-beanstalk/app-8bc6-160112_090122.zip to S3. This may take a while.
Upload Complete.
ERROR: Configuration validation exception: Invalid option value: 'ami- 48eb8128' (Namespace: 'aws:autoscaling:launchconfiguration', OptionName: 'ImageId'): No EC2 ImageId found with id: 'ami-48eb8128'
I don't remember ever setting an AMI (or what that even is), so I am very confused as to why I'm getting this error.
Not sure what's up with that error, but I find the EB CLI quite fragile. Try to take a different approach and create the environment via the aws web console and not via the cli.
Once this is ready, use eb init to setup beanstalk for your local project and then eb deploy <env-name> to push your project to the newly created env.
If the error persists, try to change the deployment zone. AWS sometimes have local bugs in some regions.
EDIT: this seems to be an issue with AWS. I tried it myself and it fails with the default setup in all aws zones.
EDIT 2: this is now confirmed with amazon:
Unfortunately we are experiencing an issue on our side related to
Beanstalk and the default Ruby AMI in different regions. We are
already investigating the issue and we plan to fix this as soon as
possible. I will update you through this support case once we will get
any update from the Elastic Beasntalk service team.
'ami- 48eb8128'
This has a space in it and is not a valid AMI ID

rhc setup failure - msg "OpenShift server is not responding correctly"

Yesterday Aug 19 2014, I created a new scalable rails 4 application. Attempting to connect with rhc setup wizard tells me there is an error. Here is the output with sensitive data replaced respectively:
Using [myaccount] to login to myapp-mydomain.rhcloud.com
The OpenShift server is not responding correctly. Check that 'https://myapp-mydomain.rhcloud.com/broker/rest/api' is the correct URL for your server. The server may be offline or misconfigured.
Examining the app through openshift site, everything appears to be setup correctly. I compared it to another app which I do have running and other than the scalable feature, all settings seem to be OK.
I did see a message from OpenShift a few days ago that they were having some trouble, I am wondering if this is still the case and my app did not create correctly?
When you run rhc setup you shouldn't change the value of the server.
Use the default server hostname openshift.redhat.com
Use this command to use different account rhc setup --clean.

Deploying Rails App to AWS Elastic Beanstalk, time out

I have an existing app that runs fine on localhost. I tried to deploy it to AWS Elastic Beanstalk today via the step-by-step instructions on this page
After using git aws.push to deploy it onto AWS, I wait for the status of the environment to go to green, and try to access the url it gives me. I get a timeout error after a long while of waiting.
I know this is really not much to go off of, but I'm equally stumped. Is there some kind of server side error log or console log (similar to what I see when I 'rails s' on my computer) so I can see what the AWS environment is writing out? I'm not even sure where to start debugging here.
Your first step is to snapshot your logs from the logs tab of your elastic beanstalk's environment you deployed to. This will give you a snapshot of the recent log activity. If you do need to ssh into the EC2 instance that backs your Elastic Beanstalk instance, it's not immediately evident how to do that. You first need to generate a key pair and download it something like my-key.pem. Then associate that key with the Elastic beanstalk application by editing the configuration and on the first tab, add my-key (note it's just the name, not the actual key). To ssh into your EC2 instance you use ssh -i /path/to/my-key.pem ec2-user#
You get the ec2 public url from the ec2 console. Hope all this helps.
First you'll need to ssh into your server
https://stackoverflow.com/a/4921866/274695
Then, you can look your application logs (passenger.log, production.log) at /var/app/support/logs/

Is it possible to connect single Heroku-RedisToGo from 2 different Heroku instances?

I have one Rails instance and another Node.js instance. The plan is to publish information from the Rails project using Redis's pubsub and subscribe by the Node.js program. The node.js program will publish the information to other clients through web sockets (or long polls).
The whole thing is working perfectly while deployed in combination of remote linux machines. On Heroku, Redis To Go is added as an add-on with the Rails instance. Redis can be connected and working fine from this instance.
But I am not getting how to reach to this Redis add-on from the Node.js instance. I've added REDISTOGO_URL from the environment of Rails instance to the environment of Node.js, but it's not working. Sample errors I'm getting (from logs and REPL) are
redis.set("a","b");
==> Error: Connection in pub/sub mode, only pub/sub commands may be used
redis.psubscribe('*');
==> false
Can somebody please show me a way how to accomplish this?
Yes, all you have to do is set the heroku config value similar to:
'heroku config:add REDISTOGO_URL=[your redis togo url]'
Heroku will then add your config var and restart your app.
You can check to make sure it's added correctly by doing a 'heroku config' on both repositories and comparing them.

Resources