一部のファイルをプライベートs3バケットからファイルシステムのロケーションElastic beanstalk ec2インスタンスに取得しようとしていますが、成功しません。
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インスタンスに関連付けられます。追加の認証情報を提供しなくても、aws-cliを使用してs3バケットからファイルをフェッチできることを確認しました。つまり、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
何とか何とか
なんとかこれを機能させることができましたか?
この回答を確認した後、 Elastic beanstalk構成ファイル内のファイルで環境プロパティを使用する.ebextensions/01_files.config
に次のセクションを追加しました
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Access:
type: S3
roleName: aws-elasticbeanstalk-ec2-role
buckets: dev-config
ホストにバケット名を含めるようにs3 urlを更新したため、最終的なファイルは次のようになります。
"/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
これにより、elastic beanstalk ec2インスタンスは、それに関連付けられたIAMロールを使用して、ファイルを含むs3バケットにアクセスできるようになりました。
PS:この構成を機能させるには、問題のS3バケットへのアクセス権をaws-elasticbeanstalk-ec2-role
プリンシパルに付与していることを確認してください。 IAMコンソールからARNを取得できます。
この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/*"
]
}
]
}
よろしく。