Как взять на себя роль и подключиться к postgres RDS на AWS - PullRequest
0 голосов
/ 09 декабря 2018

У нас есть API-шлюз, сгенерированный SAM - стек интеграции Lambda, которому необходим доступ к базе данных RDS (Postgres).

SAM создает необходимый шаблон CF с настраиваемой ролью и политиками сопутствующих функций для наших функций.: ('AWSLambdaVPCAccessExecutionRole' & 'AmazonRDSReadOnlyAccess')

Мы настроили функции, которые должны подключаться к БД с помощью идентификаторов подсети и группы безопасности БД VPC и пытаются подключиться с использованием аутентификации IAM.

Мы создали учетную запись пользователя PG в целевой БД с предоставлением роли rds_admin согласно: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.DBAccounts.html

Мы не можем подключиться кRDS DB использует AWS SDK для Go .

Похоже, что для этого требуется ARN:

из документов, ссылка здесь: https://docs.aws.amazon.com/sdk-for-go/api/service/rds/rdsutils/

authToken, err := BuildAuthToken(dbEndpoint, awsRegion, dbUser, awsCreds)

// Create the MySQL DNS string for the DB connection
// user:password@protocol(endpoint)/dbname?<params>
connectStr = fmt.Sprintf("%s:%s@tcp(%s)/%s?allowCleartextPasswords=true&tls=rds",
   dbUser, authToken, dbEndpoint, dbName,
)

// Use db to perform SQL operations on database
db, err := sql.Open("mysql", connectStr)

.. за исключением того, что мы использовали бы строку подключения Postgres.

Но без создания шаблона CFN 'long-form' и передачи roleARN в качестве переменной среды нашему lФункция ambda. Мы не можем понять, как настроить SDK для выполнения той же роли, что и для выполнения лямбда-функции.

Если кто-нибудь сможет помочь мне в этом, я был бы очень признателен!

Заранее спасибо

...