我正在尝试删除对象(空桶),然后将新的对象复制到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
有没有人有任何指针可能会出现问题?
答案 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