首页 > 解决方案 > 如何使用 AWS CLI 获取特定 VPC 的 RDS 终端节点

问题描述

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

我有多个 VPC 和多个 RDS,所以当我发出命令时,它会给我所有正在运行的 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 中的端点。

谢谢!

厄尼

标签: aws-cli

解决方案


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 CLIjq来获得所需的输出。

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

将bash变量传递给jq select


推荐阅读