仅当存储桶存在时才从AWS S3 Bucket复制文件

时间:2017-07-26 07:39:52

标签: amazon-web-services amazon-s3 aws-cli

我正在尝试通过AWS CLI创建一个命令,该命令将检查提供的存储桶是否存在以及存储桶中是否存在文件,然后在本地计算机中复制这些文件。

所以我的要求是:有一个s3桶'ecs-ref-arch',这个桶包含一个名为'jars'的文件夹。因此,如果存在/ ecs-ref-arch / jars并且此目录中有文件,那么我只想将所有文件从jars目录复制到本地计算机。

这可以在单个AWS CLI命令中完成吗?

1 个答案:

答案 0 :(得分:1)

  

这可以在单个AWS CLI命令中完成吗?

首先,这听起来很像“为我做的工作”,你没有展示过很多研究,虽然你可能已经搜索过,但不清楚你在哪里挣扎。

单一命令上我不确定,我是xargs的粉丝等等,但我认为你需要至少2个命令。 AWS提供了一些检查存储桶存在的方法(aws s3api head-bucket --bucket <bucket_name>),但搜索文件夹不方便

所以最好是在脚本中检查并从那里运行所有命令,这样的脚本可以写成

#!/bin/bash

CMD="aws s3 ls s3://<bucket-name>"

if eval "$CMD" | grep -q 'PRE jars/'; then
  # jars folder is found, can copy files locally
  aws s3 sync s3://<bucket-name>/jars .
fi