概要
皆さんこんにちはcandleです。今回はrailsやphpからS3にファイルをアップロードしたりする権限を取得する方法を紹介します。一般にS3にファイルをアップロードしたり削除するにはアクセスキーとシークレットキーをIAMから取得する必要があります。
興味深いのはS3に限らないのですが、aws環境ではそれぞれのサービスに例えばS3やRDSに外部からアクセスする権限を管理するのがそれぞれのサービスではなくてIAMというサービスになります。
故にS3を操作する場合でも権限関連はIAMで作成します。
逆に言えば、このアクセスキーとシークレットキーがあればどこからでもS3にアクセスしてファイルを編集したり、削除できたりできます。別の記事にあるように、自宅のMacPCからもS3にアクセスできるようになります。
前提
awsのアカウントを持っていて割と自由に使える
S3へアクセスるためのaccess_keyとsecret_keyを取得する
S3へファイルをアップロードしたり、消したりするのにはもちろん権限が必要です。誰も彼もS3にファイルをアップロードできては危険だからです。
railsやphpでS3にファイル上げる場合もaccess_keyとsecret_keyは必要不可欠です。それぞれのキーを取得しましょう。
awsのメニューの自分のアカウント名が書かれているプルダウンメニューから「Security Credentials」を選びます。
左のメニューから「Users」を選択します。
「Create New Users」を選択します。
そしたら、名前は何でも良いのですが、例えば、「s3upload」というユーザー名にします。別にs3uploadという名前である必要性はありません。書いたら、Createを押します。
access_keyとsecret_keyが表示されるので、コピペで保存するかダウンロードしましょう。ちなみにこれは後で確認ができなかったと思います。必ず保存しましょう。
今度はこのs3uploadユーザーに権限をもたせます。
ユーザーを選択して「Attach User Policy」を選択します。
「Select Policy Template」から「Amazon S3 Full Access」を選択して「Select」を押します。
次の画面に移動するので、なにも変えずに「Apply Policy」を選択します。
これで、先ほど入手したaccess_keyとsecret_keyを使ってs3にファイルをアップロードできる権限を持つことができました。
まとめ
入手したアクセスキーとシークレットキーをrailsなりphpで使用して、S3上でファイルの管理を行える用になりました。他の記事で、ファイルのアップロード仕方などを紹介しているのでそちらもどうぞ。