#amazon-web-services #ubuntu #amazon-s3 #aws-cli
#amazon-web-services #ubuntu #amazon-s3 #aws-cli
Вопрос:
Некоторое время назад я загрузил несколько ZIP-файлов в корзину AWS S3 с помощью командной строки AWS. Теперь я не могу загрузить эти файлы при использовании следующей команды:
aws s3 cp s3://mybucket/test.zip test2.zip
поскольку это приводит к следующей ошибке:
A client error (403) occurred when calling the HeadObject operation: Forbidden
Completed 1 part(s) with ... file(s) remaining
Как я могу решить эту проблему?
Редактировать:
Выполнение следующей команды показывает существующие политики корзины
aws s3api get-bucket-policy --bucket mybucket
{
"Policy": "{"Version":"2012-10-17","Statement":[{"Sid":"Example permissions","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::221234567819:root"},"Action":["s3:ListBucket","s3:GetBucketLocation"],"Resource":"arn:aws:s3:::mybucket"},{"Sid":"Examplepermissions","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::221234567819:root"},"Action":["s3:PutObject","s3:AbortMultipartUpload","s3:PutObjectAcl","s3:GetObject","s3:DeleteObject","s3:GetObjectAcl","s3:ListMultipartUploadParts","s3:PutObjectAcl"],"Resource":"arn:aws:s3:::mybucket/*"}]}"
}
Ответ №1:
Скорее всего, это одна из трех причин:
- либо одна из ваших политик не разрешает вам читать ресурсы (да, можно иметь разрешения на запись, но не права на чтение), либо
- что ваша клиентская среда больше не настроена с правильными учетными данными.
- у вас нет разрешения ListBucket, и файл отсутствует (он возвращает 403 вместо 404, как будто у вас нет ListBucket, вы не сможете определить, существует файл или нет).
Для 1 объекты S3 могут быть защищены с помощью политик корзины, пользовательских политик или списков управления доступом, и между ними 3 существуют сложные взаимодействия. См. http://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html для получения более подробной информации.
Если вы обновите свой вопрос подробными сведениями о соответствующих пользовательских политиках, политиках корзины и списках управления доступом, я мог бы взглянуть и посмотреть, объясняет ли что-нибудь этот симптом.
Редактировать:
Просматривая включенную политику корзины, похоже, что она привязана к корневому участнику. Используете ли вы учетные данные root для командной строки aws s3? Если вы используете пользователя IAM, вам потребуется изменить принципала (см. http://docs.aws.amazon.com/AmazonS3/latest/dev/s3-bucket-user-policy-specifying-principal-intro.html)
Комментарии:
1. Я включил текущие пользовательские политики в качестве редактирования своего вопроса.
2. Добавлена третья причина получения 403 и некоторые мысли после ознакомления с политикой.
Ответ №2:
Добавьте "arn:aws:s3:::your-bucket-name"
вместе с "arn:aws:s3:::your-bucket-name/*"
to Recourses
в свою политику. Кроме того, вам может потребоваться неочевидное "s3:ListBucket"
разрешение и, возможно, некоторые другие разрешения.
Моя политика, которая работает для загрузки файлов в лямбда-функции:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::XXXXX-pics",
"arn:aws:s3:::XXXXX-pics/*"
]
}
]
}
Он привязан к роли лямбда-функции. Политика корзины, прикрепленная к корзине, не требовалась.