2016-01-21 97 views
1

我在Amazon S3存储桶中有一些文件,我正在使用SaltStack将所有这些文件复制到备用目录中。如何检查AWS S3同步是否有任何更改?

不幸的是,SaltStack没有能力从S3复制整个目录,所以我使用了awscli。它几乎完美地工作。

它可以同步S3桶和我的目录(万岁!),它甚至有一个--dryrun标志(甚至更好!),但不幸的是我不能想出一个办法让它做东西,我可以捕获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为但aws s3同步返回0是否有要同步的文件。

我想aws --output json s3 sync --dry-run但是,即使不接近做任何有用的(即不输出的JSON我可以告诉大家,至少不是通过salt 'minion' cmd.run "aws..."运行时。

所以,我怎么能知道还有我的亚马逊S3存储和我的目录之间的差异,所以我可以有条件地执行一个SaltStack状态

回答

1

原来,精彩grep实用程序可以做的正是我需要的:?

- onlyif: "aws s3 sync --dryrun s3://my-bucket /path/to/my/dir" | grep download" 

如果需要做什么,awscli将输出download: <filename>,但是如果目录同步,那么不会有输出。

相关问题