I want to have a one liner for setting properties to AWS Cloudwatch loggroups. I came across the xargs command. But I do not understand what am I doing wrong:
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
As far as I understood {}
takes the first command's output as list and pipes each element to the second command via xargs.
However, I result in this:
An error occurred (InvalidParameterException) when calling the PutRetentionPolicy operation: Member must have length less than or equal to 512
I am assuming that it passed the list to xargs, not just one element of the first command's output.
I am using Windows 10 with git bash
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