Berikan akses membaca peran IAM EC2 ke bucket S3

10

Saya memiliki aplikasi AWS Elastic Beanstalk Rails yang saya konfigurasi melalui skrip konfigurasi untuk menarik beberapa file dari bucket S3. Ketika saya memulai aplikasi, saya terus menerima kesalahan berikut dalam log ( nama bucket telah diubah untuk keamanan ):

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>

File konfigurasi:

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

Lingkungan Elastic Beanstalk diatur dengan aws-elasticbeanstalk-ec2-roleperan IAM sebagai peran instance. Peran ini memiliki kebijakan berikut:

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

Dan bucket S3 memiliki kebijakan berikut:

{
"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/*"
    }
]
}

Apa yang harus saya ubah untuk memberikan instance EC2 saya akses ke bucket S3 saya?

Dignoe
sumber

Jawaban:

6

Dari insulasi EC2 Anda, Anda juga harus mengambil kredensial sementara dalam metadata instance:

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

Anda kemudian akan menggunakan akses yang disediakan dan kunci rahasia untuk mengakses ember S3 Anda.

Alain CELESTE
sumber
1
Saat Anda melakukan ini melalui AWS SDK untuk bahasa tertentu dari suatu aplikasi, secara internal diurus oleh SDK untuk mendapatkan kredensial sementara dan kemudian menyegarkannya berdasarkan interval waktu tertentu.
whokares
2
Bagaimana Anda menggunakan akses dan kunci rahasia untuk mengakses bucket S3? Apakah kamu punya contoh? Cheers
Céline Aussourd