У нас есть 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 для выполнения той же роли, что и для выполнения лямбда-функции.
Если кто-нибудь сможет помочь мне в этом, я был бы очень признателен!
Заранее спасибо