AWSコラム
AWSエンジニアのためのブログメディア

AWS s3apiとは? s3apiコマンドの概要と使用例をご紹介!

2021年07月12日

AWS s3apiとは?


AWS s3apiとは、AWS CLI(コマンドラインインタフェース)からAmazon S3 APIへの直接アクセスが出来るAPIレベルのコマンドです。

Amazon S3へのアクセス方法はWebコンソール、API、コマンドライン等さまざまな方法がありますが、コマンドラインからのアクセスについては、高レベルとAPIレベルの2通り提供されており、s3apiはそのうちのAPIレベルのアクセスコマンドを指します。

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 リージョン、出力形式の入力が求められます。アクセスキーとシークレットアクセスキーは、AWS マネジメントコンソールから作成できます。

一度設定すると、AWS CLIにより、credentials ファイルにこれらの情報は保存されます。

s3apiコマンドの使用例


ここでは、s3apiコマンドの使用例をあげます。

以下の例では、新規に AWS S3にオブジェクトを保存します。

ローカルのC:\sample.jpgをAWS S3のバケットEXAMPLE-BUCKETにコピーします。storage-classでは以下のいずれかのストレージクラスを指定できます。ストレージクラスについては、次の節で説明します。

なお、当然ですが書き込みのパーミッションを持っている必要があります。



次の例では、AWS S3からオブジェクトを取得します。

具体的には、AWS CLI の get-object コマンドを実行してsample.jpgをダウンロードし、ローカルに保存します。


ストレージクラスとは

s3apiに関連して、AWS S3のストレージクラスについて触れておきます。

ストレージクラスとは、AWSストレージの使用料金を最適化する目的でデータの格納方式を指定出来る概念です。

AWS S3ストレージに置くデータは、用途によって使用頻度がさまざまです。システム上、頻繁にアクセスするデータもありますが、バックアップ用途であまりアクセスが発生しないデータもあります。

これらの用途・目的によって、コスト的に最適なストレージは変わります。そこで、ストレージクラスという概念を用いてユーザーが最適なストレージを選択できるようにしています。

次の表に、ストレージクラスの一覧を示します。一般的なデータだとSTANDARDが適しますが、バックアップなどで頻繁にアクセスしないのであれば、GRACIERを選択することでストレージのコストを低減できます。

ストレージクラス 用途
STANDARD デフォルトのストレージクラス。アクセス頻度の高いデータ。
STANDARD_IA アクセスが頻繁ではないデータ。標準に比べてオブジェクト格納料金が安価だが読み出しに課金あり。
ONEZONE_IA STANDARD_IAより安価で、データの読み出しに課金あり。
GRACIER アクセスが頻繁でないアーカイブデータ用。リアルタイムアクセスができない。STANDARDと比較して非常に安価。

s3apiのみで出来ること


s3apiコマンドは、s3コマンドに比べてAPIレベルであり、多機能であると説明しました。

ここでは、s3apiコマンドでのみ制御可能な例をいくつか示します。

カスタム ACL の適用
s3apiコマンドでは、事前定義のアクセスコントロールリスト (ACL) を Amazon S3 オブジェクトに適用できます。つまり、特定のS3オブジェクトのアクセスコントロールの権限をコマンドラインから変更できます。

次の例では、–acl オプションを使用して、2人のAWSユーザー (taro@sample.com と hanako@sample.com) に対象バケット(MyBucket)のフルアクセス権限を適用しています。



オブジェクトのストレージクラスを確認
バケット(–bucket)とプリフィックス(–prefix)を指定してlist-objects-v2 コマンドを実行します。このコマンドに対するレスポンスで、S3上での対象オブジェクトのストレージクラスを確認できます。



ここではs3apiでのみ可能な、APIレベルでの操作例を示しました。

なお、s3apiで他に使用可能なコマンドは、以下で確認できます。用途に応じて利用すると良いでしょう。


AWS s3apiでAPIレベルでのS3活用を!


AWS s3apiは、コマンドラインからS3にアクセスできるAPIレベルのコマンドです。Amazon S3へのアクセスはさまざまな方法で行えます。

コマンドラインからのアクセスについては、高レベルとAPIレベルの2通りが提供されており、s3apiはそのうちのAPIレベルのアクセスコマンドを指します。

AWS S3上のオブジェクトへ対する操作のうち、一般的によく使われるオブジェクトの作成、コピー、移動などについては高レベルのs3コマンドでサポートされています。

ところがAWS S3には、ストレージクラスや、ログ出力アクセスコントロール等、さらに高度な多くの機能があります。

コマンドラインからこれらの機能を操作しようとしてもs3でサポートされていない場合もあり、s3apiを使用してアクセスする必要があります。

本記事では、s3apiでしかできない操作例を含めて紹介しました。s3コマンドなのかs3apiを使う必要があるのかは、行いたいタスクの内容によって見極めると良いでしょう。


AWS分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)
FEnetからご応募→夢テクノロジー入社でお祝い金最大120万円プレゼント

Search

Popular

reccomended

Categories

Tags