読者です 読者をやめる 読者になる 読者になる

カッパでも分かるiOSアプリゲーム開発

カッパがひたすらゲーム制作に関することを書くブログです。Railsに関するTipsもたまにまとめてます。

s3 にアップロードした画像を公開する方法

aws
スポンサードリンク

f:id:InvokeTwoA:20151023183618p:plain「AWSはデフォルトでは非公開設定になっていて一般ユーザーに画像を見れない!」
f:id:InvokeTwoA:20151215172640p:plain「手動アップロードした画像のurlを実行してみると下記のような悲しい画面に……」
f:id:InvokeTwoA:20170217114518p:plain

画像を公開する方法

  • ファイル単位で設定する方法と、バケット単位で設定する方法がある
  • 今回はバケット単位で設定する方法のまとめ
まずはバケット -> プロパティ で詳細を表示する
  • ここで「アクセス許可」の項目で「バケットポリシーの追加」を選択する
  • するとバケットポリシー・エディターが出てくる
  • このテキストエリアにバケットポリシーを入力すれば良いのだが、バケットポリシーとやらが少し分かり難い
  • バケットポリシーの例は下記のヘルプで閲覧する事ができる

docs.aws.amazon.com


f:id:InvokeTwoA:20151023183618p:plain「この説明を見て一瞬で書くべき項目を理解できた人は超人」
f:id:InvokeTwoA:20151215172640p:plain「けれど俺らは凡人! 気分は豚汁!」

バケットポリシーを追加する

  • バケットポリシーエディターの左下の「AWS Policy Generator」をクリックすれば、自動でバケットポリシーを作ってくれる
  • 自動と言っても下記の必要項目を入力しないといけない
項目 内容
Select Type of Policy S3 Bucket Policy
Effect Allow
Principal *
AWS service Amazon S3
Actions GetObject
AmazonResourceName arn:aws:s3:::hogehoge/*  ※hogehogeにはバケット名を入力

f:id:InvokeTwoA:20151023183618p:plain「AWN?」
f:id:InvokeTwoA:20151215172640p:plain「AWNのヘルプは下記の通り。読めば読むほどカッパな気持ちになリますな」

docs.aws.amazon.com

  • そして generate すると下記のようなポリシーを取得できる
{
  "Id": "Policy1487300078753",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1487300073530",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::hogehoge/*",
      "Principal": "*"
    }
  ]
}

※hogehoge の部分はバケット名とか入れる

f:id:InvokeTwoA:20151023183618p:plain「もう2017年なのに Version は 2012-10-17!」
f:id:InvokeTwoA:20151215172640p:plain「5年も動き続ける神システムと見るか、更新してないグータラシステムと見るか……」

このポリシーをバケットポリシーエディターに入力して保存すれば、画像にアクセスできるようになる

f:id:InvokeTwoA:20151023183618p:plain「やったー! できたー!」
f:id:InvokeTwoA:20151215172640p:plain「公開するボタンを押して完了、でも良いのになんでこんなに大変なんでしょうね」

Amazon Web Services実践入門 (WEB+DB PRESS plus)