Как взять на себя роль и подключиться к postgres RDS на AWS

У нас есть сгенерированный SAM SAM-Gateway - стек интеграции 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 и передачи role ARN в качестве переменной среды в нашу лямбда-функцию мы не сможем выяснить, как настроить SDK для выполнения той же роли, что и для выполнения лямбда-функции.

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

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

0 ответов

Другие вопросы по тегам