ОБНОВИТЬ: на следующий день все работает нормально!?! Поэтому я думаю, что ответ может заключаться в том, что вам придется подождать некоторое время, либо после создания нового пользователя 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. Поэтому, если у пользователя уже есть корзина с именем «резервная копия», вы не сможете создать новую с этим именем.
При этом у вас есть два основных способа управлять разрешениями сегментов.
в противном случае вы также можете использовать политику корзины (в том же месте, что и разрешения, упомянутые выше). Вы найдете пример политики корзины Вот. Например, что-то вроде этого должно сделать вашу корзину общедоступной:
{"Version": "2012-10-17",
"Statement": [
{
"Sid": "myPolicy",
"Effect": "Allow",
"Principal": "*",
"Action": "*",
"Resource": [
"arn:aws:s3:::YOUR_BUCKET_NAME/*",
"arn:aws:s3:::YOUR_BUCKET_NAME"
]
}
]}