我有一个命令可以列出我在我的aws账户中运行的所有RDS端点,但是我想要找到在与我想要使用它的ec2实例相同的VPC中运行的RDS端点。
我有多个VPC和多个RDS,所以当我发出命令时,它会给我所有正在运行的RDS。我如何过滤它才能只显示同一VPC中的RDS?
我运行命令-
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中的一个端点。
谢谢!
厄尼
发布于 2019-04-18 02:32:49
下面是一个可以完成此任务的小脚本,只需将ec2 describe-instances替换为您的rds cli命令:
#!/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
发布于 2019-04-22 22:43:16
describe-db-instances有一组有限的过滤器,其中不包括VPC。我建议的解决方案结合使用来自主机和jq的元数据信息,仅选择与VPC匹配的端点。
首先,您可以按照WarrenG的建议获取私有网络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
https://stackoverflow.com/questions/55732414
复制相似问题