Canvas-LMSでAWSのS3ストレージが利用できます。どうすればいいか、参考にしたサイトがあったのですが、見失ってしまったので、ここに訳文を全文掲載しておきます。苦情受け付けます。
Amazon S3にデータを保存するには、Amazon Web Servicesのアカウントが必要です。アカウントを取得したら、セキュリティ認証情報ページにアクセスして、アクセスキーIDとシークレットアクセスキーを確認してください。これら2つの値は、ストレージコンテナに対するCanvasの認証に役立ちます。
次に、S3管理コンソールにアクセスし、バケットが設定されていることを確認します。バケットの名前に注意してください。(記録しておけということ?)
CanvasがS3バケットをファイルストレージに使用するように設定します。
config/file_store.ymlを開いて、プロダクションセクションを見つけ、storage: localをstorage: s3に変更し、path: tmp/filesの行をコメントアウトします。
config/amazon_s3.ymlを開いて、プロダクションセクションを見つけて、バケット名、access_key_id、secret_access_keyフィールドに先ほど見つけた値を入力します。
Apache と自動ジョブ デーモンの両方を再起動します (sudo /etc/init.d/apache2 restart &&sudo /etc/init.d/canvas_init restart)。
CanvasはファイルのアップロードにUploadifyを使用し、Flashを使用します。Canvasアプリケーションが使用しているドメインとは異なるドメインにファイルをアップロードする場合、サンドボックスのセキュリティ問題を回避するために、バケットにXMLクロスドメインポリシーファイルを設定する必要があります。典型的なクロスドメインポリシーファイルは以下のようになります。
<cross-domain-policy><site-control permitted-cross-domain-policies=”master-only”/><allow-access-from domain=”yourdomain”/></cross-domain-policy>
クロスドメインポリシーファイルについての詳細はこちらをご覧ください。 https://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html
で、バケットの設定をしたのですが、ちょっと戸惑いました。結論から言えば何が悪かったのかというと、CORSの設定が必要だっただけでした。


バケットポリシー 設定
{ "Version": "2012-10-17", "Id": "Policy1600849xxxxxxxxx", "Statement": [ { "Sid": "Stmt1600849xxxxxxx", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::4783080xxxxxxx:user/shiihara-bizaas-S3" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::bizaas-storage/*" } ] }

CORSの設定
<?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>https://bizaas.net</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedMethod>GET</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule> </CORSConfiguration>

いや、SESほどじゃないですけど、結構ハマりましたので備忘録として。
コメントを書く