いまやデフォルトで暗号化を解除することはできないようだ(デフォルトはSSE-S3AES256))

それどころか、デュアルレイヤーの「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 StandardS3
Intelligent-Tiering
S3 Express
One Zone
S3 Standard-IAS3
One Zone-IA
S3 Glacier
Instant 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%
可用性 SLA99.9%99%99.9%99%99%99%
99.9%99.9%
AZ≥3≥31≥31≥3≥3≥3
最小ストレージ期間料金1 時間30 日間30 日間90 日間90 日間180 日間
取り戻し料金取り出し GB あたり取り出し GB あたり取り出し GB あたり取り出し GB あたり取り出し GB あたり
S3 StandardS3
Intelligent-Tiering
S3 Express
One Zone
S3 Standard-IAS3
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にイベントを通知


 あ