Устранение ошибки «Доступ запрещен» в AWS S3 с помощью Boto3

При работе с AWS S3 (Simple Storage Service) с использованием Boto3 вы можете столкнуться с ошибкой «AccessDenied» при попытке вызвать API PutObject. Эта ошибка обычно означает, что используемый вами пользователь или роль IAM не имеет необходимых разрешений для выполнения желаемого действия. В этой статье блога мы рассмотрим несколько способов устранения и устранения этой ошибки, а также приведем примеры кода.

  1. Проверьте разрешения IAM.
    Первый шаг — убедиться, что используемый вами пользователь или роль IAM имеет соответствующие разрешения для выполнения операции PutObject. Убедитесь, что у пользователя есть необходимые разрешения S3 в политике IAM, прикрепленной к его роли. Вот пример политики IAM, предоставляющей необходимые разрешения:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::your-bucket-name/*"
        }
    ]
}
  1. Проверьте учетные данные AWS.
    Дважды проверьте ключ доступа AWS и секретный ключ доступа, используемые Boto3. Убедитесь, что учетные данные имеют необходимые разрешения для операции PutObject.
import boto3
s3 = boto3.client('s3', aws_access_key_id='YOUR_ACCESS_KEY',
                  aws_secret_access_key='YOUR_SECRET_KEY')
# Perform the PutObject operation
response = s3.put_object(Bucket='your-bucket-name', Key='your-object-key', Body='your-object-content')
  1. Проверьте политику сегмента.
    Если у вас определена политика сегмента, проверьте, не ограничивает ли она операцию PutObject. Политика сегмента может явно запрещать действие для используемого пользователя или роли IAM. Просмотрите политику сегмента и внесите необходимые изменения.

  2. Проверьте настройки блокировки общего доступа S3.
    Убедитесь, что настройки блокировки общего доступа S3 не препятствуют операции PutObject. Если настройки «Блокировать общий доступ» включены, это может ограничить публичный доступ к корзине для записи.

  3. Проверьте ACL сегмента.
    Если список управления доступом (ACL) сегмента явно запрещает операцию PutObject, вы можете столкнуться с ошибкой «AccessDenied». Просмотрите список ACL сегмента и при необходимости измените его.

Ошибку «AccessDenied» в AWS S3 с Boto3 можно устранить, выполнив описанные выше методы. Проверив разрешения IAM, проверив учетные данные AWS, просмотрев политику сегмента, проверив настройки блокировки общего доступа S3 и просмотрев ACL сегмента, вы можете устранить неполадки и исправить ошибку. Не забудьте убедиться, что используемый вами пользователь или роль IAM имеет необходимые разрешения для операции PutObject.

Применив эти методы устранения неполадок, вы сможете устранить ошибку «Доступ запрещен» и успешно выполнить операцию PutObjectв AWS S3 с помощью Boto3.