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

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コマンドで設定する方法が簡単です。
1
|
$aws configure
|
このコマンドを入力すると、アクセスキー、シークレットアクセスキー、AWS リージョン、出力形式の入力が求められます。アクセスキーとシークレットアクセスキーは、AWS マネジメントコンソールから作成できます。
一度設定すると、AWS CLIにより、credentials ファイルにこれらの情報は保存されます。
s3apiコマンドの使用例
ここでは、s3apiコマンドの使用例をあげます。
以下の例では、新規に AWS S3にオブジェクトを保存します。
ローカルのC:\sample.jpgをAWS S3のバケットEXAMPLE-BUCKETにコピーします。storage-classでは以下のいずれかのストレージクラスを指定できます。ストレージクラスについては、次の節で説明します。
なお、当然ですが書き込みのパーミッションを持っている必要があります。
1
|
$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をダウンロードし、ローカルに保存します。
1
|
$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のみで出来ること
s3apiコマンドは、s3コマンドに比べてAPIレベルであり、多機能であると説明しました。
ここでは、s3apiコマンドでのみ制御可能な例をいくつか示します。
カスタム ACL の適用
s3apiコマンドでは、事前定義のアクセスコントロールリスト (ACL) を Amazon S3 オブジェクトに適用できます。つまり、特定のS3オブジェクトのアクセスコントロールの権限をコマンドラインから変更できます。
次の例では、–acl オプションを使用して、2人のAWSユーザー (taro@sample.com と hanako@sample.com) に対象バケット(MyBucket)のフルアクセス権限を適用しています。
1
|
$aws s3api put-bucket-acl --bucket MyBucket --grant-full-control 'emailaddress="taro@sample.com",emailaddress="hanako@sample.com"''
|
オブジェクトのストレージクラスを確認
バケット(–bucket)とプリフィックス(–prefix)を指定してlist-objects-v2 コマンドを実行します。このコマンドに対するレスポンスで、S3上での対象オブジェクトのストレージクラスを確認できます。
1
|
$ aws s3api list-objects-v2 --bucket YOUR-BUCKET --prefix storage-class
|
ここではs3apiでのみ可能な、APIレベルでの操作例を示しました。
なお、s3apiで他に使用可能なコマンドは、以下で確認できます。用途に応じて利用すると良いでしょう。
1
|
$aws s3api help
|
AWS s3apiでAPIレベルでのS3活用を!
AWS s3apiは、コマンドラインからS3にアクセスできるAPIレベルのコマンドです。Amazon S3へのアクセスはさまざまな方法で行えます。
コマンドラインからのアクセスについては、高レベルとAPIレベルの2通りが提供されており、s3apiはそのうちのAPIレベルのアクセスコマンドを指します。
AWS S3上のオブジェクトへ対する操作のうち、一般的によく使われるオブジェクトの作成、コピー、移動などについては高レベルのs3コマンドでサポートされています。
ところがAWS S3には、ストレージクラスや、ログ出力アクセスコントロール等、さらに高度な多くの機能があります。
コマンドラインからこれらの機能を操作しようとしてもs3でサポートされていない場合もあり、s3apiを使用してアクセスする必要があります。
本記事では、s3apiでしかできない操作例を含めて紹介しました。s3コマンドなのかs3apiを使う必要があるのかは、行いたいタスクの内容によって見極めると良いでしょう。
Search キーワード検索
Popular 人気の記事
-
AWS EBSとは?8つの特徴とEBSボリュームについても解説
公開: 更新: -
AWSのT2とT3の違いとは?用途に合った選択をしよう!
公開: 更新:
reccomended おすすめ記事
-
AWSエンジニアの将来性は?年収と必要なスキル6つをご紹介!
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
通信キャリア向け基盤構築/東京都渋谷区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/在宅ワーク
月給65万~65万円東京都渋谷区(神泉駅) -
各種対応/東京都新宿区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給60万~60万円東京都新宿区(高田馬場駅) -
要件定義、構築/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給60万~60万円東京都千代田区(飯田橋駅) -
運用構築/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給56万~56万円東京都千代田区(飯田橋駅) -
監視システムの保守、更改/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給55万~55万円東京都千代田区(神保町駅) -
各種対応/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】
月給60万~60万円東京都千代田区(虎ノ門駅)