Closed kmavrommatis closed 5 years ago
UPDATE Using the previous version of rabix (1.0.4) seems to be working.
What is the value of tes.storage_base
in your config?
Hi, thanks for the quick response
tes.storage_base=s3://s3.us-east-1.com/bucket_name/funnel
(where bucket_name is an existing bucket)
I intent to use rabix + funnel with AWS batch and s3 but regardless of this in this particular case, why would pointing to a local TES url, without any input our output to S3 try to access s3 ?
K
Local inputs are staged to tes.storage_base
since the funnel worker may be on a remote machine. The above error is due to Bunny being unable to find a matching s3 provider config (matches are based on the endpoint an S3 url). Your storage base has s3.us-east-1.com
as the S3 endpoint. It should be s3.us-east-1.amazonaws.com
to match the endpoint in the example S3 config.
Let me know if you have any issues getting everything setup on AWS Batch, I am happy to help if you need it!
Depending on your storage needs on AWS Batch you may be interested in:
https://github.com/adamstruck/ebsmount/tree/master/resources/funnel
This approach comes with its own caveats since there are limits to the number of disks that can be mounted per VM. You need to pick reasonable defaults for resource requests and allowed VM sizes.
Thanks,
I must be missing something:
I modified the line of core.properties
to use the relevant endpoint:
tes.storage_base=s3://s3.us-east-1.amazonaws.com/bucket/funnel
.
(I thought I had previously tried it but apparently not. ). I also tried s3://s3.amazonaws.com/bucket/funnel
as endpoint and https://s3.amazonaws.com
, https://s3.us-east-1.amazonaws.com/
Based on #407 I also tried s3:///bucket/funnel and modified the inputs.json
file to match the location on s3, but got the same error.
FInally, I tried to give the bucket name as is without any 'subdirectory' in it, without any luck
in all cases I run the same command for the dna2protein example
/rabix examples/dna2protein/dna2protein.cwl.json examples/dna2protein/inputs.json --tes-url http://localhost:8000
and I get the error:
[2019-01-15 12:51:48.041] [ERROR] Failed to retrieve TESTask
java.util.concurrent.ExecutionException: com.amazonaws.services.s3.model.AmazonS3Exception: Bad Request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request; Request ID: B84F4EE4D95F2B00; S3 Extended Request ID: T0TJPeXHXbpS+wumAxTab/Co2N+RjTTJiBz04Cl2TMeeK+j1+P2RZDdaur0f0rEqhtVkyW6MKEU=), S3 Extended Request ID: T0TJPeXHXbpS+wumAxTab/Co2N+RjTTJiBz04Cl2TMeeK+j1+P2RZDdaur0f0rEqhtVkyW6MKEU=
at java.util.concurrent.FutureTask.report(FutureTask.java:122) [na:1.8.0_172]
at java.util.concurrent.FutureTask.get(FutureTask.java:192) [na:1.8.0_172]
at org.rabix.backend.tes.service.impl.LocalTESWorkerServiceImpl$1.run(LocalTESWorkerServiceImpl.java:173) ~[rabix-cli.jar:na]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_172]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_172]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_172]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [na:1.8.0_172]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_172]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_172]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_172]
Caused by: com.amazonaws.services.s3.model.AmazonS3Exception: Bad Request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request; Request ID: B84F4EE4D95F2B00; S3 Extended Request ID: T0TJPeXHXbpS+wumAxTab/Co2N+RjTTJiBz04Cl2TMeeK+j1+P2RZDdaur0f0rEqhtVkyW6MKEU=)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1639) ~[rabix-cli.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1304) ~[rabix-cli.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1056) ~[rabix-cli.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743) ~[rabix-cli.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717) ~[rabix-cli.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699) ~[rabix-cli.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667) ~[rabix-cli.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649) ~[rabix-cli.jar:na]
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513) ~[rabix-cli.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4319) ~[rabix-cli.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4266) ~[rabix-cli.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:1261) ~[rabix-cli.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:1236) ~[rabix-cli.jar:na]
at com.upplication.s3fs.util.S3Utils.getS3ObjectSummary(S3Utils.java:37) ~[rabix-cli.jar:na]
at com.upplication.s3fs.S3FileSystemProvider.exists(S3FileSystemProvider.java:612) ~[rabix-cli.jar:na]
at com.upplication.s3fs.S3FileSystemProvider.createDirectory(S3FileSystemProvider.java:366) ~[rabix-cli.jar:na]
at java.nio.file.Files.createDirectory(Files.java:674) ~[na:1.8.0_172]
at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781) ~[na:1.8.0_172]
at java.nio.file.Files.createDirectories(Files.java:727) ~[na:1.8.0_172]
at org.rabix.backend.tes.service.impl.LocalTESWorkerServiceImpl$TaskRunCallable.stageFileRequirements(LocalTESWorkerServiceImpl.java:385) ~[rabix-cli.jar:na]
at org.rabix.backend.tes.service.impl.LocalTESWorkerServiceImpl$TaskRunCallable.call(LocalTESWorkerServiceImpl.java:256) ~[rabix-cli.jar:na]
at org.rabix.backend.tes.service.impl.LocalTESWorkerServiceImpl$TaskRunCallable.call(LocalTESWorkerServiceImpl.java:225) ~[rabix-cli.jar:na]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_172]
... 3 common frames omitted
[2019-01-15 12:51:48.044] [INFO] com.amazonaws.services.s3.model.AmazonS3Exception: Bad Request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request; Request ID: B84F4EE4D95F2B00; S3 Extended Request ID: T0TJPeXHXbpS+wumAxTab/Co2N+RjTTJiBz04Cl2TMeeK+j1+P2RZDdaur0f0rEqhtVkyW6MKEU=), S3 Extended Request ID: T0TJPeXHXbpS+wumAxTab/Co2N+RjTTJiBz04Cl2TMeeK+j1+P2RZDdaur0f0rEqhtVkyW6MKEU=
Did you set a valid access_key
and secret_key
?
I was able to reproduce the above when those values were left as the defaults in the config:
s3.amazon.access_key=***************************
s3.amazon.secret_key=****************************************
Hi, thanks for the response, unfortunately still stuck
I have tried it both ways:
I have set the access key
and secret key
in core.properties
.
and
I also tried to leave those lines with the default values (or commented out them entirely) since aws sdk can take the values from the ~/.aws/credentials
, or set the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables but the result was the same.
Thinking that this may be due to encryption (our buckets require sse AES256) i also experimented with a bucket with no encryption requirements whatsoever, but the output is still the same.
Try commenting out the s3.amazon.signer_override
in your config.
Thanks for the suggestion. That worked !! Could you explain what this actually does? Thanks again for your help
The signer type is what determines what format of authorization header is used. The default should have been AWSS3V4SignerType
, not AWSV4SignerType
. You can read a bit about it here.
This is exposed as an option in the config since some S3 providers don't support version 4 signatures.
Hi, I am trying to execute the example found in the rabix-1.0.5 release
Running it using LOCAL backend works as expected
When using funnel locally installed and I specify the
backend.embedded.types=TES
incore.properties
I get the following error coming from rabix:Rabix version: 1.0.5 Funnel version 0.8.0 Funnel has been tested with cwl-tes and works as expected. Thanks in advance for your help K