Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 aws cli无法在特定机器上使用特定S3存储桶_Amazon S3_Aws Cli - Fatal编程技术网

Amazon s3 aws cli无法在特定机器上使用特定S3存储桶

Amazon s3 aws cli无法在特定机器上使用特定S3存储桶,amazon-s3,aws-cli,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 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_默认_区域环境变量,或 AWS CLI配置文件。您可以通过以下方式获取铲斗的位置: 运行“aws s3api获取桶位置——桶”。完成1 与…分开。。。剩余文件

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

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

现在,最重要的是,我可以在我的个人计算机上使用与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

server$aws s3 rm s3://OTHER_BUCKET--region us-west-2--recursive对于可能面临相同问题的任何其他人,请确保您的
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