aws-cli无法在一台特定计算机上使用一个特定的S3存储桶

时间:2018-04-16 22:59:10

标签: amazon-s3 aws-cli

我正在尝试删除对象(空桶),然后将新的对象复制到AWS S3存储桶中:

aws s3 rm s3://BUCKET_NAME --region us-east-2 --recursive
aws s3 cp ./ s3://BUCKET_NAME/ --region us-east-2 --recursive

第一个命令失败,出现以下错误:

  

调用ListObjects时发生错误(InvalidRequest)   操作:您正在尝试在区域中的桶上操作   需要签名版本4.您可以明确解决此问题   使用--region参数提供正确的区域位置   AWS_DEFAULT_REGION环境变量,或者是区域变量   AWS CLI配置文件。您可以通过获取水桶的位置   运行“aws s3api get-bucket-location --bucket BUCKET”。完成1   有......文件的部分

嗯,错误提示是不言自明的,但问题是我已经应用了解决方案(我添加了--region参数)并且我完全确定它是正确的区域(我得到的区域与错误消息建议的方式相同。)

现在,为了让事情变得更有趣,错误发生在gitlab CI环境中(让我们说一些服务器)。但就在此错误发生之前,还有其他存储桶可以执行完全相同的命令并且它们可以正常工作。值得一提的是,那些其他桶位于不同的区域。

现在,最重要的是,我可以使用与CI服务器相同的凭据在我的个人计算机上执行命令!总结一下:

server$ aws s3 rm s3://OTHER_BUCKET --region us-west-2 --recursive   <== works
server$ aws s3 rm s3://BUCKET_NAME --region us-east-2 --recursive  <== fails
my_pc$ aws s3 rm s3://BUCKET_NAME --region us-east-2 --recursive  <== works

有没有人有任何指针可能会出现问题?

1 个答案:

答案 0 :(得分:1)

对于可能遇到同样问题的其他人,确保您的aws是最新的 !!!

server$ aws --version
aws-cli/1.10.52 Python/2.7.14 Linux/4.13.9-coreos botocore/1.4.42

my_pc$ aws --version
aws-cli/1.14.58 Python/3.6.5 Linux/4.13.0-38-generic botocore/1.9.11

更新服务器的aws cli工具后,一切正常。现在我的服务器是:

server$ aws --version
aws-cli/1.14.49 Python/2.7.14 Linux/4.13.5-coreos-r2 botocore/1.9.2