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"
]
}
]
}
и попробуйте загрузить. Это сработало для меня.