2015-07-27 4 views
6

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

Но, если бы я тогда попробовать 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 настройки и дать ему мой корневой ключ, который я был фактически дающую AWS Cli все, что необходимо для аутентификации? Есть ли что-то, чего я не вижу в копировании в ведро S3, а не перечислять их?

+1

Ваш пользователь/роль IAM должен быть назначен политикой, которая позволяет ему выполнять действие «CreateMultipartUpload» - вы можете моделировать политики через IAM, чтобы проверить, будет ли он работать. –

+1

Ключ доступа root и секретные ключи должны иметь все привилегии. Попробуйте запустить aws configure еще раз - –

+0

Спасибо @Naveen На основании вашего комментария я попытался использовать другой набор корневых ключей, которые у меня были на другом компьютере, и это действительно сработало. Я теперь озадачен тем, почему один набор корневых ключей работал, а другой - нет. Но по крайней мере ваше предложение решило мою проблему. –

ответ

3

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

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

2

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

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

2

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

An error occurred (AccessDenied) when calling the CreateMultipartUpload operation: Access Denied

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

0

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

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

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

Смежные вопросы