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

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

Я создал ведро с именем 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
бла-бла-бла

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

2 ответа

Решение

Взглянув на этот ответ на Использование свойств среды с файлами в файлах конфигурации astic beanstalk, я добавил следующий раздел в .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

Это позволило экземпляру эластичного beanstalk ec2 использовать связанную с ним роль 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/*"
            ]
        }
    ]
}

С уважением.

Другие вопросы по тегам