我是AWS CLI的新手,我正在尝试为我的项目的AWS RDS实例构建一个包含其标签的CSV服务器目录。
我已经成功地使用了EC2实例:
aws ec2 describe-isntances
--query 'Reservations[*].Instances[*].[PrivateIpAddress, InstanceType, [Tags[?Key=='Name'.Value] [0][0], [Tags[?Key=='ENV'.Value] [0][0] ]'
--output text | sed -E 's/s+/,/g' >> ec2list.csv
上面的命令为我提供了一个CSV,其中包含Ip地址、实例类型以及列出的标记的值。
然而,我目前正试图在RDS实例上这样做,但没有成功:
aws rds describe-db-isntances
--query 'DBInstances[*].[DBInstanceIdentifier, DBInstanceArn, [Tags[?Key=='Component'.Value] [0][0], [Tags[?Key=='Engine'.Value] [0][0] ]'
--output text | sed -E 's/s+/,/g' >> rdslist.csv
RDS命令只返回实例编号和标识符,但是标记值显示为none,即使它们确实有值。
需要对我的RDS查询进行哪些修改以显示标记值/这是否可能?由于
可能还需要一个命令https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//API_ListTagsForResource.html.
你可以像下面的例子一样用shell脚本包装这两个脚本。
#!/bin/bash
ARNS=$(aws rds describe-db-instances --query "DBInstances[].DBInstanceArn" --output text)
for line in $ARNS; do
TAGS=$(aws rds list-tags-for-resource --resource-name "$line" --query "TagList[]")
echo $line $TAGS
done
意识到标签可以在我原来的查询中显示。它不像EC2实例那样使用标签,而是使用TagList。例如,
aws rds describe-db-isntances
--query 'DBInstances[*].[DBInstanceIdentifier, DBInstanceArn, [TagList[?Key=='Component'.Value] [0][0], [TagList[?Key=='Engine'.Value] [0][0] ]'
--output text | sed -E 's/s+/,/g' >> rdslist.csv