我有简单的任务从s3存储桶下载文件,它与Ansible 2.3一起工作正常,当我将ansible从2.3升级到2.4时,它抱怨我需要使用aws_s3模块而不是s3我做了并得到了以下错误:
─➤ansible-playbook -i localhost, playbook.yml 4 ↵
PLAY [all] *******************************************************************************************************************
TASK [Download the latest version of from S3 bucket] *************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "Key /node/qa/1.0.483/node.tar.gz with version id None does not exist."}
PLAY RECAP *******************************************************************************************************************
localhost : ok=0 changed=0 unreachable=0 failed=1
这是我的任务:
- name: Download the latest version of from S3 bucket
aws_s3:
aws_access_key: "xxxxxxxxxxx"
aws_secret_key: "yyyyyyyyyyyyyyyyyyyyyyy"
bucket: "artifacts-bucket"
object: "/node/qa/1.0.483/node.tar.gz"
mode: get
dest: "node.tar.gz"
几点说明: - 我的s3存储桶上未启用版本控制 - 安装了aws_s3模块的boto3 - 完全相同的任务与ansible 2.3一起工作正常并且确实给出了这个错误
"Key /node/qa/1.0.483/node.tar.gz with version id None does not exist."
答案 0 :(得分:0)
由boto3
引起的错误。在将此模块移植到boto3 object: /path/to/object
之前,请参考bucketname/path/to/object
。在2.4中,这变为bucketname//path/to/object
。
省略leading / in对象是一种解决方法。这段代码对我有用:
- name: Download the latest version of from S3 bucket
aws_s3:
aws_access_key: "xxxxxxxxxxx"
aws_secret_key: "yyyyyyyyyyyyyyyyyyyyyyy"
bucket: "artifacts-bucket"
object: "node/qa/1.0.483/node.tar.gz"
mode: get
dest: "node.tar.gz"
希望它能帮助其他人。打开一个关于ansible github repo的bug,希望它能在Ansible 2.4.1中修复