Не удается создать ключ доступа для передачи данных AWS S3

#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-пользователю, которого вы используете, и там будет возможность добавить политики.