Назад | Перейти на главную страницу

Почему мой пользователь IAM может создавать корзину, но не загружать в нее?

ОБНОВИТЬ: на следующий день все работает нормально!?! Поэтому я думаю, что ответ может заключаться в том, что вам придется подождать некоторое время, либо после создания нового пользователя IAM, либо после создания нового сегмента, прежде чем загрузка будет работать.


Я создал специального пользователя IAM, затем сделал aws configure, и дал ключ, и указал регион "eu-west-1". Я вижу правильную информацию в ~ / .aws / config.

Я попытался aws s3 mb s3://backup но мне сказали, что он уже существует. aws s3 ls подтвердил, что это не так. тем не мение aws s3 mb s3://backup-specialtest действительно работал.

Но когда я пытаюсь aws s3 cp test.tgz s3://backup-specialtest Я получил:

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

Проблема не только в больших файлах. Я создал 6-байтовый текстовый файл и попытался загрузить с помощью aws s3 cp test.txt s3://backup-specialtest/ но получите:

upload failed: ./test.txt to s3://backup-specialtest/test.txt A client error (AccessDenied) occurred when calling the PutObject operation: Access Denied

Пытаюсь aws s3 ls s3://backup-specialtest дает мне:

A client error (AccessDenied) occurred when calling the ListObjects operation: Access Denied

Пытаюсь aws s3api get-bucket-acl --bucket backup-specialtest дает мне:

A client error (AccessDenied) occurred when calling the GetBucketAcl operation: Access Denied

Я уже привязал к своему пользователю политику «AmazonS3FullAccess» в веб-консоли AWS. Когда я нажимаю "Показать политику", я получаю:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "*"
    }
  ]
}

Это выглядит неплохо: он может выполнять все действия S3 на всех ресурсах.

Пока я писал это, я подумал, что еще раз перепроверю, могу ли я создать новое ведро, и ничего не сломал. Так что я попробовал aws s3 mb s3://another-test и получил:

make_bucket failed: s3://another-test/ A client error (BucketAlreadyExists) occurred when calling the CreateBucket operation: The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.

Но когда я пытаюсь: aws s3 mb s3://another-test-2 Получаю успех:

make_bucket: s3://another-test-2/

И это там: aws s3 ls

2015-11-13 11:07:10 another-test-2
2015-11-13 10:18:53 backup-specialtest
2014-08-05 21:00:33 something-older

(Эта последняя корзина, похоже, была создана пользователем root в прошлом году и пуста.)

Для начала вам нужно понять, что имена сегментов уникальны для всего домена Amazon. Поэтому, если у пользователя уже есть корзина с именем «резервная копия», вы не сможете создать новую с этим именем.

При этом у вас есть два основных способа управлять разрешениями сегментов.

  • При создании корзины у вас должно быть разрешение на загрузку / скачивание по умолчанию. Вы можете проверить это, зайдя в свою корзину, щелкнув ее имя, затем «Свойства» и, наконец, «разрешение». Здесь убедитесь, что ваш пользователь IAM указан в списке предоставленных разрешений. При необходимости вы можете добавить другие разрешения
  • в противном случае вы также можете использовать политику корзины (в том же месте, что и разрешения, упомянутые выше). Вы найдете пример политики корзины Вот. Например, что-то вроде этого должно сделать вашу корзину общедоступной:

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