Amazon s3 使用aws s3按顺序上载多个文件时出现访问被拒绝错误

Amazon s3 使用aws s3按顺序上载多个文件时出现访问被拒绝错误,amazon-s3,aws-sdk,Amazon S3,Aws Sdk,作为CI构建过程的最后一步,我使用以下shell脚本将单个文件一次上载到S3存储桶: #!/usr/bin/env bash echo "Uploading the file: "$1 aws s3 cp "$1" "s3://BUCKET_NAME/$2$1" --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers exit; 当我使用单个文件调用此脚本(使用命令sh upload.sh'filename''pat

作为CI构建过程的最后一步,我使用以下shell脚本将单个文件一次上载到S3存储桶:

#!/usr/bin/env bash

echo "Uploading the file: "$1
aws s3 cp "$1" "s3://BUCKET_NAME/$2$1" --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
exit;
当我使用单个文件调用此脚本(使用命令
sh upload.sh'filename''path'
)时,它工作正常,但当我快速连续两次调用它时,第二个shell脚本和对
aws
命令行工具的其他调用失败,错误如下:

An error occurred (AccessDenied) when calling the CreateMultipartUpload operation: Access Denied

Parameter validation failed:
Invalid type for parameter UploadId, value: None, type: <type 'NoneType'>, valid types: <type 'basestring'>
调用CreateMultipartUpload操作时发生错误(AccessDenied):访问被拒绝 参数验证失败: 参数UploadId的类型无效,值:无,类型:,有效类型:
请求单独工作,但当一起运行时,后面的请求都会失败,并显示相同的“拒绝访问”错误消息。我假设这是一种竞争条件类型的错误,但是我应该如何避免这个问题呢?

这个问题似乎已经解决了-运行脚本的机器(构建代理)在发出请求时使用了两个不同的连接,这些连接都有自己的外部IP地址(WiFi和有线连接)AWS访问策略只允许其中一个IP,导致上载的随机性和不可预测性。

我在脚本中添加了
--debug
标志,这似乎使上载工作更可靠。有什么原因会产生影响吗?在启用调试时,您是否注意到与问题相关的任何其他信息?