O script AWS CodeBuild falha s3 sync com AccessDenied

1

Estou usando o CodeBuild com

  • Imagem: aws / codebuild / nodejs: 7.0.0
  • papel de serviço: code-buid-some-service-role

No meu buildspec, o seguinte comando é executado

aws s3 sync ./webroot s3://s3-us-west-2.amazonaws.com/some-amazing-s3-bucket/test

Esta é a política de buckets:

{
    "Version": "2012-10-17",
    "Id": "Policy1502332584348",
    "Statement": [
        {
            "Sid": "Stmt1502332580996",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789:role/service-role/code-buid-some-service-role"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::some-amazing-s3-bucket/*",
                "arn:aws:s3:::some-amazing-s3-bucket"
            ]
        }
    ]
}

A compilação de código está falhando com isso:

[Container] 2017/08/10 02:41:16 Running command aws s3 sync ./webroot s3://s3-us-west-2.amazonaws.com/some-amazing-s3-bucket/test
fatal error: An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied

O que estou perdendo? Eu tenho a política de balde larga aberta ao testar isso e ainda está falhando.

    
por Sean256 10.08.2017 / 04:51

2 respostas

1

Adicionando o seguinte à função gerada pelo CodeBuild funcionou para mim:

{
    "Effect": "Allow",
    "Resource": [
        "arn:aws:s3:::mytestbucket",
        "arn:aws:s3:::mytestbucket/*"
    ],
    "Action": [
        "s3:PutObject",
        "s3:Get*",
        "s3:List*"
    ]
}
    
por 31.05.2018 / 23:31
1

Eu tive esse mesmo erro e tentei tudo neste segmento. Eu estava tentando fazer

aws s3 sync ./build s3://s3-us-east-1.amazonaws.com/some-amazing-s3-bucket

de uma ação do Codebuild, mas a resposta do S3 sempre foi

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

mesmo quando eu fiz do aws-cli no meu laptop (com teclas de acesso de administrador).

Demorei várias horas para perceber que o URL do s3 atual deveria ser escrito assim:

s3://some-amazing-s3-bucket

em vez de

s3://s3-us-east-1.amazonaws.com/some-amazing-s3-bucket

Dito isto, uma política como a de tedsmitt deve ser anexada ao (no meu caso) papel de codebuild também.

Espero que isso ajude alguém.

    
por 17.10.2018 / 23:55