Передаете учетные данные 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 и создать роли для предположения.