Проверьте учетные данные AWS с помощью boto3 - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь написать код Python, который использует несколько различных ключей AWS, некоторые из которых, возможно, истекли.Мне нужно, учитывая пару ключей AWS в виде строк, проверить, является ли данная пара ключей действительной с помощью boto3.Я бы предпочел не делать ничего, например использовать os.system для запуска

echo "$aws_key_id
$aws_secret_key\n\n" | aws configure

и затем читать ответ aws list-buckets.

Ответ должен выглядеть примерно так:

def check_aws_validity(key_id, secret):
    pass

где key_id и secret - строки.

Обратите внимание, что это не повторение Проверка учетных данных S3 без GET или PUT с использованием boto3 , как Iнет ключей в файле boto3.profile.

Заранее спасибо!

РЕДАКТИРОВАТЬ Из ответа Джона Ротенштейна я получил следующую функцию для работы.

def check_aws_validity(key_id, secret):
    try:
        client = boto3.client('s3', aws_access_key_id=key_id, aws_secret_access_key=secret)
        response = client.list_buckets()
        return true

    except Exception as e:
        if str(e)!="An error occurred (InvalidAccessKeyId) when calling the ListBuckets operation: The AWS Access Key Id you provided does not exist in our records.":
            return true
        return false

1 Ответ

0 голосов
/ 30 ноября 2018

Вы можете сделать вызов, напрямую указав учетные данные:

import boto3

client = boto3.client('s3', aws_access_key_id='xxx', aws_secret_access_key='xxx')
response = client.list_buckets()

Затем вы можете использовать ответ, чтобы определить, действительны ли учетные данные.

Однако, возможно, что пользовательимеет действительные учетные данные, но не имеет разрешения для вызова list_buckets().Это может затруднить определение наличия у них действительных учетных данных.Вам нужно будет попробовать различные комбинации, чтобы увидеть, какой ответ отправляется обратно на ваш код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...