Получение файлов из корзины 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/*"
]
}
]
}
С уважением.