この記事の目次
AWS s3apiとは?

s3コマンドとs3apiコマンドの違い
s3コマンドとs3apiコマンドの違いについて説明します。 s3コマンド(高レベル) s3コマンドは、オブジェクトやバケットの作成、操作、削除など、一般的なタスクの実行ができるコマンドです。 s3apiコマンド(APIレベル) s3apiコマンドは、Amazon S3 APIと同様のことができます。オブジェクトやバケットの作成、操作、削除等に加えて、さらに詳細な操作ができます。 s3コマンドとs3apiコマンドでは、出来ることが違い、一般的なタスクであればs3コマンドで十分ですが、s3apiコマンドではさらに出来ることが増えます。用途によってどちらかを選ぶ必要があります。 一般的な用途であればs3で十分ですが、s3apiではさらに複雑なことができ、S3の高度な機能を使用できます。その代わり、s3apiは理解しなければいけない概念が増えます。次の節で例を示します。s3apiコマンドの準備
s3apiコマンドの使用例を示す前に、事前準備が必要です。 AWS CLIコマンドを利用する場合には、あらかじめデフォルトの認証情報を設定する必要があります。以下のaws configureコマンドで設定する方法が簡単です。$aws configure
このコマンドを入力すると、アクセスキー、シークレットアクセスキー、AWS リージョン、出力形式の入力が求められます。アクセスキーとシークレットアクセスキーは、AWS マネジメントコンソールから作成できます。
一度設定すると、AWS CLIにより、credentials ファイルにこれらの情報は保存されます。
s3apiコマンドの使用例

$aws s3api put-object --bucket EXAMPLE-BUCKET --key sample.jpg --body c:\sample.jpg --storage-class STANDARD_IA
次の例では、AWS S3からオブジェクトを取得します。
具体的には、AWS CLI の get-object コマンドを実行してsample.jpgをダウンロードし、ローカルに保存します。
$aws s3api get-object --bucket EXAMPLE-BUCKET1 --key sample.jpg Outputfile.jpg
ストレージクラスとは
s3apiに関連して、AWS S3のストレージクラスについて触れておきます。 ストレージクラスとは、AWSストレージの使用料金を最適化する目的でデータの格納方式を指定出来る概念です。 AWS S3ストレージに置くデータは、用途によって使用頻度がさまざまです。システム上、頻繁にアクセスするデータもありますが、バックアップ用途であまりアクセスが発生しないデータもあります。 これらの用途・目的によって、コスト的に最適なストレージは変わります。そこで、ストレージクラスという概念を用いてユーザーが最適なストレージを選択できるようにしています。 次の表に、ストレージクラスの一覧を示します。一般的なデータだとSTANDARDが適しますが、バックアップなどで頻繁にアクセスしないのであれば、GRACIERを選択することでストレージのコストを低減できます。ストレージクラス | 用途 |
---|---|
STANDARD | デフォルトのストレージクラス。アクセス頻度の高いデータ。 |
STANDARD_IA | アクセスが頻繁ではないデータ。標準に比べてオブジェクト格納料金が安価だが読み出しに課金あり。 |
ONEZONE_IA | STANDARD_IAより安価で、データの読み出しに課金あり。 |
GRACIER | アクセスが頻繁でないアーカイブデータ用。リアルタイムアクセスができない。STANDARDと比較して非常に安価。 |
s3apiのみで出来ること

$aws s3api put-bucket-acl --bucket MyBucket --grant-full-control 'emailaddress="taro@sample.com",emailaddress="hanako@sample.com"''
オブジェクトのストレージクラスを確認
バケット(–bucket)とプリフィックス(–prefix)を指定してlist-objects-v2 コマンドを実行します。このコマンドに対するレスポンスで、S3上での対象オブジェクトのストレージクラスを確認できます。
$ aws s3api list-objects-v2 --bucket YOUR-BUCKET --prefix storage-class
ここではs3apiでのみ可能な、APIレベルでの操作例を示しました。
なお、s3apiで他に使用可能なコマンドは、以下で確認できます。用途に応じて利用すると良いでしょう。
$aws s3api help
AWS s3apiでAPIレベルでのS3活用を!
