Por que meu usuário do IAM pode criar um bloco, mas não fazer upload nele?

2

ATUALIZAÇÃO: tudo funciona bem no dia seguinte!?! Então, acho que a resposta pode ser que você tenha que esperar algum tempo, seja após criar um novo usuário do IAM, ou depois de criar um novo intervalo, antes que os uploads funcionem.

Eu criei um usuário dedicado do IAM e, em seguida, usei aws configure , dei a chave e especifiquei a região "eu-west-1". Eu posso ver a informação correta em ~ / .aws / config.

Eu tentei aws s3 mb s3://backup , mas fui informado de que já existia. aws s3 ls confirmou que não. No entanto, aws s3 mb s3://backup-specialtest funcionou.

Mas quando tento aws s3 cp test.tgz s3://backup-specialtest , obtenho:

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

Não são apenas os arquivos grandes que são o problema. Fiz um arquivo de texto de 6 bytes e tentei fazer o upload com aws s3 cp test.txt s3://backup-specialtest/ , mas obtenho:

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

Experimentar aws s3 ls s3://backup-specialtest me dá:

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

Experimentar aws s3api get-bucket-acl --bucket backup-specialtest me dá:

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

Eu já havia anexado a política "AmazonS3FullAccess" ao meu usuário, no console da Web da AWS. Quando clico em mostrar a política, obtenho:

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

Parece bom: ele pode fazer todas as ações do S3, em todos os recursos.

Enquanto escrevia isso, achei que verificaria de novo que ainda poderia criar um novo intervalo e não quebrei nada ao longo do caminho. Então eu tentei aws s3 mb s3://another-test e consegui:

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.

Mas quando eu tento: aws s3 mb s3://another-test-2 obtenho sucesso:

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

E está lá: 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

(Esse último intervalo parece ter sido criado pelo usuário raiz no ano passado e está vazio.)

    
por Darren Cook 13.11.2015 / 12:19

1 resposta

2

Primeiro, você precisa entender que os nomes dos intervalos são exclusivos em todo o domínio da Amazon. Portanto, se um usuário já tiver um bloco chamado "backup", você não poderá criar um novo com esse nome.

Isso foi dito: você tem duas maneiras principais de gerenciar permissões de intervalos.

  • Ao criar um bloco, você deve ter permissão para fazer upload / download por padrão. Você pode verificar isso indo até o seu intervalo, clicando no nome do seu intervalo, depois em "propriedades" e finalmente "permissão". Aqui, verifique se o seu usuário do IAM está listado nas permissões concedidas. Você pode adicionar outras permissões, se necessário
  • caso contrário, você também pode usar a política de buckets (o mesmo local que as permissões mencionadas acima). Você encontrará o exemplo de políticas de intervalos aqui . Por exemplo, algo como esse deve tornar seu bucket público:

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