Как получить конечную точку RDS для использования в пользовательских данных - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь заставить конечную точку RDS использовать в пользовательских данных с cli, но не могу понять это.Мне нужно, чтобы конечная точка RDS вставляла в файл php, но когда я пытаюсь выполнить следующее, я получаю:

Unable to locate credentials. You can configure credentials by running "aws configure".

Я собираю ec2 и vpc с помощью CLI, и мне нужно получить конечную точку RDS какчасть пользовательских данных.

Я попробовал следующее на самом экземпляре EC2, и я получил вышеупомянутую ошибку.

aws rds --region ca-central-1 describe-db-instances --query "DBInstances[*].Endpoint.Address"

Даже если я могу решить эту проблему, мне нужно уметьчтобы получить конечную точку для передачи как часть пользовательских данных.Это вообще возможно?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

у меня это работает с этим -

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 rds describe-db-instances --region us-east-2 | jq -r --arg VPC_ID "VPC_ID" '.DBInstances[] |select (.DBSubnetGroup.VpcId=="'$VPC_ID'") | .Endpoint.Address'
0 голосов
/ 07 мая 2018

Ошибка Unable to locate credentials говорит о том, что Интерфейс командной строки AWS (CLI) не имеет учетных данных для вызова API-интерфейсов AWS.

Вы должны назначить роль экземпляру EC2 с достаточным разрешением для вызова describe-db-instances в RDS. См .: Роли IAM для Amazon EC2

Тогда ваши данные пользователя могут включать что-то вроде:

#!
RDS=`aws rds --region ca-central-1 describe-db-instances --query "DBInstances[*].Endpoint.Address"`
echo >file $RDS

Или передать его в качестве параметра:

php $RDS
...