使用Ansible 2.4的aws_s3模块版本ID错误

时间:2017-09-19 17:51:30

标签: amazon-web-services amazon-s3 ansible ansible-2.x

我有简单的任务从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."

1 个答案:

答案 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中修复