いまやデフォルトで暗号化を解除することはできないようだ(デフォルトはSSE-S3(AES256))
それどころか、デュアルレイヤーの「DSSE-KMS」という新しい暗号化方式まで出てる(有償っぽい)
マネジメントコンソール上ではSSE-C(キーをクライアントから渡す方式)を有効にできない
キーをセキュアにS3に渡す必要がある為、AWS CLI経由でしか有効化できないんだって
S3のセキュリティ
ユーザーベース
IAMポリシー IAMコンソールから特定のユーザに対してどのAPIコールを許可するかを指定
リソースベース
バケットポリシー S3コンソールからのバケット全体のルール クロスアカウントを可能にする
このJSONは、Policy Generator で簡単に作成することができる
オブジェクトACL より細かい粒子
バケットACL 一般的ではない
※IAMプリンシパルは以下の場合にS3オブジェクトにアクセスできる
ユーザーのIAMポリシーでアクセス許可がある または リソースポリシーでアクセス許可がある
且つ
明確なDENYがないこと
バージョニング
有効にすると、ファイルを完全に削除することもできるようになる
パブリックアクセスのブロック設定
アカウントレベル
バケットレベル
オブジェクトレベル
CORS(Cross-Origin Resource Sharing)こるす
オリジンとは:スキーム(プロトコル)、ホスト(ドメイン)、ポート番号
例:https://www.example.com
スキーム:https ホスト:www.example.com ポート:443
同じオリジンのサイトはアクセスを許可
例:http://example.com/app1 & http://example.com/app2
異なるオリジンのサイトは、CORSヘッダー(例:Access-Control-Allow-Origin)を使用してリクエストを許可しない限りリクエストが実行されない
例:http://www
.example.com & http://other
.example.com(クロスオリジンの方にCORS設定が必要
)
プリフライト リクエスト
プリフライト レスポンス
★1つ目のバケットにindex.htmlを配置、fetchで別バケット(クロスオリジン)のextra-page.htmlを読み取る(リソースシェアリング)
オリジンバケット(isdmskz-s3)とクロスオリジンバケット(isdmskz-cors)を用意
オリジン、クロスオリジン双方で、
ブロックパブリックアクセスをオフ
静的ウェブサイトホスティングを有効
オリジン側のバケットポリシーに、クロスオリジン向けのGETメソッドを定義
クロスオリジン側のCORS設定に以下を記述
クロスオリジンの情報をちゃんと読み込んだ
Pre-signed URL
非公開バケット内のファイルを閲覧するため、一時的にアクセス許可を出したURL(長い)
これ ↓
AWS CLIで下記コマンドを実行すると払い出される
aws s3 presign s3://bucket-name/object-name --expires-in 10 --region region-name
これをブラウザに貼り付ければ、非公開バケットの中のファイルも一時的に閲覧できる
–expires は、秒単位
で有効期限
を設定できるオプション 上記のように10秒だと、10秒後以降にリロードするとDenyになる
Amazon S3 ストレージクラス 2024/6/25現在
S3 Standard | S3 Intelligent-Tiering | S3 Express One Zone | S3 Standard-IA | S3 One Zone-IA | S3 GlacierInstant Retrieval | S3 Glacier Flexible Retrieval (旧 S3 Glacier) | S3 Glacier Deep Archive | |
ユースケース | アクセス頻度が高いデータ向けの汎用ストレージ | アクセスパターンが不明または変化するデータの自動コスト削減 | 最もアクセス頻度が高いデータ向けの高性能ストレージ | ミリ秒単位のアクセスを必要とするアクセス頻度の低いデータ | アクセス頻度の低いデータを再作成可能 | 年に数回アクセスがあり、瞬時に取り出される長期間のデータ | ほとんどアクセスされない低コストのバックアップデータとアーカイブデータ | アクセス頻度が非常に低く、コストも非常に低いアーカイブデータ |
最初のバイトのレイテンシー | ミリ秒 | ミリ秒 | 1 桁台のミリ秒 | ミリ秒 | ミリ秒 | ミリ秒 | 分または時間 | 時間 |
耐久性 | Amazon S3 は、クラウドで最も耐久性の高いストレージを提供します。独自のアーキテクチャに基づいて、S3 はデータ耐久性が 99.999999999% (11 ナイン) を超えるように設計されています。さらに、S3 はデフォルトで最低 3 つのアベイラビリティーゾーンにデータを冗長的に保存するため、広範囲にわたる災害に対する回復力が組み込まれています。お客様は、データを 1 つの AZ に保存してストレージコストやレイテンシーを最小限に抑えたり、データセンター全体が永久に失われても回復できるように複数の AZ に保存したり、地理的な耐障害性要件を満たすために複数の AWS リージョンに保存したりできます。 | |||||||
可用性 | 99.99% | 99.9% | 99.95% | 99.9% | 99.5% | 99.9% | 99.99% | 99.99% |
可用性 SLA | 99.9% | 99% | 99.9% | 99% | 99% | 99% | 99.9% | 99.9% |
AZ | ≥3 | ≥3 | 1 | ≥3 | 1 | ≥3 | ≥3 | ≥3 |
最小ストレージ期間料金 | – | – | 1 時間 | 30 日間 | 30 日間 | 90 日間 | 90 日間 | 180 日間 |
取り戻し料金 | – | – | – | 取り出し GB あたり | 取り出し GB あたり | 取り出し GB あたり | 取り出し GB あたり | 取り出し GB あたり |
S3 Standard | S3 Intelligent-Tiering | S3 Express One Zone | S3 Standard-IA | S3 One Zone-IA | S3 Glacier Instant Retrieval | S3 Glacier Flexible Retrieval (旧 S3 Glacier) | S3 Glacier Deep Archive | |
ライフサイクル移行 | はい | 有 | いいえ | 有 | 有 | 有 | 有 | 有 |
ストレージコスト/月 | $0.023 | $0.0125-0.023 | $0.0125 | $0.01 | $0.004 | $0.00099 | ||
検索コスト/1,000リクエスト | $0.0004 | $0.0004 | $0.001 | $0.001 | 即時 $ | $0.0004 + 迅速 $10.00 標準 $0.05 大容量 $ 0.025 | $0.0004 + 標準 $0.10 大容量 $0.025 | |
取出し時間 | 瞬時 | 瞬時 | 瞬時 | 瞬時 | 即時 | 迅速 1~5分 標準 3~5時間 大容量 5~12時間 | 標準 12時間 大容量 48時間 | |
モニタリングコスト/1,000オブジェクト | $0.0025 |
Amazon S3 Reduced Redundancy Storage(非推奨)
S3ライフサイクルルール
ストレージクラス間でオブジェクトを移行できる(ライフサイクル設定で自動化できる)
移行アクション:オブジェクトが他のストレージクラスに移行するタイミングを定義
作成後60日でスタンダードIAクラスに移行
6か月後にGlacierに移行してアーカイブにする等
期限切れアクション:一定時間後に尾久ジェクトが期限切れになるよう設定
ログ、古いバージョンのファイル、マルチパートアップロード失敗ファイルの削除等
特定のプレフィックスに対してルールを作成できる(例:s3://mybucket/mp3/*)
特定のオブジェクトのタグに対してルールを作成できる(例:”department: finance”)
管理メニューの一番上
S3 Analytics ストレージクラス分析
S3 Standard → S3 Standard-IA に移行するタイミングを判断するための分析設定
One Zone-IA や Glacier では動作しない
最初のレポート集計には24時間~48時間かかり、その後は毎日更新される
ライフサイクルルールを考える/改善するために有用なツール
S3 ベースライン・パフォーマンス
レイテンシー 100-200ms
1秒間に少なくとも3,500件の PUT/COPY/POST/DELETEリクエスト、5,500件のGET/HEADリクエストを捌ける。
1つのバケットに含まれるプレフィックスの数に制限はない
バケット名/フォルダ名/サブフォルダ名/
ファイル名 ←ここがプレフィックス
SSE-KMSを使用している場合は、KMSの制限の影響を受ける可能性あり
アップロードの際にはGenerateDataKey KMS APIが呼び出されるし
ダウンロードの際にはDecrypt KMS APIが呼び出されるため
1秒あたりのKMSの上限:リージョンによって異なる(5,500、10-,000、30,000req/s…)
マルチパートアップロード
推奨:100MB以上のファイル
必須:5GB以上のファイル
アップロードの並列化(いくつかのチャンクに分割)によって転送を高速化
S3 Transfer Acceleration
エッジロケーションにファイルを転送し、ターゲットリージョンのS3バケットにデータを転送することで転送速度を向上
マルチパートアップロードに対応
アメリカ オーストラリア
ファイル → www → エッジロケーション → private AWS → S3バケット
S3 バイト・レンジフェッチ(いわばマルチパートのダウンロード)
特定のバイト範囲を要求することによるGETの並列化
→ データヘッダのバイトレンジだけ要求することも可能(便利!)
S3 Select & Glacier Select
SQL文を使用してフィルターして取得する機能(Select命令で合致した行列だけをダウンロードできるぽ)
対象:CSVやJSONなど、特定の形式のファイル
S3 イベント通知
SQSにイベントを通知
あ