AWSのS3に投稿された画像を保存できるようにしよとした時にかなり苦戦したのでそのお話をさせていただければと思います。
S3の権限については学習したはずなのにそのことについてすっかり忘れてしまっていたのでそのお話をさせていただければと思います。
まず、どうやってアクセス権限を得ることができるのかというと、
1つ目として、
EDITOR="vi" bin/rails credentials:edit
コマンドを使用してシークレットアクセスキーとアクセスキーを入れて環境変数を有効にするコマンドである
source ~/.zshrc
コマンドを打って環境変数を有効化します。
2つめは、S3のコンソールに行って
バケットからアクセス許可の項目に行っていただいて、そこにあるバケットポリシーにJSON形式でコードを書いて許可するやり方です。
私は以下のようにしてアクセスを許可しました。
それは、
{
"Version": "2012-10-17",
"Id": "Policy1544152951996",
"Statement": [
{
"Sid": "Stmt1544152948221",
"Effect": "Allow",
"Principal": {
"AWS": "IAMユーザーのARN"
},
"Action": [
"s3:*",
"s3:PutObjectAcl",
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "バケットのARN/*"
}
]
といった感じです。
ひとつひとつ見ていくと、Actionの項目に、PutとGetとDeleteの項目を許可するようにアクセス制限が組まれています。
これをしてあげることで、S3に対して投稿やその投稿されている画像等のファイルをWeb上に表示できる仕組みができました。
私はこれでつまずいていました。
なので、このようなことがないように備忘録として保存しておきます。
ありがとうございました。今回AWSがより一層好きになりました。