首页 > 解决方案 > 无法使用 ansible s3_sync 模块同步两个 S3 存储桶

问题描述

我有什么:两个名为“s3_sync-ansible-test-1”和“s3_sync-ansible-test-2”的 S3 存储桶。

桶结构:

s3_sync-ansible-test-1
|-folder_1
  |-file_1.txt
  |-file_2.txt
|-folder_2
  |-file_2.txt

s3_sync-ansible-test-2桶是空的。

我想要做什么:s3_sync-ansible-test-1在和之间同步所有内容s3_sync-ansible-test-2

我尝试了什么:

    - name: "Sync S3 buckets"
      register: sync_s3
      s3_sync:
        bucket: s3_sync-ansible-test-2
        file_root: /s3_sync-ansible-test-1

    - debug:
        msg: "{{ sync_s3 }}"

调试输出是

    "msg": {
        "changed": false, 
        "failed": false, 
        "filelist_actionable": [], 
        "filelist_initial": [], 
        "filelist_local_etag": [], 
        "filelist_s3": [], 
        "filelist_typed": [], 
        "uploads": []
    }

同时,手动命令

aws s3 sync s3://s3_sync-ansible-test-1 s3://s3_sync-ansible-test-2

按预期工作。

我也试过改成file_root没有s3://s3_sync-ansible-test-2成功。

有什么问题?

标签: ansible

解决方案


正如 s3_sync 的文档所述:

file_root: / required File/directory path for synchronization.This is a local path. This root path is scrubbed from the key name, so subdirectories will remain as keys

file_root本地路径。这意味着它不能是 s3 存储桶。

如果你真的想使用这个模块,你可以使用s3fs mount s3 bucket 到你的实例,然后使用 ansible s3_sync 来同步它。


推荐阅读