Amazon s3 Ansible文件没有';S3不存在,但复制存在

Amazon s3 Ansible文件没有';S3不存在,但复制存在,amazon-s3,ansible-playbook,Amazon S3,Ansible Playbook,我正在尝试将配置文件从ec2实例上的文件夹迁移到s3存储桶。每次部署时,我们都使用ansible更新对这些配置文件的更改,我在使用s3时遇到了一些问题。下面是旧的ansible部分,用于将配置文件更新到ec2 - name: Install config files copy: src="{{core_repo}}/config/{{item.path}}" dest=/opt/company/config owner=user group=user mode=0644 directory_

我正在尝试将配置文件从ec2实例上的文件夹迁移到s3存储桶。每次部署时,我们都使用ansible更新对这些配置文件的更改,我在使用s3时遇到了一些问题。下面是旧的ansible部分,用于将配置文件更新到ec2

- name: Install config files
  copy: src="{{core_repo}}/config/{{item.path}}" dest=/opt/company/config owner=user group=user mode=0644 directory_mode=0755
  with_items: config_files
  tags:
    - deploy
没什么疯狂的,只是复制一堆具有特定权限的文件。Ansible的副本在查找配置文件中描述的文件时没有问题

下面是我的新ansible部分,用于将配置文件更新到s3

- name: Install config files
  s3: bucket=company-config object="/{{item.path}}" src="{{core_repo}}/config/{{item.path}}" mode=put aws_access_key=access aws_secret_key=secret
  with_items: config_files
  tags:
    - deploy
如您所见,我没有改变引用文件本身的方式。但是,我现在收到的每个文件都有一个错误:

failed: [ip] => (item={'path': 'application.properties'}) => {"failed": true, "item": {"path": "application.properties"}}
msg: Local object for PUT does not exist

知道我做错了什么吗?或者有没有关于如何解决此问题的建议?我使用的是ansible playbook 1.9.4。

假设您希望将文件从EC2实例复制到S3,并且文件已使用Install config files任务复制到EC2实例,则文件位于EC2实例上的
/opt/company/config

src
属性应更改为
“/opt/company/config/{{{item.path}”
并按如下方式调用s3模块:

- name: Install config files
  s3: bucket=company-config object="/{{item.path}}" src="/opt/company/config/{{item.path}}" mode=put aws_access_key=access aws_secret_key=secret
  with_items: config_files
  tags:
    - deploy
如果您想将文件直接从Ansible主机复制到S3,那么您可以使用local_操作调用S3模块。各自的任务是:

- name: Install config files
  become: no
  local_action: s3 bucket=company-config object="/{{item.path}}" src="{{core_repo}}/config/{{item.path}}" mode=put aws_access_key=access aws_secret_key=secret
  with_items: config_files
  tags:
    - deploy

您是从Ansible主机还是从EC2实例将文件复制到S3?@PasiH我是从Ansible主机将文件复制到S3。我的目的是后者。在s3命令前面加上本地_操作会引发另一个错误:failed:[ip->127.0.0.1]=>(item={'path':'application.properties'})=>{“failed”:true,“item”:{“path”:“application.properties”},“parsed”:false}[sudo via ansible,key=key]密码:看起来你正在用
sudo
运行剧本。尝试禁用
Install config files
任务中的
sudo
(答案已更新)。