2021/07/12

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コマンドで設定する方法が簡単です。
$aws configure
このコマンドを入力すると、アクセスキー、シークレットアクセスキー、AWS リージョン、出力形式の入力が求められます。アクセスキーとシークレットアクセスキーは、AWS マネジメントコンソールから作成できます。 一度設定すると、AWS CLIにより、credentials ファイルにこれらの情報は保存されます。

s3apiコマンドの使用例

ここでは、s3apiコマンドの使用例をあげます。 以下の例では、新規に AWS S3にオブジェクトを保存します。 ローカルのC:\sample.jpgをAWS S3のバケットEXAMPLE-BUCKETにコピーします。storage-classでは以下のいずれかのストレージクラスを指定できます。ストレージクラスについては、次の節で説明します。 なお、当然ですが書き込みのパーミッションを持っている必要があります。
$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のみで出来ること

s3apiコマンドは、s3コマンドに比べてAPIレベルであり、多機能であると説明しました。 ここでは、s3apiコマンドでのみ制御可能な例をいくつか示します。 カスタム ACL の適用 s3apiコマンドでは、事前定義のアクセスコントロールリスト (ACL) を Amazon S3 オブジェクトに適用できます。つまり、特定のS3オブジェクトのアクセスコントロールの権限をコマンドラインから変更できます。 次の例では、–acl オプションを使用して、2人のAWSユーザー (taro@sample.com と hanako@sample.com) に対象バケット(MyBucket)のフルアクセス権限を適用しています。
$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活用を!

AWS s3apiは、コマンドラインからS3にアクセスできるAPIレベルのコマンドです。Amazon S3へのアクセスはさまざまな方法で行えます。 コマンドラインからのアクセスについては、高レベルとAPIレベルの2通りが提供されており、s3apiはそのうちのAPIレベルのアクセスコマンドを指します。 AWS S3上のオブジェクトへ対する操作のうち、一般的によく使われるオブジェクトの作成、コピー、移動などについては高レベルのs3コマンドでサポートされています。 ところがAWS S3には、ストレージクラスや、ログ出力アクセスコントロール等、さらに高度な多くの機能があります。 コマンドラインからこれらの機能を操作しようとしてもs3でサポートされていない場合もあり、s3apiを使用してアクセスする必要があります。 本記事では、s3apiでしかできない操作例を含めて紹介しました。s3コマンドなのかs3apiを使う必要があるのかは、行いたいタスクの内容によって見極めると良いでしょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】