Crowiでファイルアップロードしてみた(AWS)

どうも、ハートで汗かいてるざわです。

久しぶりのCrowiネタです。

事前準備

  • AWS S3バケットの用意
  • S3にアクセスできる APIキーとシークレットキーの用意

リージョンの確認

今回は「crowi-upload-test」というバケット名で進めます

$ aws s3api get-bucket-location --bucket crowi-upload-test
{
    "LocationConstraint": "us-west-2"
}

s3 lsもできるか確認

$ aws s3 ls s3://crowi-upload-test

ポリシー

ちなみにIAMユーザを作成し、グループのポリシーに以下を設定しました。
GetBucketLocation ないとAccess Deniedになりました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::crowi-upload-test"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": "arn:aws:s3:::crowi-upload-test/*"
        }
    ]
}

設定

ヘッダーから「admin」を選択します

アプリ設定

AWS設定の項目を設定して更新します

動作確認

FILE_UPLOAD=aws 指定して起動します

FILE_UPLOAD=aws PASSWORD_SEED=1234567 MONGO_URI=mongodb://localhost:27017 npm start

編集画面で画像をドラッグ&ドロップすると表示されました!

おしまい

これに伴いプロフィール画像も変更できるようになりました〜

おまけ

リバースプロキシなどで、異なるポートでラップしてる場合、、、
画像のURLとかシェアリンクのポートが抜けて正しく表示されない場合がある?(当たり前ですが)

その場合、この辺のファイル見ると解決できるかもメモ

  • lib/routes/attachment.js (添付ファイル関連)
  • lib/views/widget/page_side_content.html (しぇありんく)
  • lib/views/layout/2column.html (しぇありんく)

とりあえずこんな感じにすると解決できる(もっといい方法発見できたら嬉しい)
例) ポート8080の例

          at.url = baseUrl + fileUrl;

          at.url = baseUrl + ":8080" + fileUrl;
サーバサイドエンジニア。オムライスが好物

シェアする

  • このエントリーをはてなブックマークに追加

フォローする