如何使用AWS CLI获取特定VPC的RDS端点

时间:2019-04-17 16:42:15

标签: aws-cli

我有命令列出我在aws帐户中运行的所有RDS终结点,但是我想找到与要从中使用它的ec2实例在同一VPC中运行的RDS的RDS终结点。

我有多个带有多个RDS的VPC,所以当我发出命令时,它会给我所有正在运行的RDS。我该如何过滤以仅显示同一VPC中的一个?

我运行命令-

aws rds --region us-east-2 describe-db-instances --query "DBInstances[*].Endpoint.Address"

我得到-

"acme-networkstack.vbjrxfom0phf.us-east-2.rds.amazonaws.com", "acme-aws-beta-network.vbjrxfom0phf.us-east-2.rds.amazonaws.com", "acme-demo.vbjrxfom0phf.us-east-2.rds.amazonaws.com", "acme-dev.vbjrxfom0phf.us-east-2.rds.amazonaws.com"

我只希望与运行CLI命令的实例位于同一VPC的一个端点。

谢谢!

Ernie

2 个答案:

答案 0 :(得分:2)

这里有个小脚本可以解决这个问题,只需用您的rds cli命令替换ec2 describe-instances

#!/bin/bash
mac=`curl -s http://169.254.169.254/latest/meta-data/mac`
vpcID=`curl -s http://169.254.169.254/latest/meta-data/network/interfaces/macs/$mac/vpc-id`
aws ec2 describe-instances --region eu-west-1 --filter "Name=vpc-id,Values=$vpcID"

您首先要卷曲实例元数据以找到它的VpcId,然后过滤cli命令的输出以限制为某个vpc。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html

答案 1 :(得分:1)

describe-db-instances具有一组有限的过滤器,其中不包括VPC。我建议该解决方案结合使用来自主机和jq的元数据信息,以仅选择与VPC匹配的端点。

首先,您可以按照WarrenG的建议获取VPC ID。

#!/bin/bash
mac=`curl -s http://169.254.169.254/latest/meta-data/mac`
VPC_ID=`curl -s http://169.254.169.254/latest/meta-data/network/interfaces/macs/$mac/vpc-id`

然后将AWS CLI与jq结合使用以得出所需的输出。

aws rds describe-db-instances | jq -r --arg VPC_ID "VPC_ID" '.DBInstances[] |select (.DBSubnetGroup.VpcId==$VPC_ID) | .Endpoint.Address'

我还没有从脚本运行它,但是它可以从命令行运行。如果在脚本中不起作用,请告诉我。

参考

https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html

Passing bash variable to jq select