S3 cp AccessDenied из AWS cli с корневыми ключами

У меня есть AWS cli, установленный в экземпляре EC2, и я настроил его, запустив aws configure и предоставив ему свои ключи AWSAccessKeyId и AWSSecretKey, поэтому, если я запустил команду aws s3 ls, она вернет имя моего ведра S3 (вызов это "mybucket" ).

Но если я попробую aws s3 cp localfolder/ s3://mybucket/ --recursive, я получу ошибку, которая выглядит как

A client error (AccessDenied) occurred when calling the CreateMultipartUpload operation: Anonymous users cannot initiate multipart uploads.  Please authenticate.

Я думал, что, запустив aws configure и предоставив ему свой корневой ключ, я фактически давал aws cli все, что нужно для аутентификации? Есть ли что-то, что мне не хватает относительно копирования в ведро S3, а не перечисление их?

Ответ 1

Ключи доступа и секретный ключ имеют полный контроль и полные привилегии для взаимодействия с AWS. Попробуйте снова запустить aws configure, чтобы повторно проверить настройку и повторите попытку.

PS: настоятельно не рекомендуется использовать корневые ключи доступа - пожалуйста, подумайте о создании IAM (которые принимают привилегии администратора - как root) и используют их.

Ответ 2

Думаю, я бы добавил в очень похожую проблему, в которой я мог перечислить сегменты, но не мог записать в данный сегмент, возвращая ошибку

Произошла ошибка (AccessDenied) при вызове Операция CreateMultipartUpload: доступ запрещен

Если в корзине используется шифрование на стороне сервера, вам необходимо добавить флаг --sse, чтобы иметь возможность записи в эту корзину.

Ответ 3

Если у вас установлены переменные окружения AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID и AWS_REGION, AWS CLI дает им более высокий приоритет, а не учетные данные, которые вы указываете с помощью aws configure.

Итак, в моем случае, bash команда unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY решила проблему.

Ответ 4

Создайте политику, как показано ниже

{
    "Version": "2012-10-17", 
    "Statement": [
        {
            "Sid": "myPolicy",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": [
                "arn:aws:s3:::YOUR_BUCKET_NAME/*",
                "arn:aws:s3:::YOUR_BUCKET_NAME"
            ]
        }
    ]
}

и попробуйте загрузить. Это сработало для меня.