Arhn - архитектура программирования

AWS: Boto3 Enable S3 Versioning / Lifecycle - Доступ запрещен

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

Я выполнил настройку aws, и у меня есть два профиля, оба текущие, активные профили пользователей со всеми необходимыми разрешениями. Тот, который я хочу использовать, называется «по умолчанию».

import boto3


# Create session
s3 = boto3.resource('s3')

# Bucket list
buckets = ['BUCKET-NAME']

# iterate through list of buckets
for bucket in buckets:
    # Enable Versioning
    bucketVersioning = s3.BucketVersioning('bucket')
    bucketVersioning.enable()

    # Current lifecycle configuration
    lifecycleConfig = s3.BucketLifecycle(bucket)
    lifecycleConfig.add_rule={
        'Rules': [
            {
                'Status': 'Enabled',
                'NoncurrentVersionTransition': {
                    'NoncurrentDays': 7,
                    'StorageClass': 'GLACIER'
                },
                'NoncurrentVersionExpiration': {
                    'NoncurrentDays': 30
                }
            }
        ]
    }


    # Configure Lifecycle
    bucket.configure_lifecycle(lifecycleConfig)


print "Versioning and lifecycle have been enabled for buckets."

Когда я запускаю это, я получаю следующую ошибку:

Traceback (most recent call last):
  File "putVersioning.py", line 27, in <module>
    bucketVersioning.enable()
  File "/usr/local/lib/python2.7/dist-packages/boto3/resources/factory.py", line 520, in do_action
    response = action(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/boto3/resources/action.py", line 83, in __call__
    response = getattr(parent.meta.client, operation_name)(**params)
  File "/home/user/.local/lib/python2.7/site-packages/botocore/client.py", line 253, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/home/user/.local/lib/python2.7/site-packages/botocore/client.py", line 557, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the PutBucketVersioning operation: Access Denied

Мои профили имеют полные привилегии, так что это не должно быть проблемой. Что еще мне нужно сделать для передачи учетных данных? Спасибо всем!


  • Вы имеете в виду роль или пользователя, когда пишете профиль? Какие привилегии есть по умолчанию? Если это роль, подтвердили ли вы, что работаете на машине? Если это пользователь, подтвердили ли вы, что ваши AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY действительны и активны? 23.05.2017
  • Извините, я не уточнил. Мой профиль - это мой профиль пользователя. Действует и активно, все могу через aws cli. 23.05.2017
  • Это ваш настоящий код? Вы хотели использовать корзину с именем 'bucket'? 23.05.2017
  • Это мой код без этого. Я изменил название ведра. 23.05.2017

Ответы:


1

Чтобы установить состояние управления версиями, вы должны быть владельцем сегмента.

Приведенный выше оператор означает: чтобы использовать операцию PutBucketVersioning для включения управления версиями, вы должны быть владельцем корзины.

Используйте команду ниже, чтобы проверить владельца ведра. Если вы являетесь владельцем сегмента, у вас должна быть возможность установить состояние управления версиями как ВКЛЮЧЕНО / ПРИОСТАНОВЛЕНО.

aws s3api get-bucket-acl --bucket yourBucketName
23.05.2017

2

Хорошо, notionquest верен; однако, похоже, я тоже ошибся в своем коде, цитируя переменную:

bucketVersioning = s3.BucketVersioning('bucket')

должно быть

bucketVersioning = s3.BucketVersioning(bucket)
23.05.2017
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..