【问题标题】:Combining AWS cli commands with xargs not working将 AWS cli 命令与 xargs 结合使用不起作用
【发布时间】:2021-04-28 15:16:51
【问题描述】:

我想要一个用于将属性设置为 AWS Cloudwatch 日志组的衬垫。我遇到了 xargs 命令。但我不明白我做错了什么:

aws logs describe-log-groups \
--query "logGroups[*].logGroupName" \
--output text \ 
| xargs -I {} -n 1 \
 aws logs put-retention-policy \
--log-group-name {} \
--retention-in-days 14

据我了解,{} 将第一个命令的输出作为列表,并通过 xargs 将每个元素传递给第二个命令。

但是,我的结果是这样的:

An error occurred (InvalidParameterException) when calling the PutRetentionPolicy operation: Member must have length less than or equal to 512

我假设它将列表传递给 xargs,而不仅仅是第一个命令输出的一个元素。


我正在使用带有 git bash 的 Windows 10

【问题讨论】:

  • 删除“\”后的空格。
  • 具体在哪里?为什么?
  • Ctrl+a 并查看您的代码。有了这个空间bash 将你的代码分成两部分。

标签: amazon-web-services windows-10 aws-cli git-bash xargs


【解决方案1】:
aws logs describe-log-groups | \
 jq ".logGroups[].logGroupName" \
 |xargs -I {} -n 1  aws logs put-retention-policy \
  --log-group-name {} --retention-in-days 14
aws logs describe-log-groups \
--query "logGroups[].logGroupName" \
--output text \
| xargs -I {} -n 1 \
 aws logs put-retention-policy \
--log-group-name {} \
--retention-in-days 14

OS : Mac OSX

【讨论】:

  • 我不明白为什么要使用-p。这与我的问题无关。
  • @WorkoutBuddy 与我共享的两个命令?您使用的是哪个操作系统?只是询问xargs 是否因操作系统而异。
  • 是的,我在问题中添加了我的操作系统。
  • 你的第一个命令结束于:' at 'logGroupName' failed to meet constraint: Member must meet regular expression pattern: [\.\-_/#A-Za-z0-9]+ted : 值'C:/Users/i016249/AppData/Local/Programs/Git/aws-glue/crawlers
  • @WorkoutBuddy 我看到您正在使用您刚刚在问题中更新的windows,这就是失败的原因,我不确定windows 使用哪个实现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-17
  • 2020-10-01
  • 2021-12-31
相关资源
最近更新 更多