Я пытаюсь получить некоторые файлы из частного ведра 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/*"
]
}
]
}
С уважением.