##何をしたいか
ECSでlaravelアプリをホストしています。
サムネイルの表示や更新にS3を利用しているため、ECSでホストしたLaravelアプリからS3にアクセスしたいです。
ECSからS3を利用する場合、開発環境で行っていた方法とは少し異なるため記事にしました。
##開発環境でのやり方
IAMでS3バケットを作成するアカウントを作成します。
そのアカウントでS3バケットを作成します。
.envを以下の様に編集します。
AWS_ACCESS_KEY_ID=******************** //先ほど作成したアカウントのアクセスキーID
AWS_SECRET_ACCESS_KEY=******************** //先ほど作成したアカウントのシークレットアクセスキー
AWS_DEFAULT_REGION=ap-northeast-1
AWS_BUCKET=バケット名
AWS_URL=https://s3-ap-northeast-1.amazonaws.com/バケット名/
おそらくこれで開発環境で作成したアプリからS3にアクセスできると思います。
##本番環境(ECS)でのやり方
ECSからS3にアクセスする場合ECSタスクロールにS3アクセスのための権限を付与する必用があります。
ecs_task_policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:ReplicateObject",
"s3:DeleteObject"
],
"Resource":"arn:aws:s3:::バケット名/*"
}
]
}
.envは以下の様に編集します。
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=ap-northeast-1
AWS_BUCKET=バケット名
AWS_URL=https://s3-ap-northeast-1.amazonaws.com/バケット名/
これでECSからS3にアクセスできると思います。