Назад | Перейти на главную страницу

Получение файлов из корзины s3 с использованием учетных данных роли IAM

Я пытаюсь получить некоторые файлы из частного ведра s3 в экземпляр ec2 эластичного beanstalk расположения файловой системы, но безуспешно.

Я создал корзину с именем dev-config содержащий файл с именем local.properties.

Я создал политику IAM

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::dev-config",
                "arn:aws:s3:::dev-config/*"
            ]
        }
    ]
}

И связал эту политику с ролью IAM, которая, в свою очередь, связана с экземпляром EC2. Я подтвердил, что могу извлекать файлы из корзины s3 с помощью aws-cli без предоставления каких-либо дополнительных учетных данных. т.е. aws s3 ls s3: //dev-config/local.properties

В свой проект я добавил следующий файл:

.ebextensions / 01_files.config

"/usr/share/tomcat7/lib/local.properties" :
    mode: "000777"
    owner: ec2-user
    group: ec2-user
    source: http://s3.amazonaws.com/dev-config/local.properties

Я также пробовал несколько вариантов URL-адреса источника

    source: http://dev-config.s3.amazonaws.com/dev-config/local.properties
    source: http://dev-config.s3.amazonaws.com/local.properties
    source: s3://dev-config/local.properties

И я также пробовал добавить authentication безуспешно (похоже, нет документации о возможных значениях для аутентификации). аутентификация: S3Access

Пока ни один из подходов не сработал.

В некоторых случаях я получаю сообщения об отказе в доступе в журналах:

    <?xml version="1.0" encoding="UTF-8"?>
      <Error><Code>AccessDenied</Code><Message>Access Denied</Message>
      <RequestId>blahblah</RequestId>
      <HostId>blahblah</HostId>
    </Error>

В других случаях у меня были сообщения об ошибках в самом файле local.properties. PermanentRedirect Сегмент, к которому вы пытаетесь получить доступ, должен быть адресован с использованием указанной конечной точки. Пожалуйста, отправляйте все будущие запросы на эту конечную точку. dev-config dev-config.s3.amazonaws.com
бла-бла-бла-бла

Удалось заставить это работать?

Взглянув на этот ответ на Использование свойств среды с файлами в файлах конфигурации эластичного бобового стебля Я добавил следующий раздел в .ebextensions/01_files.config

Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Access:
          type: S3
          roleName: aws-elasticbeanstalk-ec2-role
          buckets: dev-config

и обновил URL-адрес s3, чтобы включить имя сегмента в хосте, чтобы окончательный файл выглядел так:

"/usr/share/tomcat7/lib/local.properties" :
    mode: "000777"
    owner: ec2-user
    group: ec2-user
    source: https://dev-config.s3.amazonaws.com/local.properties

Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Access:
          type: S3
          roleName: aws-elasticbeanstalk-ec2-role
          buckets: dev-config

Это позволило экземпляру ec2 эластичного beanstalk использовать связанную с ним роль IAM для доступа к корзине s3, содержащей файлы.

PS: Чтобы эта конфигурация работала, убедитесь, что вы предоставили доступ к соответствующему сегменту S3 для aws-elasticbeanstalk-ec2-role главный. Вы можете получить ARN из консоли IAM.

Попробуйте с этим IAM. Меня устраивает.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::dev-config",
                "arn:aws:s3:::dev-config/*"
            ]
        }
    ]
}

Если вам нужны разрешения на чтение / запись / удаление, вам понадобится что-то вроде этого:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                 "arn:aws:s3:::dev-config",
                 "arn:aws:s3:::dev-config/*"
            ]
        }
    ]
}

С уважением.