Надайте EC2 IAM роль зчитування доступу до відра S3


10

У мене є програма AWS Elastic Beanstalk Rails, яку я конфігурую через скрипт config, щоб витягнути деякі файли з відра S3. Коли я запускаю програму, я постійно отримую таку помилку в журналах ( ім’я відра було змінено для безпеки ):

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>

Налаштування файлу:

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

Навколишнє середовище Elastic Beanstalk встановлюється з aws-elasticbeanstalk-ec2-roleроллю IAM як ролі екземпляра. Ця роль має таку політику:

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

А відро S3 має таку політику:

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

Що потрібно змінити, щоб надати моїм екземплярам EC2 доступ до мого відра S3?

Відповіді:


6

Зі свого EC2, вам також доведеться отримати тимчасові облікові дані в метаданих екземпляра:

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

Потім ви використовуєте наданий та секретний ключ для доступу до свого відра S3.


1
Коли ви робите це через AWS SDK для конкретної мови з програми, SDK внутрішньо подбає про те, щоб отримати тимчасові облікові дані, а потім оновити їх на основі певних часових інтервалів.
whokares

2
Як ви використовуєте ключ доступу та секретний ключ для доступу до відра S3? У вас є приклад? Ура
Селін Ауссорд

0

Якщо це доступ між обліковими записами, переконайтеся, що він не пов’язаний із заголовками ACL, як згадується тут: https://stackoverflow.com/a/34055538/1736679 (більше інформації у цій темі: https://github.com/aws/aws -cli / випуски / 1674 )

Також двічі перевірте середовище / користувача, від якого ви працюєте, щоб перевірити, чи немає в переліку /etc/environmentабо ключових ключів (1AWS_ACCESS_KEY1 тощо)~/.aws/credentials

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.