Growiのファイルアップロード先をS3に設定

アプリ設定 | GROWI Docs」にあるとおりなんだけれど、何故か毎回引っかかってしまうのでメモする。

目次

環境

  • docker-composeで作ったもので確認
    • ホストOS: macOS 14, IntelとAppleSilicon両方確認
  • Growi v7.0.x

やること

graph LR user(ユーザ) growi(Growi) s3(S3) growi -.->|アップロード| s3 s3 -->|アクセス許可| growi -->|ファイル| user

Growiを通じてS3上のファイルをやりとりできるようにするための、Growi-S3間の権限設定をそれぞれすることになる。

  • AWS側
    • 保存するバケットを作成する(今回はap-northeast-1)
      • バケットのパブリックブロックの設定を変更する
    • バケットにアクセスするためのIAMポリシーをアタッチしたIAMユーザを作成する
      • IAMユーザの認証キーを作成する
  • Growi側
    • docker-compose.ymlで S3_OBJECT_ACL=privateの設定をする
    • アプリ設定で認証の設定をする

手順

AWS: バケットの作成

東京リージョンでバケットを作成する。

バケットのブロックパブリックアクセスのうち、「新しいアクセスコントロールリスト (ACL) を介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする」のみオフにする(下図)。作成時に設定できるが、作成後にも「アクセス許可」タブより設定変更可能。

AWS: IAMの作成

作成したバケットにアクセスするためのIAMポリシーを作成する。ポリシーは以下。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::<作成したバケット名>/*"
            ]
        }
    ]
}

IAMユーザを作成し、作成したポリシーをアタッチする。

IAMユーザの認証キーを作成して保存する。

Growi: docker-compose.yml の編集

docker-compose.yml に環境変数として S3_OBJECT_ACL=private を追加。

version: '3'

services:
  app:
    build:
      context: .
      dockerfile: ./Dockerfile
    ports:
      - 127.0.0.1:13000:3000    # localhost only by default
    links:
      - mongo:mongo
      - elasticsearch:elasticsearch
    depends_on:
      - mongo
      - elasticsearch
    environment:
      - MONGO_URI=mongodb://mongo:27017/growi
      - ELASTICSEARCH_URI=http://elasticsearch:9200/growi
      - PASSWORD_SEED=changeme
      - S3_OBJECT_ACL=private   # ---------------ここに追加-------------------
      # - FILE_UPLOAD=mongodb   # activate this line if you use MongoDB GridFS rather than AWS
      # - FILE_UPLOAD=local  

コンテナを再起動する。

Growi: アプリの設定

管理者画面の「アプリ設定」より「ファイルアップロード設定」で、ファイルアップロード方法としてAWS(S3)を選択し、リージョン、バケット名、キーの設定をして更新する。

所感

マニュアルに書いてあるんだけど、いつも何かを忘れて謎に引っかかるので、メモした。だいたいdocker-compose.ymlの編集を忘れる模様。

Growi便利だよね。

本サイトはUXを悪くするevilなGoogle広告を消しました。応援してくださる方は おすすめガジェット を見ていってください!
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次