travis-ci / artifacts

Travis CI Artifacts Uploader
MIT License
87 stars 24 forks source link

Signature v4-only S3 regions are not supported (us-east-2, eu-central-1, etc.) #57

Open peterkir opened 9 years ago

peterkir commented 9 years ago

When a S3 bucket is created in region "eu-central-1" / Frankfurt it is impossible to use artifacts to upload to it.

Jell commented 9 years ago

seeing the same issue, getting either:

The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

or

unsupported protocol scheme ""
ldonnet commented 9 years ago

:+1: same problem

ensonic commented 8 years ago

+1 finally use us-west-1 and it worked.

cmouse commented 8 years ago

+1 same problem, tried using eu-central-1.

sjackman commented 8 years ago

The artifacts command line tool works for me with region us-west-2, but Travis CI does not. It appears to ignore the configuration variable addons.s3_region. Works:

ARTIFACTS_REGION=us-west-2 artifacts upload --key=$redacted --secret=$redacted --bucket=foo bar

Travis CI does not work:

err: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

https://travis-ci.org/Linuxbrew/linuxbrew/builds/107042959#L4267 My .travis.yml includes:

addons:
  artifacts:
    debug: true
  s3_region: "us-west-2"
sjackman commented 8 years ago

A workaround for Travis CI is to set the environment variable ARTIFACTS_REGION rather than the .travis.yml variable addons.s3_region.

sjackman commented 8 years ago

Just a long shot question, should the .travis.yml variable perhaps be addons.artifacts.s3_region rather than addons.s3_region as the documentation indicates?

dacoinminster commented 8 years ago

I had the same problem, and can confirm that official travis documentation is INCORRECT on this page:

https://docs.travis-ci.com/user/uploading-artifacts/

The first example shows the setting being addons.s3_region, but the setting is actually addons.artifacts.s3_region

My .travis.yml file now has:

- addons:
  - postgresql: '9.3'
  - artifacts:
    - s3_region: "us-west-2" # defaults to "us-east-1"
    - paths:
      - $(ls tmp/capybara/screenshot_* | tr "\n" ":")

Travis: please fix your documentation! Thanks!

brauliobo commented 8 years ago

@dacoinminster could you please create a PR to https://github.com/travis-ci/docs-travis-ci-com?

dacoinminster commented 8 years ago

It looks like somebody already did (https://github.com/travis-ci/docs-travis-ci-com/issues/524)

Deadolus commented 8 years ago

Adding the ARTIFACTS_REGION environment variable did not change anything for me. Once I changed to a Oregon based bucket, everything worked as expected.

I used the exact same setup for both, once using ARTIFACTS_REGION set to eu-central-1 and once to us-west-2 (so not default!). This is the repository I'm talking about: https://github.com/bbvch/street-light-simulator Although not critical for this project, I would of course like travis to support european buckets.

BanzaiMan commented 8 years ago

Hi, everyone,

Sorry for the delay. I pushed an update which I think might fix this issue. Could you try it again?

BanzaiMan commented 8 years ago

Hmmm. It doesn't work just yet. https://travis-ci.org/BanzaiMan/travis_production_test/builds/123420742#L165

ERROR: failed to upload: /home/travis/build/BanzaiMan/travis_production_test/Gemfile
  err: The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.

https://github.com/mitchellh/goamz/issues/166

BanzaiMan commented 8 years ago

I think https://github.com/goamz/goamz/ might be a better bet going forward (it supports SHA256 https://github.com/mitchellh/goamz/search?utf8=%E2%9C%93&q=sha256).

I tried my hand at transitioning to it; some tweaks are necessary to source to compile, but I could not get tests to pass. See https://travis-ci.org/travis-ci/artifacts/builds/123291124#L219-L222. I read sources to figure out why the error is happening, but my understanding of Go was not enough to push me over the edge.

SebastiaanKlippert commented 8 years ago

Too bad this is still an open issue. Is there any news on this? V4 authentication (http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) is required for all new AWS regions, so this will be an issue for all new regions. For a German based company I would expect Frankfurt to be supported :laughing:

I think the only way to go now is the official AWS Go SDK at https://github.com/aws/aws-sdk-go which supports V4 out of the box and is updated regularly. I have used this is other projects as well and our production servers upload loads to eu-central-1 buckets using this package.

If I have time I can also take a look at this if needed. No idea what your current code is like but I don't think it should be too much work to change packages.

jeschkies commented 8 years ago

Same here. It seems it's still not fixed. Works fine with a bucket in Ireland.

Primajin commented 7 years ago

Is there any update on this? I still either get wrong endpoint or use AWS4-HMAC-SHA256 😞

iriberri commented 7 years ago

We've received some similar reports for eu-west-2, eu-east-2 and eu-central regions through support.

BanzaiMan commented 6 years ago

The full list can be seen here: https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

The issue is reliance on an old AWS library, https://github.com/mitchellh/goamz.

magthe commented 6 years ago

Is there any workaround I can use until Travis feels it's a problem that they have support for artifacts: in less than half the AWS S3 regions?

DenysVuika commented 6 years ago

I can't believe this issue is still not resolved since 2015, it's almost 2019 out there!

The deploy works fine with eu-west-2 for instance, but artifacts fail with the same infamous error: WARNING: invalid region, defaulting to [secure].

I would gladly use the deploy only, if there's any way to use it when build fails (i.e. uploading test reports to S3).

Incognito commented 5 years ago

Folks, my team needs this. Can someone at Travis ci please update the aws library?

ehuelsmann commented 5 years ago

Yup. Running into this too. Maybe I just need to install the aws client and do it all myself?

ehuelsmann commented 5 years ago

actually, using pip install awscli --user --upgrade and adding the required aws s3 commands is about 100x faster than using this addon (due to the endless tinkering before finding this bug). Please update documentation to say so.

remal commented 4 years ago

eu-central-1 region still doesn't work. The upload process fails with The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256. message.

Myasuka commented 1 year ago

Can't believe this problem still exist in 2023 after the 1st reporting in 2015 :(

Incognito commented 1 year ago

Hey, if the AWS SDK hasn't been updated in nearly 7 years, is that a security issue at this point?