|
I apologize if it wasn't proper etiquette to reopen tickets.
I too am having the exact same problem. AWS credentials work with the On Demand instances, but not with spot. I went ahead and took your advice and build a barebones Jenkins server. Provisioned it with new AWS keys with full access (just for testing). As before I am able to boot On Demand instance no problem, but spots are not working.
Stack Trace:
Oct 21, 2015 1:41:06 AM WARNING hudson.slaves.NodeProvisioner$2 run
Provisioned slave Jenkins Docker AMI - DO NOT USE FOR LIVE (ami-adb2e1c8) failed to launch
com.amazonaws.AmazonServiceException: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details. (Service: AmazonEC2; Status Code: 403; Error Code: SignatureDoesNotMatch; Request ID: 077ee2b7-e33d-419e-99e1-63e020763b3e)
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1160)
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:748)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:467)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:302)
at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.java:11768)
at com.amazonaws.services.ec2.AmazonEC2Client.requestSpotInstances(AmazonEC2Client.java:7027)
at hudson.plugins.ec2.SlaveTemplate.provisionSpot(SlaveTemplate.java:717)
at hudson.plugins.ec2.SlaveTemplate.provision(SlaveTemplate.java:349)
at hudson.plugins.ec2.EC2Cloud$1.call(EC2Cloud.java:398)
at hudson.plugins.ec2.EC2Cloud$1.call(EC2Cloud.java:394)
at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Oct 21, 2015 1:41:06 AM INFO hudson.plugins.ec2.EC2Cloud provision
Excess workload after pending Spot instances: 1
Oct 21, 2015 1:41:08 AM INFO hudson.plugins.ec2.EC2Cloud addProvisionedSlave
Provisioning for AMI ami-adb2e1c8; Estimated number of total slaves: 2; Estimated number of slaves for ami ami-adb2e1c8: 0
Oct 21, 2015 1:41:08 AM INFO hudson.plugins.ec2.SlaveTemplate provisionSpot
Launching ami-adb2e1c8 for template Jenkins Docker AMI - DO NOT USE FOR LIVE
Oct 21, 2015 1:41:08 AM INFO hudson.slaves.NodeProvisioner$StandardStrategyImpl apply
Started provisioning Jenkins Docker AMI - DO NOT USE FOR LIVE (ami-adb2e1c8) from ec2-EC2 with 1 executors. Remaining excess workload: 0
Oct 21, 2015 1:44:56 AM WARNING hudson.slaves.NodeProvisioner$2 run
Provisioned slave Jenkins Docker AMI - DO NOT USE FOR LIVE (ami-adb2e1c8) failed to launch
com.amazonaws.AmazonServiceException: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details. (Service: AmazonEC2; Status Code: 403; Error Code: SignatureDoesNotMatch; Request ID: b342b197-6aa6-4eef-94ad-368ed6c6904a)
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1160)
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:748)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:467)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:302)
at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.java:11768)
at com.amazonaws.services.ec2.AmazonEC2Client.requestSpotInstances(AmazonEC2Client.java:7027)
at hudson.plugins.ec2.SlaveTemplate.provisionSpot(SlaveTemplate.java:717)
at hudson.plugins.ec2.SlaveTemplate.provision(SlaveTemplate.java:349)
at hudson.plugins.ec2.EC2Cloud$1.call(EC2Cloud.java:398)
at hudson.plugins.ec2.EC2Cloud$1.call(EC2Cloud.java:394)
at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Steps To Reproduce:
-
Create AWS user with permissions (I went overboard here to be safe): AmazonEC2FullAccess
-
Provision a new Jenkins Install
-
Install EC2 Plugin
-
Set local executors to 0
-
Add new Cloud as EC2
-
Fill out AWS keys and relevant info
-
Add AMI and select as Spot, One Time bid
-
Create a dummy job and run that job OR Request new Node via node Screen
If I provision via the Node screen will get a timeout after a while. If forcing via a build I just check logs for errors. I'm a bit new to the whole java ecosystem and would be happy to provide better logs or stacktraces with a little info. For now going to try to roll back the AWS SDK prior to 1.10.*.
|