コントロールプレーンとデータプレーンの概念から考えるAWS CLIでのS3コマンドの分類方法

記事タイトルとURLをコピーする

こんにちは!現在IE課で研修中の日高です。
皆さんCLI使っていますか??私はまだまだ使えていません...
ということで、AWS CLIを使えるようになるために、今回はAWS CLIの構造とS3関連のコマンドについて調べてみました。

AWS CLIの構造

まず、AWS CLIの構造について簡単に触れていきます。
AWS CLIにおけるコマンドの構造は以下の通り4つに分けることができます。

aws <command> <subcommand> [options and parameters]
  • aws:プログラムのベースコールになっておりAWS CLIを使う場合は必ず記載します。
  • command:AWS CLIの操作対象のサービスを入力します(ec2やs3などが入ります)
  • subcommandcommandにて指定したサービスに対してどのような操作を行うかを決定します
  • [options and parameters]:AWS CLI のオプションまたはパラメータを入力します

※AWS CLIの操作対象(command)の一覧については以下をご覧ください
subcommandは、AWS CLI Command Referenceから各サービスのページに飛ぶことで確認することができます

awscli.amazonaws.com

※コマンドラインオプションについては詳しくは以下をご覧ください

docs.aws.amazon.com

※AWS CLI の一般的なパラメータタイプについては詳しくは以下をご覧ください

docs.aws.amazon.com

AWS CLI Command ReferenceでS3のコマンド調査

AWS CLI Command ReferenceにてS3の commandについて調べてみました。
調べる前はS3のAWS CLIのコマンドは aws s3 ~ だろうなと思っていましたが、調べてみると4個の s3がつくcommandが存在していました。

何が違うのか調べてみると各ページに以下のように書いていました。

s3

【Description抜粋】

This section explains prominent concepts and notations in the set of high-level S3 commands provided. If you are looking for the low level S3 commands for the CLI, please see the s3api command

【日本語訳】

このセクションでは、提供される高レベルのS3コマンドのセットで主要な概念と表記を説明します。 CLI用の低レベルのS3コマンドを探している場合は、s3apiコマンドリファレンスページを参照してください。

【コマンド例】
S3のオブジェクトを削除するコマンドです

aws s3 rm  <target> [--options]

s3api

Description記載なしのためAWS CLI での API レベル (s3api) コマンドの使用抜粋

API レベルのコマンド (s3api コマンドセットに含まれる) は、Amazon Simple Storage Service (Amazon S3) API への直接アクセスを提供し、高レベルの s3 コマンドでは公開されていない一部の操作を有効にします。

【コマンド例】
S3のバケット一覧を表示するコマンドです

aws s3api list-buckets

s3control

【Description抜粋】

Amazon Web Services S3 Control provides access to Amazon S3 control plane actions.

【日本語訳】

Amazon Web Services S3 Controlは、Amazon S3コントロールプレーンアクションへのアクセスを提供します。

【コマンド例】
指定したアカウントIDの過去 に終了したジョブを一覧表示するコマンドです

aws s3control list-jobs --account-id アカウントID

s3outposts

【Description抜粋】

Amazon S3 on Outposts provides access to S3 on Outposts operations.

【日本語訳】

Amazon S3 on Outpostsは、S3 on Outpostsのオペレーションへのアクセスを提供します。

【コマンド例】
エンドポイントを作成し、それを指定された Outpost に関連付けるコマンドです

aws s3outposts create-endpoint  [options and parameters]

ここまでの段階でS3のコマンドには一般的に利用する高レベルのもの(s3)とより細やかな処理が可能な低レベル(s3api)のもの、そして S3 on Outpostsの操作をするもの(s3outposts)があるという事が分かりました。
ただ、s3controの説明にあるコントロールプレーンという言葉は初めて聞いたため何を指しているのか理解できませんでした。
ということで、コントロールプレーンについて調べてみました。

※Amazon S3 on Outposts は、オンプレミスの AWS Outposts 環境にオブジェクトストレージを提供するサービスなので、S3というよりはAWS Outpostsのサービスの一部なため、今後はs3s3apis3controlについて見ていきます。

コントロールプレーンとデータプレーンの概念

docs.aws.amazon.com

調べていくと、ほとんどの AWS サービスではコントロールプレーンとデータプレーンの概念に分けられるという事が分かりました。

  • コントロールプレーン:リソースを決定し、必要な場所に反映させるもので管理APIを提供する基盤のことです。
  • データプレーン:用意されたとおりに動作する、サービスの主要な機能を提供する基盤の事です。

少しイメージしづらいのでEC2を例に見てみます。

物理サーバの決定、VPC内ENIの割当、EBSの準備、IAM情報作成、セキュリティグループ設定などはコントロールプレーンに分類され、VPC のルートテーブルに従ってパケットをルーティングする、EBS ボリュームの読み取りと書き込みなどはデータプレーンに分類されます。

S3のコマンド分類

先ほどのコントロールプレーンとデータプレーンの概念をつかって s3s3apis3controlを分類すると以下のようになります。

s3control:S3 のコントロールプレーンの API を実行するコマンド
s3api:S3 のデータプレーンの API を実行するコマンド
s3:人間が分かりやすく、オブジェクトおよびバケットの作成、操作、削除など、一般的なタスクの実行を簡素化する高レベルのコマンド

まとめ

今回はS3のコマンドの分類について調べました。
CLIを使えるようになるという目標とは少し離れたところの内容でしたが個人的にはスッキリしました。

今後、s3s3apis3controlの各コマンドについて勉強してブログを書いていけたらいいなと考えています。
本記事が誰かのお力になれば幸いです。

日高 僚太(執筆記事の一覧)

EC部ソリューションアーキテクト2課 / AWS認定資格 12冠

2022年IT未経験で新卒入社しました。
最近はダーツとサウナが気になっています!
記事に関するお問い合わせや修正依頼⇒ hidaka@serverworks.co.jp