

# Amazon S3 とは
<a name="Welcome"></a>

 Amazon Simple Storage Service (Amazon S3) は、業界をリードするスケーラビリティ、データ可用性、セキュリティ、およびパフォーマンスを提供するオブジェクトストレージサービスです。あらゆる規模や業界のお客様が、Amazon S3 を使用して、データレイク、ウェブサイト、モバイルアプリケーション、バックアップおよび復元、アーカイブ、エンタープライズアプリケーション、IoT デバイス、ビッグデータ分析など、広範なユースケースのデータを容量にかかわらず、保存して保護することができます。Amazon S3 には、特定のビジネス、組織、コンプライアンスの要件を満たすために、データへのアクセスを最適化、整理、設定できる管理機能があります。

このガイドでは、Amazon S3 REST API を使用してクラウドにデータを保存および取得するアプリケーションを構築する方法について、開発者向けの情報を提供します。

REST API を使用する場合、HTTP をサポートする任意のツールキットを使用できます。匿名で読み取り可能なオブジェクトであれば、ブラウザを使用して取得することもできます。

REST API は標準の HTTP ヘッダーとステータスコードを使用するため、標準のブラウザとツールキットが予期したとおりに機能します。一部のエリアでは、HTTP に機能が追加されています (例: アクセスコントロールをサポートするヘッダー)。このような場合、標準的な HTTP の使用スタイルに合致する方法で新機能が追加されています。

**注記**  
HTTP 経由の SOAP のサポートは廃止されましたが、HTTPS 経由では引き続き利用可能です。ただし、SOAP では、Amazon S3 の新機能はサポートされなくなります。以下のリンクにある REST API または AWS SDK を使用することをお勧めします。  
[https://aws.amazon.com/developer/tools/](https://aws.amazon.com/developer/tools/?nc1=f_dr)

このデベロッパーガイドには以下が含まれます。
+ [一般的なリクエストヘッダー](RESTCommonRequestHeaders.md) および [共通のレスポンスヘッダー](RESTCommonResponseHeaders.md) 
+ [エラーレスポンス](ErrorResponses.md) 
+ [POST (AWS 署名バージョン 4) を使用したブラウザベースのアップロード](sigv4-UsingHTTPPOST.md) 

**重要**  
特定の API トピックに進む前に、認証とアクセスコントロールについて以下をお読みください。

Amazon S3 へのリクエストは、認証または匿名で行うことができます。認証を使用してのアクセスには、AWS がリクエストを認証するために使用できる認証情報が必要です。

## API コールのレコメンデーション
<a name="APICallRecs"></a>

コードから直接 REST API コールを行うのは手間がかかる場合があります。リクエストを認証するための有効な署名を計算するために必要なコードを記述する必要があります。代わりに、次の代替方法をお勧めします。
+ [AWS SDK](https://aws.amazon.com/developer/tools/?nc1=f_dr) を使用してリクエストを送信します。

  また、[サンプルコードとライブラリ](https://aws.amazon.com/code)も参照してください。

  SDK を使用する場合、SDK クライアントは指定したアクセスキーを使用してリクエストを認証するため、リクエスト認証の署名を計算するコードを記述する必要はありません。正当な理由がない限り、常に AWS SDK を使用してください。
+ AWS CLI を使用して Amazon S3 API コールを行います。AWS CLI のセットアップと Amazon S3 コマンドの例については、以下のトピックを参照してください。

   「*Amazon Simple Storage Service ユーザーガイド*」の「[AWS CLI のセットアップ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/setup-aws-cli.html)」。

   「*AWS Command Line Interface ユーザーガイド*」の「[AWS コマンドラインインターフェイスでの Amazon S3 の使用](https://docs.aws.amazon.com/cli/latest/userguide/cli-s3.html)」。

## 直接 REST API コールを行う
<a name="MakingRestAPICalls"></a>

**注記**  
`PUT` リクエストヘッダーのサイズは 8 KB に制限されています。PUT リクエストヘッダー内のシステム定義メタデータのサイズは 2 KB に制限されています。システム定義メタデータのサイズは、キーと値の各ペアを US−ASCII にエンコードしたバイト数の合計に基づいて測定されます。

上記の代替方法のいずれかを使用する代わりに独自の REST API コールを行う場合は、いくつかの点に留意する必要があります。
+ コードから直接 REST API コールを行うには、有効な認証情報を使用して署名を作成し、リクエストにその署名を含めます。さまざまな認証方法と署名の計算については、「[リクエストの認証 (AWS 署名バージョン 4)](sig-v4-authenticating-requests.md)」を参照してください。
+ REST API は標準の HTTP ヘッダーとステータスコードを使用するため、標準のブラウザとツールキットが予期したとおりに機能します。一部のエリアでは、HTTP に機能が追加されています (例: アクセスコントロールをサポートするヘッダー)。このような場合、標準的な HTTP の使用スタイルに合致する方法で新機能が追加されています。リクエストの実行の詳細については、「[リクエストの実行](MakingRequests.md)」を参照してください。

## アクセス許可
<a name="Permissions"></a>

リクエストを認証するために有効な認証情報を持つことができますが、アカウント所有者またはバケット所有者からの S3 のアクセス許可を持っていなければ Amazon S3 リソースを作成またはアクセスすることはできません。これらのアクセス許可は通常、バケットポリシーなどの AWS Identity and Access Management (IAM) [ポリシー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html#security_iam_access-manage)を通じて付与されます。例えば、S3 バケットを作成したり、バケット内のオブジェクトを取得したりするには、アクセス許可が必要です。S3 のアクセス許可の一覧については、「[Amazon S3 のアクション、リソース、および条件キー](/service-authorization/latest/reference/list_amazons3.html)」を参照してください。

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[Amazon S3 API オペレーションに必要なアクセス許可](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-policy-actions.html)」を参照してください。

AWS アカウントのルートユーザー認証情報を使用する場合は、すべてのアクセス許可があります。ただし、ルートユーザーの認証情報は使用しないことをお勧めします。代わりに、アカウントに AWS Identity and Access Management (IAM) ロールを作成し、ユーザーのアクセス許可を管理することをお勧めします。詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[アクセス管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-management.html)」を参照してください。