はじめに
こんにちは ! テクニカルトレーナーの杉本圭太です !
最近読んで面白かった漫画は「ブレス」(著 : 園山ゆきの) です。
先月に引き続き AWS の API や AWS Command Line Interface (AWS CLI)、AWS SDK に関する内容の記事をお届けします !
今回は “中級編” として、AWS は利用しているよという方を対象に、より踏み込んだ内容にしてみました。
最後には記事の内容にまつわるクイズも用意していますのでお楽しみに ( ・∀・)=b
前回の記事 では AWS の API がどのようなものかを紹介しました。
しかし前回の知識のみで AWS のエンドポイントへリクエストを送れば誰でも AWS のサービスを利用できるのかというと、実はできません。それだけだと AWS のアカウントを作成せずに AWS のサービスが利用できたり、勝手に他人のリソースを操作できてしまうからです。そのため AWS の API には「リクエストの署名」と呼ばれる、どのアカウントの誰がリクエストを送信したかを判断できる仕組みがあります。
では「リクエストの署名」の仕組みとはどのようなものなのでしょうか。言葉自体初めて聞いた方もいるかもしれません。なぜなら AWS マネジメントコンソール、AWS CLI 、AWS SDK があればリクエストの署名を意識しなくても AWS を利用できるからです。
ですが今回の記事では、AWS の API を利用する上で欠かせないけどあまり表に出ることはないリクエストの署名が、どんな仕組みなのかをポイントを絞って解説します。
それだけではなく、AWS マネジメントコンソール、AWS CLI、AWS SDK を利用したときに何が起きているのかも、簡単に紹介します !

builders.flash メールメンバー登録
リクエストの署名とは
今回の一番のテーマである「リクエストの署名」とは何なのか?を解説していきます。理解するためのキーポイントは「認証情報」と「署名バージョン 4 (SigV4)」です。それぞれどんなものかを確認しましょう !
リクエストの署名プロセス
リクエストの署名プロセスは公式ドキュメントの「AWS リクエストへの署名」で、以下の 4 つのタスクに分けて記載されています。
- タスク 1 : 署名バージョン 4 の正規リクエストを作成する
- タスク 2 : 署名バージョン 4 の署名文字列を作成する
- タスク 3 : AWS 署名バージョン 4 の署名を計算する
- タスク 4 : HTTP リクエストに署名を追加する
今回はその中からポイントを抜粋して「署名」とはどのような情報を使ってどのように出来上がるのかを、ドキュメントの例にある通り IAM の ListUsers のリクエストに SigV4 の署名プロセスを行う場合で確認していきます。
タスク
AWS マネジメントコンソール
AWS CLI
AWS SDK
例えばデータベースに DynamoDB を利用したり、サービス同士の連携に SQS キューを利用したりなど、AWS のサービスと統合するアプリケーションを開発する場合、Tools to Build on AWS に記載されている開発言語であれば AWS SDK を利用できます。各言語の AWS SDK の詳細を知りたい場合は、それぞれのドキュメントをご確認ください。

AWS SDK について
まとめ
普段はあまり意識することのない、AWS API を支えてくれているリクエスト署名や、AWS のツールを使うことの便利さを再認識できたところで、“中級編” はここまでです。次回は “上級編” として、AWS の API に関する小ネタをいくつか紹介する予定ですのでお楽しみに !
またプログラミングはある程度できるけど、今回紹介した AWS SDK の使い方を学んでみたいなという方は、Developing on AWS というトレーニングコースを受講してみてください。AWS SDK の基本的な使い方や AWS のサーバーレスサービスの基本を学び、演習では AWS SDK を利用したアプリケーションを構築していく内容なのでおすすめです !
最後に今回もクイズで知識の確認や腕試しをしてみましょう !
クイズ
問題
もしかすると知っていれば役に立つかもしれない、そんな内容のクイズを AWS CLI バージョン 2 の範囲で作ってみました ! 問題の下をスクロールすると正解がありますので、少し考えてから確認してみてください !
AWS CLI の出力結果をクライアント側でフィルタリングするオプションは何でしょうか ?
AWS CLI の --output で指定できる形式を全て挙げると何があるでしょうか ?
AWS CLI の再試行 (retry) モードで指定できる形式を全て挙げると何があるでしょうか ?
↓ (正解はこちら) ↓
正解
1. --query
AWS CLI のクライアントフィルタリングについてはこちら
JMESPath 構文 を利用することで、かなり柔軟に出力結果から必要な情報だけを絞ることができるため、使いこなせるとシェルスクリプトを書くときなどに便利です !
2. json、yaml、yaml-stream、text、table
AWS CLI の出力形式についてはこちら
現時点では 5 つあります、用途に合わせて適切なものを選択しましょう!text 形式は awk コマンドと組み合わせるときに役立ちます!
3. レガシー、標準、アダプティブ
AWS CLI のリトライについてはこちら
レガシーと標準で、デフォルトの最大再試行回数や、再試行対象のエラー / 例外が異なります。AWS CLI バージョン 2 のデフォルトは標準再試行モードです。
筆者プロフィール
杉本 圭太
アマゾン ウェブ サービス ジャパン合同会社
トレーニングサービス本部 テクニカルトレーナー
新しいことを知るのが好きなので、多くの人に「AWS を知るのは面白い ! もっと学んでみよう ! 活用しよう !」と思っていただけるよう工夫しながらテクニカルトレーナーをしています。
最近は面白い漫画が増えすぎていて、時間が足りなくて困っています。

Did you find what you were looking for today?
Let us know so we can improve the quality of the content on our pages