Передаете учетные данные IAM при использовании API Aurora Serverless Data?
Я пытаюсь понять, как передать статические учетные данные IAM AWS при использовании API данных AWS для взаимодействия с БД Aurora Serverless.
Я использую библиотеку AWS Python Boto и читаю данные из такой таблицы (которая по умолчанию использует учетные данные пользователя IAM по умолчанию, определенного в моем файле ~/.aws/credentials):
rds_client = boto3.client('rds-data')
rds_client.execute_statement(
secretArn=self.db_credentials_secrets_store_arn,
database=self.database_name,
resourceArn=self.db_cluster_arn,
sql='SELECT * FROM TestTable;',
parameters=[])
Это успешно работает.
Но я хочу иметь возможность передавать ключ доступа AWS и секретный ключ в качестве параметров для вызова execute_statement, например:
rds_client.execute_statement(
accessKey='XXX',
secretKey='YYY',
secretArn=self.db_credentials_secrets_store_arn,
database=self.database_name,
resourceArn=self.db_cluster_arn,
sql='SELECT * FROM TestTable;',
parameters=[])
Но это не работает.
Есть идеи, как я могу этого добиться?
Спасибо!
1 ответ
Для этого вам нужно будет создать новую функцию, которая принимает ключ доступа и секретный ключ, создать клиента для этого пользователя, а затем выполнить вызов.
def execute_statement_with_iam_user(accessKey, secretKey):
rds_client = boto3.client(
'rds',
aws_access_key_id=accessKey,
aws_secret_access_key=secretKey
)
rds_client.execute_statement(
secretArn=self.db_credentials_secrets_store_arn,
database=self.database_name,
resourceArn=self.db_cluster_arn,
sql='SELECT * FROM TestTable;',
parameters=[])
execute_statement_with_iam_user(accessKey, secretkey)
К вашему сведению, AWS не рекомендует жестко кодировать ваши учетные данные таким образом. Что вам нужно сделать, так это взять на себя роль временного сеанса. Для этого вам нужно будет заглянуть в клиент sts и создать роли для предположения.