Conceder acesso de leitura da função EC2 IAM ao bucket S3


10

Eu tenho um aplicativo AWS Elastic Beanstalk Rails que estou configurando por meio do script de configuração para extrair alguns arquivos de um bucket S3. Quando inicio o aplicativo, continuo recebendo o seguinte erro nos logs (o nome do bucket foi alterado por segurança ):

Failed to retrieve https://s3.amazonaws.com/my.bucket/bootstrap.sh: HTTP Error 403 : <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message>

Arquivo de configuração:

packages:
  yum:
    git: []

files:
  /opt/elasticbeanstalk/hooks/appdeploy/pre/01a_bootstrap.sh:
    mode: "00755"
    owner: root
    group: root
    source: https://s3.amazonaws.com/my.bucket/bootstrap.sh

O ambiente do Elastic Beanstalk é configurado com a aws-elasticbeanstalk-ec2-rolefunção IAM, como é a instância. Esta função tem a seguinte política:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:Get*",
        "s3:List*"
      ],
      "Resource": "arn:aws:s3:::my.bucket/*"
    }
  ]
}

E o bucket S3 tem a seguinte política:

{
"Version": "2008-10-17",
"Statement": [
    {
        "Sid": "Stmt1371012493903",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::<account #>:role/aws-elasticbeanstalk-ec2-role"
        },
        "Action": [
            "s3:List*",
            "s3:Get*"
        ],
        "Resource": "arn:aws:s3:::my.bucket/*"
    }
]
}

O que preciso alterar para conceder acesso às minhas instâncias do EC2 ao meu bucket S3?

Respostas:


6

Na sua instância do EC2, você também precisará recuperar as credenciais temporárias nos metadados da instância:

curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<your-iam-role-name>

Você deve usar o acesso fornecido e a chave secreta para acessar seu bucket do S3.


1
Quando você faz isso através dos SDKs da AWS para o idioma específico de um aplicativo, o SDK cuida internamente do SDK para obter as credenciais temporárias e atualizá-las com base em intervalos de tempo específicos.
whokares

2
Como você usa a chave secreta e de acesso para acessar o bucket S3? Você tem um exemplo? Cheers
Céline Aussourd 19/03/2015

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.