Memo

メモ > サーバ > サービス: AWS > S3

S3
※可用性の高い、オンラインストレージ(ファイルサーバ)を利用できる。 AWSの「S3」とは?使い方や料金体系をわかりやすく解説 | 名古屋・東京のシステム開発会社 | シースリーインデックス株式会社 https://www.c3index.co.jp/blog/blog_197/ 「S3 → バケットを作成」からバケットを作成。 バケット名: refirio リージョン: アジアパシフィック(東京) パブリックアクセス設定: (各チェックを外して公開。) バケットポリシー:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::refirio/*" } ] }
※Bucket Name は「net.refirio.images」「net.refirio.backup」のように、URLをベースにすると他と重複しなくていいかもしれない。 (いったんは普通に名前を付けている。) 問題なければ「バケット」ボタンを押す。 ■S3のファイルを直接公開しない Amazon S3 → happy-ring-production → アクセス許可 → ブロックパブリックアクセス (バケット設定) → 編集 で「パブリックアクセスをすべて ブロック」にチェックを入れて保存した。 つまり、S3の画像を直接公開しないようにした。 ■サーバサイドプログラムからS3にファイルをアップロード 画面右上のアカウント名 → マイセキュリティ資格情報 → Delete your root access keys → Manage Security Credentials Your Security Credentials ページの Access Keys (Access Key ID and Secret Access Key) でアクセスキーを作成できるので、控えておく。 http://j-caw.co.jp/blog/?p=1100 などを参考に、S3にファイルをアップロードできるプログラムを作成して動作確認する。 インスタンス一覧からインスタンスを選択し、指定したフォルダ内に指定したファイルをアップロードできているか確認する。 ファイルを選択し、Properties → Link で、実際にアップロードされたファイルにアクセスできる。 Access Key ID : XXXXX Secret Access Key : YYYYY http://develop-123456789.ap-northeast-1.elb.amazonaws.com/s3/ ただし基本的にルートキーは使用せず、限定的な権限を持つユーザーを作成することを推奨。 画面右上のアカウント名 → マイセキュリティ資格情報 → ユーザー → ユーザーを追加 ユーザー名: refirio-production アクセスの種類: プログラムによるアクセス アクセス権限を設定: 既存のポリシーを直接アタッチ のようにして、「EC2とS3にだけアクセスできる」のように作成する。 awsのs3を操作する為のaccess keyとsecret keyを取得する(IAM) - joppot https://joppot.info/2014/06/14/1621 ユーザーをいくつも作成する場合、権限をグループで管理するといい。 AWSアクセスキー作成 - Qiita https://qiita.com/miwato/items/291c7a8c557908de5833 PHPプログラムからS3にアップロードする場合、バケットの。 「アクセス権限 → パブリックアクセス設定 → 編集」 で各チェックを外して「保存」とすると、SDKでアップロードする際
$client = S3Client::factory(array( 'key' => 'XXXXX', 'secret' => 'YYYYY', )); $result = $client->putObject(array( 'ACL' => 'public-read', 'Bucket' => 'refirio-staging', 'Key' => 'images/photo01.jpg', 'Body' => file_get_contents('images/photo01.jpg'), ));
のように「ACL」を「public-read」にすればファイルを公開できる。 また、バケットのプロパティの 「アクセス許可 → バケットポリシー」で以下を登録すると、「ACL」を「public-read」に指定しなくてもファイルがデフォルトで公開される。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::バケット名/*" } ] }
HDDに保存するのはもう古い!Amazon S3を使ってみたら簡単便利すぎてHDDが蒸発した http://www.4-fusion.jp/randd/2013/05/08/hdd-old-amazon-s3-easy/ AWS SDK for PHPを使ってS3にファイルをアップロードする http://j-caw.co.jp/blog/?p=1100 Installing via Composer http://docs.aws.amazon.com/aws-sdk-php/guide/latest/installation.html AWS SDK for PHP http://aws.amazon.com/jp/sdkforphp/ Amazon S3 でバケット配下を全て public read にする http://www.bokukoko.info/entry/2015/02/03/Amazon_S3_%E3%81%A7%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E9... ■画像の表示 ※未検証。 S3に配置した画像のURLに直接アクセスすると、ダウンロードダイアログが表示される。 (imgタグで呼び出せば普通に画像が表示される。) AWSコンソールからオブジェクトのプロパティを確認すると、「メタデータ」に以下が設定されている。 これがデフォルト値だと思われる。 タイプ: システム定義 キー: Content-Type 値: binary/octet-stream 例えば画像がJpegの場合、以下のように設定することで、画像のURLに直接アクセスするとブラウザに表示されるようになる。 タイプ: システム定義 キー: Content-Type 値: image/jpeg SDK経由なら、オブジェクトをputする際にメタデータを指定できるみたい。 AWS S3 の putObject API でメタデータを設定する - 銀の弾丸 https://takamints.hatenablog.jp/entry/set-metadata-with-aws-s3-putobject CLI経由でも処理できるみたい。 AWS CLI で S3 オブジェクトのメタデータを変更する - michimani.net https://michimani.net/post/aws-modify-metadata-of-s3-object/ AWS CLIでS3 objectsへメタデータを設定する - Qiita https://qiita.com/yohachi/items/7b91fcc441b2ccf4da87 【小ネタ】S3オブジェクトのContent-TypeをAWS CLIで一括で変更する | DevelopersIO https://dev.classmethod.jp/articles/change-content-type-by-aws-cli/ ■データ転送量の確認 S3 → バケットを選択 → 管理 → メトリクス 左メニュー内にある鉛筆アイコンをクリック。 「リクエストのメトリクス」「データ転送のメトリクス」にチェックを入れて「保存」をクリック。 (片方にチェックを付けると、もう片方も強制的にチェックが付いた。) CloudWatch → メトリクス → S3 → 各フィルターのメトリクスをリクエスト で上で追加したメトリクスを確認できる。 表示されていない場合はしばらく待つ。(「リクエストのメトリクス」「データ転送のメトリクス」の設定が反映されるまでに、15分程度のタイムラグがある。) S3データ転送量のアラート設定 | ハックノート https://hacknote.jp/archives/54254/ ■CLIで操作 CLIを使えば、バケットから一括ダウンロードや一括アップロードすることができる。 詳細は、このファイル内にある「AWS CLI」の「S3を操作」を参照。 ■バケットの再作成 バケットを削除した後、すぐに同じ名前でバケットを作成しようとすると 「A conflicting conditional operation is currently in progress against this resource. Please try again.」 のようなエラーになる。 複数リージョンに分散配置されたデータが消えるまで時間がかかるようなので、1〜2時間ほどしてから再度試すといい。 AWS S3 で bucket を削除した後に再作成を試みるとうまくいかない|Sheeprograming http://sheeprogramming.iku4.com/Entry/269/ ■フォルダの扱い Amazon S3における「フォルダ」という幻想をぶち壊し、その実体を明らかにする | DevelopersIO https://dev.classmethod.jp/articles/amazon-s3-folders/ > Amazon S3には実はフォルダという概念は無いのです。 > Amazon S3の基礎技術は、単純なKVS(Key-Value型データストア)でしかありません。 ■静的サイトホスティング ※未検証。 S3に静的ページを配置し、それをWebサイトとして表示させることができる。 ただしPHPなど動的ページに対応させることはできない。 対象バケットの「プロパティ → 静的ウェブサイトホスティング」から設定できそう。 Amazon S3 を使用して静的ウェブサイトをホスティングする - Amazon Simple Storage Service https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/WebsiteHosting.html > Amazon S3 はサーバーサイドスクリプトをサポートしていませんが、 > AWSには動的ウェブサイトをホストするための他のリソースがあります。 動的ページには対応していないので、別途EC2などを使用する必要がある。 CloudFrontとS3で作成する静的サイト構成の私的まとめ | DevelopersIO https://dev.classmethod.jp/articles/s3-cloudfront-static-site-design-patterns-2022/ Amazon S3 で静的ページを公開する #AWS - Qiita https://qiita.com/tkek321/items/bfa5416c15521f541712 Basic認証を使うのは面倒そうなので、全体公開したくないページには使いづらいかもしれない。 CloudFront + S3 の静的Webサイト構築に役立つ情報まとめ | DevelopersIO https://dev.classmethod.jp/articles/useful-information-to-build-cloudfront-s3-website/ AWS S3で公開している静的サイトにBasic認証をかける #lambda - Qiita https://qiita.com/itouuuuuuuuu/items/c69eca22a5325b5a15dd CloudFrontでS3静的サイトwithベーシック認証 #AWS - Qiita https://qiita.com/a__i__r/items/cf6bd839ec2479ce7b24 ■Glacier ※未検証。 GlacierはS3よりも低コストで保存することができる。 ただしその代わりに、データの取得に時間がかかる。 古いバックアップファイルの保管などに使用できる。 【コスト削減】Glacierの特徴とAmazon S3からの移行方法を解説 https://wakka-inc.com/blog/995/ AWS S3 ストレージクラスを料金含めて比較してみた! #AWS - Qiita https://qiita.com/dtakkiy/items/0cae7ef54622a7fff2e9 私がやった Amazon S3 コストカット全ステップ | CyberAgent Developers Blog https://developers.cyberagent.co.jp/blog/archives/38950/ S3のコスト削減をやってみた #AWS - Qiita https://qiita.com/tk77/items/4c9d1ac9220e95d9ee16 ■バージョン管理 ※未検証。 今さらだけどS3のバージョニングを試してみた。 https://qiita.com/kooohei/items/8775b380632e8b7940a3 ■セキュリティ ※未検証。2018年11月18日の記事。 S3で誤ったデータの公開を防ぐパブリックアクセス設定機能が追加されました | DevelopersIO https://dev.classmethod.jp/cloud/aws/s3-block-public-access/

Advertisement