Как получить конечную точку RDS для конкретного VPC с помощью интерфейса командной строки AWS - PullRequest
2 голосов
/ 17 апреля 2019

У меня есть команда, чтобы перечислить все конечные точки RDS, которые я запускаю в своей учетной записи aws, но я хочу найти конечную точку RDS для RDS, работающую в том же VPC, что и экземпляр ec2, с которого я хочу ее использовать.

У меня есть несколько 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"

Мне нужна только одна конечная точка, которая находится в том же VPC, что и экземпляр, от которого я запускаю команду CLI.

Спасибо!

Эрни

Ответы [ 2 ]

2 голосов
/ 17 апреля 2019

Вот небольшой сценарий, который должен помочь, просто замените 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

1 голос
/ 22 апреля 2019

describe-db-instances имеет ограниченный набор фильтров, который не включает VPC. Предлагаемое мной решение использует комбинацию метаданных с хоста и jq для выбора только конечных точек, соответствующих VPC.

Во-первых, вы можете получить идентификатор VPC в соответствии с рекомендациями WarrenG.

#!/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 в сочетании с 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

Передача переменной bash в jq select

...