如何检查 AWS S3 同步是否有任何更改?
How can I check if AWS S3 sync has any changes?
我在 Amazon S3 存储桶中有一些文件,我正在使用 SaltStack 将所有这些文件复制到 minion 上的一个目录中。
不幸的是,SaltStack 还不能从 S3 复制整个目录(目前),所以我求助于使用 awscli。它几乎完美地工作。
它可以同步 S3 存储桶和我的目录(万岁!),它甚至有一个 --dryrun
标志(甚至更好!),但不幸的是我想不出办法让它做到 我可以用 Salt 捕获的东西 说没有变化。
我的 Salt 状态如下所示:
copy-my-dir:
file.directory:
- name: /path/to/my/dir
- makedirs: True
cmd.run:
- name: "aws s3 sync s3://my-bucket/ /path/to/my/dir"
- unless: "What goes here?"
我已经尝试 --dry-run
for "what goes here?" 但是 aws s3 sync returns 0 无论是否有文件要同步。
我尝试了 aws --output json s3 sync --dry-run
但这甚至没有做任何有用的事情(即它没有输出 JSON 我可以告诉,至少在 运行通过 salt 'minion' cmd.run "aws..."
.
那么我如何判断我的 Amazon S3 存储桶和我的目录之间是否存在任何差异,以便我可以有条件地执行 SaltStack 状态?
事实证明,出色的 grep
实用程序可以满足我的需要:
- onlyif: "aws s3 sync --dryrun s3://my-bucket /path/to/my/dir" | grep download"
如果有事情要做,awscli 会输出download: <filename>
,但如果目录同步了,就没有输出。
我在 Amazon S3 存储桶中有一些文件,我正在使用 SaltStack 将所有这些文件复制到 minion 上的一个目录中。
不幸的是,SaltStack 还不能从 S3 复制整个目录(目前),所以我求助于使用 awscli。它几乎完美地工作。
它可以同步 S3 存储桶和我的目录(万岁!),它甚至有一个 --dryrun
标志(甚至更好!),但不幸的是我想不出办法让它做到 我可以用 Salt 捕获的东西 说没有变化。
我的 Salt 状态如下所示:
copy-my-dir:
file.directory:
- name: /path/to/my/dir
- makedirs: True
cmd.run:
- name: "aws s3 sync s3://my-bucket/ /path/to/my/dir"
- unless: "What goes here?"
我已经尝试 --dry-run
for "what goes here?" 但是 aws s3 sync returns 0 无论是否有文件要同步。
我尝试了 aws --output json s3 sync --dry-run
但这甚至没有做任何有用的事情(即它没有输出 JSON 我可以告诉,至少在 运行通过 salt 'minion' cmd.run "aws..."
.
那么我如何判断我的 Amazon S3 存储桶和我的目录之间是否存在任何差异,以便我可以有条件地执行 SaltStack 状态?
事实证明,出色的 grep
实用程序可以满足我的需要:
- onlyif: "aws s3 sync --dryrun s3://my-bucket /path/to/my/dir" | grep download"
如果有事情要做,awscli 会输出download: <filename>
,但如果目录同步了,就没有输出。