我正在测试通常部署在Azure VM中的AWS Linux VM上的Web应用程序。 (java)应用程序访问AWS s3以获取某些存储功能,并列出AWS s3存储桶中的对象。 在Azure VM中运行应用程序列表为空。
怀疑连接问题,我在Azure VM上安装了AWS CLI,配置了密钥并运行了:
$ aws s3 ls
这导致了
Could not connect to the endpoint URL: "https://s3.us-east.amazonaws.com/"
确认我的怀疑。
检查应用程序堆栈跟踪基本上是应用程序" listObjects"请求显示
Request: http://azuredev.gpo.epacube.com/dps/job/listprojects raised com.amazonaws.services.s3.model.AmazonS3Exception: AWS authentication requires a valid Date or x-amz-date header (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: A2494E7A540B5B20), S3 Extended Request ID: 6+Nv1AtCTe0xz3i7Ra5lrmdEdxiIfXgxYapY9KbomblhYL4Q85L3iTLchpQcwRnixyE5El0WKwM=
com.amazonaws.services.s3.model.AmazonS3Exception: AWS authentication requires a valid Date or x-amz-date header (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: A2494E7A540B5B20), S3 Extended Request ID: 6+Nv1AtCTe0xz3i7Ra5lrmdEdxiIfXgxYapY9KbomblhYL4Q85L3iTLchpQcwRnixyE5El0WKwM=
从AWS上的CENTOS运行时,完全相同的代码可以正常工作,但是当在Azure上的Ubuntu 13.04上运行时,它会失败。
为什么我会收到无效日期错误? 如何修改Azure VM设置以使AWS s3连接成功?
答案 0 :(得分:1)
您所在地区的错误。
https://s3.us-east.amazonaws.com/
不是有效的端点。您可能将区域us-east
配置为us-east-1
。
我可以通过指定错误的端点来重现该问题:
这有效:
$ aws s3 ls --region us-east-1
这不起作用:
$ aws s3 ls --region us-east
Could not connect to the endpoint URL: "https://s3.us-east.amazonaws.com/"
有关端点的完整列表,请参阅:Regions and Endpoints
答案 1 :(得分:0)
原来这是JDK8和joda-time上的旧版aws-sdk-java依赖的混合。将joda-time依赖项升级到版本2.8.1修复了此问题。
找到here