Передача учетных данных IAM при использовании Aurora Serverless Data API? - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь выяснить, как передать учетные данные c 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 Ответ

1 голос
/ 15 января 2020

Чтобы выполнить sh, вам потребуется создать новую функцию, которая принимает ключ доступа и секретный ключ, создать клиента для этого пользователя, а затем выполнить вызов.

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

...