我在自定义VPC中运行了两个EC2实例,其中一个运行Ubuntu 16.04,另一个运行Amazon Linux 2017.03。我还分配了一个IAM角色,允许对所有S3存储桶进行读写访问。
但是,当我尝试运行copy命令时,要将文件从实例复制到S3存储桶,它在Ubuntu服务器上失败。我在两台服务器上运行的命令是:
aws s3 cp /myfolder/myfile.txt s3://mybucket/backups/
它在Ubuntu上出现以下错误:
upload failed: ../../myfolder/myfile.txt to s3://mybucket/backups/myfile.txt seek() takes 2 positional arguments but 3 were given
其他所有工作,例如,通过copy命令将文件从存储桶下载到服务器。 VPC设置中既没有问题,也没有IAM角色和安全组,因为这同样适用于运行Amazon Linux的其他服务器。
PS:使用--dryrun开关运行copy命令不会在Ubuntu服务器上出错。
答案 0 :(得分:5)
很可能是python版本和aws cli版本不匹配问题。发布aws cli版本和python版本
python -V
aws --version
仅使用pip安装awscli,以便获得正确的python版本。
pip install awscli
参考:github.com/aws/aws-cli/issues/2403
答案 1 :(得分:0)
我有同样的问题。问题是我使用Ubuntu软件包管理器来安装aws软件包。我们应该使用此命令来安装aws命令。
pip3 install awscli --upgrade --user
有关更多信息: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html#install-tool-pip