#amazon-web-services #amazon-s3
#amazon-веб-сервисы #amazon-s3
Вопрос:
Недавно я начал использовать AWS S3 Bucket и столкнулся с некоторыми проблемами, поскольку я хотел бы перенести файлы из S3 bucket на другой сервер, используя Boto I Python.
Когда я попытался создать ключ доступа и секретный ключ для API, access I получил сообщение об ошибке, что у меня нет разрешений на создание ключа доступа.
Я пытаюсь изменить политику, как показано ниже, но получаю сообщение об ошибке:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::s3-sample/*"
},
{
"Sid": "ViewAndUpdateAccessKeys",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"iam:UpdateAccessKey",
"iam:CreateAccessKey",
"iam:ListAccessKeys"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
}
]
}
Это приводит к следующей ошибке:
Policy has invalid action
Может кто-нибудь указать, как правильно настроить политику, чтобы она позволяла создавать ключи доступа к API, а также передавать файлы на другой сервер?
Спасибо.
Комментарии:
1. Когда вы говорите «Я пытался создать ключ доступа и секретный ключ для API», как вы это сделали? Вы создали пользователя IAM в консоли управления IAM?
2. Джон.. Я пытаюсь создать его для себя, чтобы я мог переместить данные на другой сервер. Я попытался создать ключ, используя свои учетные данные безопасности -> Создаю ключ, но вижу сообщение о том, что у меня нет разрешения и мне нужно запросить администратора создать его
3. В этом случае вы не сможете создать ключ доступа. Вам нужно будет попросить кого-нибудь в вашей компании (например, администратора AWS) сделать это за вас. Если вы не можете сделать это через консоль, вы не сможете сделать это через Boto3.
Ответ №1:
У политик на основе идентификационных данных нет принципов. В принципе, они будут выведены автоматически, когда вы прикрепите политику к пользователю, роли или группе IAM.
Однако мне кажется, что вы создаете политики корзины, в основе которых лежит принцип. Однако политики корзины не применяются к iam:*
разрешениям. Это объясняет вашу ошибку.
Поэтому, я думаю, вам следует оставить свою политику корзины в исходном состоянии:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::s3-sample/*"
}
]
}
и создайте политику, управляемую клиентом IAM, которую вы можете прикрепить к пользователю IAM, которому она требуется:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ViewAndUpdateAccessKeys",
"Effect": "Allow",
"Action": [
"iam:UpdateAccessKey",
"iam:CreateAccessKey",
"iam:ListAccessKeys"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
}
]
}
Комментарии:
1. Спасибо, Марчин… когда вы говорите прикрепить его к IAM пользователю, которому это требуется … как я должен это сделать? Я запрашиваю это для себя
2. @Ravi Вы можете сделать это в консоли IAM. Просто перейдите к своему IAM-пользователю, которого вы используете, и там будет возможность добавить политики.