Concrete CMS でファイルマネージャーの中のファイルを、EC2 の EBS や EFS の中では無く、安価な S3 の中に格納できるという、S3 Storage というアドオンがあります。
EBS には Concrete CMS のコードなど最小限のファイルを設置し、ファイルマネージャーは、無制限な S3 を使う方法です。
サーバーを冗長化させる時も有効です。(別途 CloudFront で別(サブ)ドメインでアクセスできるようにする必要あり。)
注意事項
2024/2/1 時点の情報
- EC2 の IAM Role は速度が激遅になるので、IAM User の Access Key & Secret での接続をお願いします。
- PutObjectAcl があるのは昔の名残で、必要。いつかは改修予定。
- ACL のバケットオーナーの、 リスト・書き込みを共にオン に設定をお願いします。
- ブロックパブリックアクセスは オフ に設定してください。 (前述の ACL が無効化されるため。)
IAM Policy サンプル
そのアドオンを使って S3 にあげる際の IAM ポリシーサンプルです。以下のポリシーを IAM User にアタッチしてあげてください。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListObjectsInBucket",
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::【S3バケット名】"
]
},
{
"Sid": "AllObjectActions",
"Effect": "Allow",
"Action": [
"s3:*Object",
"s3:PutObjectAcl",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::【S3バケット名】/*"
]
}
]
}
【S3バケット名】
をS3バケット名に置き換えてください。
最初のグループは、S3 バケットの ARN だけですが、2つ目のグループには、S3 バケットの ARN の次に /*
(スラッシュとアスタリスク)をつける必要があります。