はじめに
こんにちは、メダカです。今回は私のポートフォリオでAWSが提供しているサービスである「S3(Amazon Web Services)」を取り入れたいと思い調べた内容を共有いたします。
ActiveStorageとS3について
S3を調べているとどうやら、ActiveStorageをまずは理解していないといけないっぽい。ということで、調べました。
ActiveStorage
公式には、「Active Storage を使用すると、Amazon S3、Google Cloud Storage、Microsoft Azure Storage などのクラウド ストレージ サービスにファイルをアップロードし、それらのファイルを Active Record オブジェクトに添付することができます。」とのことです。
なるほど、、、全く理解できませんでした。ということでもう少し調べてみると、分かってきました。
簡単に一言で言えば、railsに標準で装備されている「ファイル管理の仕組み」のことらしい。これがあることで、画像や動画、PDFなどのファイルをアップロードしたり表示ができる。
ActiveStorageの役割
①ファイルのアップロード
ユーザーが画像や動画をアプリにアプロードできます。今回の私はこの機能を使用して、筋トレの自撮り動画を送るシステムを考えています。
②外部ストレージとの連携
また難しい単語が出てきましたが、これはActiveStorageがローカル上のファイル保管庫だとしたら、外部ストレージはクラウドストレージ上(S3など)のファイル保管庫のことです。つまり、ローカルで容量などが足りない時などに外部ストレージと連携がすぐできる。今回はこちらも実践します。
③ファイルのデータを保存(アタッチ)
ユーザーがファイルをアップロードした時に、ファイル本体は指定したストレージ(ローカルや外部)に保存されます。そして次にファイル情報がactive_storage_blobsに保存され、モデルとの紐付け情報(これがアタッチというらしい)がactive_storage_attachmentsに保存される。勝手にモデルとの紐付けをしてくれるのはすっごく便利ですね。
S3(Amazon Simple Storage Service)
AWSが提供しているオンラインストレージサービス。ユーザーの規模が多くなったときの利用負荷の増大に対応できることや、優れた可用性、セキュリティなどを提供しています。
手順
用意しておくこと
以下の2つのアカウントを用意します。
・AWSアカウント
・IAMユーザー
S3バケット(S3におけるフォルダという認識)
まずはAWS CLIでバケットの作成をするので、インストールします。
brew install awscli
次にIAMユーザーの情報をもとにAWS CLIの設定をします。
aws configure
上記のコマンドを入力するとIAMユーザーのAccess Key IDやSecret access Keyなどが求められるので入力してください。
いよいよバケットの作成です。
aws s3 mb s3://バケット名
上記のコマンドでバケットの作成は完了です。
もし、パブリックアクセスの設定等が必要な場合はここで、コマンドを入力します。ここら辺はまだ理解が浅いところです。。。
Active Storageの設定
こちらはActive Storageのガイドを参考にしたところ簡単にできました。
amazon:
service: S3
access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
region: ap-northeast-1
bucket: バケット名
コメントアウトされているところを外して修正すると良いです。
以上でActiveStorageとS3の設定が完了しました。
終わりに
なかなかこれらを暗記はできませんが、何度も使っているうちに覚えてくる日を願い、今日も勉強を進めていきます。ここまで閲覧いただき誠にありがとうございました。