При работе с AWS S3 (Simple Storage Service) с использованием Boto3 вы можете столкнуться с ошибкой «AccessDenied» при попытке вызвать API PutObject. Эта ошибка обычно означает, что используемый вами пользователь или роль IAM не имеет необходимых разрешений для выполнения желаемого действия. В этой статье блога мы рассмотрим несколько способов устранения и устранения этой ошибки, а также приведем примеры кода.
- Проверьте разрешения IAM.
Первый шаг — убедиться, что используемый вами пользователь или роль IAM имеет соответствующие разрешения для выполнения операцииPutObject. Убедитесь, что у пользователя есть необходимые разрешения S3 в политике IAM, прикрепленной к его роли. Вот пример политики IAM, предоставляющей необходимые разрешения:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
- Проверьте учетные данные 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')
-
Проверьте политику сегмента.
Если у вас определена политика сегмента, проверьте, не ограничивает ли она операциюPutObject. Политика сегмента может явно запрещать действие для используемого пользователя или роли IAM. Просмотрите политику сегмента и внесите необходимые изменения. -
Проверьте настройки блокировки общего доступа S3.
Убедитесь, что настройки блокировки общего доступа S3 не препятствуют операцииPutObject. Если настройки «Блокировать общий доступ» включены, это может ограничить публичный доступ к корзине для записи. -
Проверьте ACL сегмента.
Если список управления доступом (ACL) сегмента явно запрещает операциюPutObject, вы можете столкнуться с ошибкой «AccessDenied». Просмотрите список ACL сегмента и при необходимости измените его.
Ошибку «AccessDenied» в AWS S3 с Boto3 можно устранить, выполнив описанные выше методы. Проверив разрешения IAM, проверив учетные данные AWS, просмотрев политику сегмента, проверив настройки блокировки общего доступа S3 и просмотрев ACL сегмента, вы можете устранить неполадки и исправить ошибку. Не забудьте убедиться, что используемый вами пользователь или роль IAM имеет необходимые разрешения для операции PutObject.
Применив эти методы устранения неполадок, вы сможете устранить ошибку «Доступ запрещен» и успешно выполнить операцию PutObjectв AWS S3 с помощью Boto3.