Amazon S3 on Outposts とは
AWS Outposts は、同じ AWS インフラストラクチャ、AWS サービス、API、およびツールを実質的にあらゆるデータセンター、コロケーションスペース、またはオンプレミスの施設に提供するフルマネージドサービスであり、真に一貫性のあるハイブリッドエクスペリエンスを実現します。AWS Outposts は、オンプレミスシステムへの低レイテンシーアクセス、ローカルデータ処理、データレジデンシー、およびローカルシステムの相互依存性を持つアプリケーションの移行に必要なワークロードに最適です。詳細については、『AWS Outposts ユーザーガイド』の「What is AWS Outposts? ( とは?)」 を参照してください。
Amazon S3 on Outposts を使用すると、S3 バケットを Outposts に作成して、オンプレミスでのオブジェクトの保存と取得を容易に行うことができます。S3 on Outposts は、OUTPOSTS
という新しいストレージクラスを提供し、これは Amazon S3 API を使用し、Outposts の複数のデバイスとサーバー間でデータを永続的かつ冗長的に保存するように設計されています。仮想プライベートクラウド (VPC) を介したアクセスポイントとエンドポイント接続を使用して、Outposts バケットと通信します。
Outposts バケットでは、Amazon S3 と同じ API と機能 (アクセスポリシー、暗号化、タグ付けなど) を使用できます。AWS Management Console、AWS Command Line Interface (AWS CLI)、AWS SDK、または REST API を使用して S3 on Outposts を使用できます。
S3 on Outposts のしくみ
S3 on OOutposts は、オブジェクトストレージサービスであり、データを Outpost 上のバケット内にオブジェクトとして保存します。オブジェクトとは、データファイルと、そのファイルを記述する任意のメタデータのことです。バケット とは、オブジェクトのコンテナのことです。
S3 on Outposts にデータを保存するには、まずバケットを作成します。バケットを作成するときには、バケット名とバケットを保持する Outpost を指定します。S3 on Outposts バケットにアクセスしてオブジェクト操作を実行するには、次にアクセスポイントを作成して設定します。アクセスポイントにリクエストをルーティングするエンドポイントも作成する必要があります。
アクセスポイントは、S3 にデータを保存するあらゆる AWS サービス やお客様のアプリケーションのデータアクセスを簡素化します。アクセスポイントは、バケットにアタッチされた名前付きのネットワークエンドポイントであり、GetObject
や PutObject
などのオブジェクト操作を実行するために使用できます。各アクセスポイントには、個別の許可とネットワーク制御があります。
AWS Management Console、AWS CLI、AWS SDK、または REST API を使用して、S3 on Outposts バケット、アクセスポイント、およびエンドポイントの作成と管理ができます。S3 on Outposts バケット内のオブジェクトをアップロードおよび管理するには、AWS CLI、AWS SDK、または REST API を使用できます。
リージョン
AWS Outposts プロビジョニング時、ユーザーまたは AWS は、バケット操作とテレメトリ用に、Outpost を選択した AWS リージョン または Outposts ホームリージョンに接続するサービスリンク接続を作成します。Outpost は、親 AWS リージョン への接続性に依存します。Outposts ラックは、切断された操作や接続がない環境向けに設計されていません。詳細については、「AWS Outposts ユーザーガイド」の「AWS リージョン への Outpost の接続性」を参照してください。
バケット
バケットとは、S3 on Outposts に保存されるオブジェクトのコンテナです。バケットにはオブジェクトをいくつでも保存でき、1 つの Outpost には 1 つのアカウントにつき最大 100 個のバケットを保存できます。
バケットを作成するときには、バケット名を入力し、バケットが存在する Outpost を選択します。バケットの作成後は、バケット名を変更したり、バケットを別の Outpost に移動したりすることはできません。バケット名は、Amazon S3 バケットの命名規則に従う必要があります。S3 on Outposts では、バケット名は Outpost と AWS アカウント に対して一意です、S3 on Outposts バケットには、バケットを識別するための outpost-id
、account-id
、およびバケット名が必要です。
以下の例では、S3 on Outposts バケットの Amazon リソースネーム (ARN) 形式を示しています。ARN は、Outpost が属するリージョン、Outpost アカウント、Outpost ID、およびバケット名で構成されます。
arn:aws:s3-outposts:
region
:account-id
:outpost/outpost-id
/bucket/bucket-name
すべてのオブジェクトはバケット内に保存されます。Outposts バケット内の任意のオブジェクトにアクセスするには、アクセスポイントを使用する必要があります。オブジェクト操作のためにバケットを指定するときには、アクセスポイント ARN またはアクセスポイントエイリアスを使用します。アクセスポイントエイリアスの詳細については、「S3 on Outposts アクセスポイントでのバケット形式のエイリアスの使用」を参照してください。
次の例は、outpost-id
、account-id
、アクセスポイント名を含む S3 on Outposts のアクセスポイント ARN 形式を示しています。
arn:aws:s3-outposts:
region
:account-id
:outpost/outpost-id
/accesspoint/accesspoint-name
バケットの詳細については、「S3 on Outposts バケットの操作」を参照してください。
オブジェクト
オブジェクトは、S3 on Outposts に保存される基本エンティティです。オブジェクトは、オブジェクトデータとメタデータで構成されます。メタデータは、オブジェクトを表現する名前と値のペアのセットです。これには最終更新日などのデフォルトメタデータや、Content-Type
などの標準 HTTP メタデータが含まれます。また、オブジェクトの保存時にカスタムメタデータを指定することもできます。オブジェクトは、キー (または名前) によってバケット内で一意に識別されます。
Amazon S3 on Outposts では、オブジェクトデータは常に Outpost に保存されます。AWS が Outpost ラックを設置すると、データの常駐要件を満たすために、データは Outpost にローカルに保たれます。オブジェクトが Outpost を離れたり、AWS リージョン 外に出たりすることはありません。AWS Management Consoleはリージョン内でホストされるため、コンソールを使用して Outpost にオブジェクトをアップロードしたり、管理したりすることはできません。ただし REST API、AWS Command Line Interface (AWS CLI)、および AWS SDK を使用して、アクセスポイントを介してオブジェクトのアップロードと管理を行うことができます。
キー
オブジェクトキー (または キー名) は、バケット内のオブジェクトの固有の識別子です。バケット内のすべてのオブジェクトは、厳密に 1 個のキーを持ちます。バケットとオブジェクトキーの組み合わせで、各オブジェクトを一意に識別します。
次の例は、S3 on Outposts オブジェクトの ARN 形式を示し、これは、Outpost が属するリージョンの AWS リージョン コード、AWS アカウント ID、Outpost ID、バケット名、およびオブジェクトキーを含みます。
arn:aws:s3-outposts:
us-west-2
:123456789012
:outpost/op-01ac5d28a6a232904
/bucket/
amzn-s3-demo-bucket1
/object/myobject
オブジェクトキーの詳細については、「S3 on Outposts オブジェクトの操作」を参照してください。
S3 バージョニング
Outposts バケットの S3 バージョニングを使用して、オブジェクトの複数のバリアントを同じバケットに保持できます。S3 バージョニングを使用すると、 バケットに保存されたあらゆるオブジェクトのあらゆるバージョンを保存、取得、復元することができます。S3 バージョニングによって、意図しないユーザーアクションやアプリケーション障害から復旧できます。
詳細については、「S3 on Outposts バケットの S3 バージョニングの管理」を参照してください。
バージョン ID
バケットで S3 バージョニングを有効にすると、S3 on Outposts はバケットに追加されたすべてのオブジェクトに一意のバージョン ID を与えます。バージョニングを有効にした時点でバケットにすでに存在していたオブジェクトのバージョン ID は null
です。これらの (またはその他の) オブジェクトを他のオペレーション (PutObject) で変更すると、新しいオブジェクトは一意のバージョン ID を取得します。
詳細については、「S3 on Outposts バケットの S3 バージョニングの管理」を参照してください。
ストレージクラスと暗号化
S3 on Outposts は、新しいストレージクラスである S3 Outposts (OUTPOSTS
) を提供します。S3 Outposts のストレージクラスは、AWS Outposts のバケットに保存されたオブジェクトに対してのみ使用できます。S3 on Outposts で他の S3 ストレージクラスを使用しようとすると、S3 on Outposts は InvalidStorageClass
エラーを返します。
デフォルトでは、S3 Outposts (OUTPOSTS
) ストレージクラスに保存されたオブジェクトは、Amazon S3 マネージド暗号化キーによるサーバー側の暗号化 (SSE-S3) を使用して暗号化されます。詳細については、「S3 on Outposts のデータ暗号化」を参照してください。
バケットポリシー
バケットポリシーは、リソースベースの AWS Identity and Access Management (IAM) ポリシーを使用して、バケットとその中のオブジェクトへのアクセス許可を付与できます。バケット所有者のみが、ポリシーをバケットに関連付けることができます。バケットに添付された許可は、バケット所有者が所有するバケットのすべてのオブジェクトに適用されます。バケットポリシーのサイズは 20 KB に制限されています。
バケットポリシーは、AWS で標準である JSON ベースの IAM ポリシー言語を使用します。バケットポリシーを使用して、バケット内のオブジェクトに対する許可を追加または拒否できます。バケットポリシーは、ポリシーの要素に基づいて、リクエストを許可または拒否します。これらの要素には、リクエスタ、S3 on Outposts アクション、リソース、およびリクエストの側面または条件 (リクエストの作成に使用された IP アドレスなど) が含まれます。例えば、バケット所有者がアップロードされるオブジェクトの完全コントロールを持っていることを確認しつつ、S3 on Outposts バケットにオブジェクトをアップロードするクロスアカウント許可を付与するバケットポリシーを作成できます。詳細については、「Amazon S3 バケットポリシーの例」を参照してください。
バケットポリシーでは、ARN やその他の値でワイルドカード文字 (*
) を使用して、オブジェクトのサブセットに対する許可を付与できます。例えば、共通のプレフィックスで始まるか、.html
などの特定の拡張子で終わるオブジェクトのグループへのアクセスをコントロールできます。
S3 on Outposts アクセスポイント
S3 on Outposts アクセスポイントは、名前付きネットワークエンドポイントであり、そのエンドポイントを使用してデータにアクセスする方法を記述した専用のアクセスポリシーを持ちます。アクセスポイントは、S3 on Outposts の共有データセットへの大規模なデータアクセスの管理を簡素化します。アクセスポイントは、バケットにアタッチされ、それを使用して、GetObject
や PutObject
などの S3 オブジェクト操作を実行できます。
オブジェクト操作のためにバケットを指定するときには、アクセスポイント ARN またはアクセスポイントエイリアスを使用します。アクセスポイントエイリアスの詳細については、「S3 on Outposts アクセスポイントでのバケット形式のエイリアスの使用」を参照してください。
アクセスポイントには、そのアクセスポイントを介して行われるすべてのリクエストに S3 on Outposts が適用する個別の許可とネットワークコントロールがあります。各アクセスポイントは、基になるバケットにアタッチされたバケットポリシーと連動して機能するカスタマイズされたアクセスポイントポリシーを適用します。
詳細については、「S3 on Outposts のバケットおよびオブジェクトにアクセスする」を参照してください。
S3 on Outposts の機能
アクセス管理
S3 on Outposts には、バケットとオブジェクトへのアクセスを監査および管理する機能があります。デフォルトでは、S3 on Outposts バケットとそれらの中のオブジェクトはプライベートです。自分が作成した S3 on Outposts リソースにのみアクセスできます。
以下の機能を使用して、特定のユースケースをサポートする詳細なリソース許可を付与したり、S3 on Outposts リソースの許可を監査したりできます。
-
S3 ブロックパブリックアクセス – バケットおよびオブジェクトへのパブリックアクセスをブロックします。Outposts のバケットの場合、デフォルトでは、[パブリックアクセスをブロック] は常に有効です。
-
AWS Identity and Access Management (IAM) — IAM は、AWS リソース (S3 on Outposts リソースなど) へのアクセスを安全に管理するためのウェブサービスです。IAM を使用すると、ユーザーがアクセスできる AWS のリソースを制御するアクセス許可を集中管理できます。IAM を使用して、誰を認証 (サインイン) し、誰にリソースの使用を認可する (アクセス許可を付与する) かを制御します。
-
S3 on Outposts アクセスポイント - S3 on Outposts の共有データセットへのデータアクセスを管理します。アクセスポイントは、専用アクセスポリシーを持つ名前付きネットワークエンドポイントです。アクセスポイントは、バケットにアタッチされ、
GetObject
やPutObject
などのオブジェクト操作を実行するために使用できます。 -
バケットポリシー – IAM ベースのポリシー言語を使用して、S3 バケットとその中のオブジェクトに対するリソースベースの許可を設定します。
-
AWS Resource Access Manager (AWS RAM) — S3 on Outposts の容量を AWS アカウント 間、組織内、または AWS Organizations の組織単位 (OU) 内で安全に共有します。
ストレージのログ記録とモニタリング
S3 on Outposts には、S3 on Outposts リソースの使用状況をモニタリングおよびコントロールするためのロギングおよびモニタリングツールが用意されています。詳細については、「モニタリングツール 」を参照してください。
-
S3 on Outposts 用の Amazon CloudWatch メトリクス - リソースの運用状態を追跡し、容量の可用性を把握します。
-
S3 on Outposts 用 Amazon CloudWatch Events イベント — S3 on Outposts API イベントのルールを作成して、Amazon Simple Queue Service (Amazon SQS)、Amazon Simple Notification Service (Amazon SNS)、AWS Lambda など、サポートされているすべての CloudWatch Events ターゲットを通じて通知を受信します。
-
AWS CloudTrailS3 on Outposts のログ — S3 on Outposts でユーザー、ロール、または AWS サービス によって実行されたアクションを記録します。CloudTrail ログを使用すると、S3 バケットレベルおよびオブジェクトレベルのオペレーションの詳細な API 追跡が可能になります。
強力な整合性
S3 on Outposts は、すべての AWS リージョン の S3 on Outposts バケット内のオブジェクトの PUT リクエストと DELETE リクエストについて、書き込み後読み取りの強力な整合性を提供します。この動作は、新しいオブジェクトの書き込みと、既存のオブジェクトを上書きする PUT リクエストの両方に適用され、DELETE リクエストにも適用されます。さらに、S3 on Outposts オブジェクトタグとオブジェクトメタデータ (HEAD オブジェクトなど) には、強力な整合性があります。詳細については、「Amazon S3 のデータ整合性モデル」を参照してください。
関連サービス
S3 on Outputs にロードしたデータは、他の AWS サービス で使用できます。よく使用すると思われるサービスは次のとおりです。
-
Amazon Elastic Compute Cloud (Amazon EC2) – 安全でスケーラブルなコンピューティング容量を AWS クラウド で提供します。Amazon EC2 の使用により、ハードウェアに事前投資する必要がなくなり、アプリケーションをより速く開発およびデプロイできます。Amazon EC2 を使用すると、必要な数 (またはそれ以下) の仮想サーバーの起動、セキュリティおよびネットワーキングの構成、ストレージの管理ができます。
-
Outposts 上の Amazon Elastic Block Store - Outposts 上で Amazon EBS ローカルスナップショットを使用して、S3 on Outposts に Outpost のボリュームのスナップショットをローカルに保存できます。
-
Outposts 上の Amazon Relational Database Service (Amazon RDS) — Amazon RDS ローカルバックアップを使用して、Amazon RDS バックアップを Outpost にローカルに保存できます。
-
AWS DataSync - Outposts と AWS リージョン 間のデータ転送を自動化して、転送する対象、転送するタイミング、使用するネットワーク帯域幅を選択できます。S3 on Outposts は、 と統合されていますAWS DataSync 高スループットのローカル処理を必要とするオンプレミスアプリケーションの場合、S3 on Outposts は、データ転送とネットワーク変動からのバッファを最小限に抑えるオンプレミスのオブジェクトストレージだけでなく、Outposts と AWS リージョン 間でデータを簡単に転送する機能も提供します。
S3 on Outposts へのアクセス
S3 on Outposts は、次のいずれかの方法で使用できます。
AWS Management Console
コンソールは、S3 on Outposts と AWS リソースのウェブベースのユーザーインターフェイスです。AWS アカウント にサインアップ済みの場合は、AWS Management Console にサインインし、AWS Management Console ホームページから [S3] を選択することで、S3 on Outposts にアクセスできます。次に、左のナビゲーションペインから [Outposts buckets] (Outposts バケット) を選択します。
AWS Command Line Interface
AWS コマンドラインツールを使用して、コマンドを発行するか、システムのコマンドラインでスクリプトを作成して AWS (S3 を含む) タスクを実行します。
AWS Command Line Interface (AWS CLI)
AWS SDK
AWS には、さまざまなプログラミング言語およびプラットフォーム (Java、Python、Ruby、.NET、iOS、Android など) のライブラリとサンプルコードで構成された SDK (ソフトウェア開発キット) が用意されています。AWS SDK は、S3 on Outposts と AWS へのプログラムによるアクセスを作成するのに役立ちます。S3 on Outposts は Amazon S3 と同じ SDK を使用するため、S3 on Outposts は同じ S3 API、自動化、およびツールを使用して、一貫したエクスペリエンスを提供します。
S3 on Outposts は REST サービスです。AWS SDK ライブラリを使用して S3 on Outposts にリクエストを送信できます。これは、基盤となる REST API をラップして、プログラミングタスクを簡素化します。例えば、SDK は署名の計算、リクエストの暗号化による署名、エラーの管理、リクエストの自動再試行などのタスクを処理します。AWS SDK のダウンロードやインストールなどの詳細については、「AWS での構築ツール
S3 on Outposts の支払い
Amazon EC2 インスタンスタイプ、Amazon EBS 汎用ソリッドステートドライブ (SSD) ボリューム (gp2
)、および S3 on Outposts の組み合わせを特徴とするさまざまな AWS Outposts ラック構成を購入できます。価格設定には、配送、設置、インフラストラクチャサービス保守、、およびソフトウェアパッチとアップグレードが含まれます。
詳細については、「AWS Outposts ラックの料金
次のステップ
S3 on Outposts の使用の詳細については、以下のトピックを参照してください。