我有命令列出我在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
答案 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