【问题标题】:Deleting S3 files using AWS data pipeline使用 AWS 数据管道删除 S3 文件
【发布时间】:2017-03-28 04:02:20
【问题描述】:

我想使用 AWS 数据管道删除所有以某个前缀开头的 S3 密钥。 我为此使用 AWS Shell Activity。

这些是论据

  "scriptUri": "https://s3.amazonaws.com/my_s3_bucket/hive/removeExitingS3.sh",
  "scriptArgument": "s3://my_s3_bucket/output/2017-03-19",

我想删除输出文件夹中以 2017-03-19 开头的所有 S3 密钥。执行此操作的命令应该是什么?

我在.sh文件中试过这个命令

  sudo yum -y upgrade aws-cli 
  aws s3 rm $1 --recursive

这不起作用。

示例文件是

s3://my_s3_bucket/output/2017-03-19/1.txt
s3://my_s3_bucket/output/2017-03-19/2.txt
s3://my_s3_bucket/output/2017-03-19_3.txt

编辑:

日期 (2017-03-19) 是动态的,这是 #{format(@scheduledStartTime,"YYYY-MM-dd")} 的输出。这么有效

 "scriptArgument": "s3://my_s3_bucket/output/{format(@scheduledStartTime,"YYYY-MM-dd")}"

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    试试

    aws s3 rm $1 --recursive --exclude "*" --include "2017-03-19*" --include "2017-03-19/*"
    

    "scriptArgument": "s3://my_s3_bucket/output/"
    

    编辑: 由于日期是动态参数,因此将其作为第二个 scriptArgument 传递给 Shell 命令活动,

    aws s3 rm $1 --recursive --exclude "*" --include "$2*" --include "$2/*"
    

    【讨论】:

    • 日期是动态的,等于#{format(@scheduledStartTime,"YYYY-MM-dd")}
    • 将其作为附加的scriptArgument 传递,并在脚本中将其引用为$2
    • 所以,它会变成 aws s3 rm $1 --recursive --exclude "" --include "$2" 或 aws s3 rm $1 --recursive --exclude " " --include $2
    • aws s3 rm $1 --recursive --exclude "*" --include "$2*"
    • 抱歉,没有注意到里面的/。试试aws s3 rm $1 --recursive --exclude "*" --include "$2*" --include "$2/*"。如果key中有/,必须单独处理。
    猜你喜欢
    • 1970-01-01
    • 2022-10-31
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    • 2018-12-20
    • 2019-07-28
    • 1970-01-01
    相关资源
    最近更新 更多