S3 Доступ запрещен с помощью boto для частного сегмента от имени пользователя root - PullRequest
1 голос
/ 18 января 2020

Я пытаюсь получить доступ к закрытой корзине S3, которую я создал в консоли с помощью boto3. Однако, когда я пытаюсь выполнить какое-либо действие, например, вывести список содержимого корзины, я получаю

boto3.setup_default_session()
s3Client = boto3.client('s3')
blist = s3Client.list_objects(Bucket=f'{bucketName}')['Contents']

ClientError: An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied

Я использую свой профиль по умолчанию (нет необходимости в ролях IAM). В списке контроля доступа в браузере указано, что владелец корзины имеет разрешения на просмотр / чтение / запись. Канонический идентификатор, указанный как владелец корзины, совпадает с каноническим идентификатором, который я получаю, когда я go передаю «Ваши учетные данные безопасности».

Короче говоря, похоже, что разрешения учетной записи в порядке, но бот не войти в систему с нужным профилем. Кроме того, запуск аналогичных команд из командной строки, например,

aws s3api list-buckets

, также приводит к отказу в доступе. У меня нет проблем с выполнением этих команд на работе, где у меня есть рабочий вход и роли IAM. Он просто запускает их в моем личном профиле по умолчанию.

Есть предложения?

1 Ответ

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

Похоже, что ваши учетные данные не были сохранены в файле конфигурации .

. Вы можете запустить эту команду AWS CLI:

aws configure

Это будет затем запросит у вас ключ доступа и секретный ключ, затем сохранит их в файле ~.aws/credentials. Этот файл автоматически используется AWS CLI и boto3.

Хорошая идея - сначала убедиться, что он работает через AWS CLI, затем вы будете знать, что он должен работать и для boto3.

Я настоятельно рекомендую вам создать учетные данные IAM и использовать их вместо root учетные данные . Это довольно опасно, если учетные данные root скомпрометированы. Рекомендуется создать пользователя IAM для определенных c приложений, а затем ограничить разрешения, предоставляемые этому приложению. Это позволяет избежать ситуаций, когда ошибка программирования (или компрометация безопасности) может привести к нежелательному поведению (например, использование ресурсов или удаление данных).

...