ヤマムギ

growing hard days.

*

AWS APIリクエストにPostmanで署名を作成する

   

新年明けましておめでとうございます!

署名バージョン4

「AWSはマネジメントコンソールからもCLIからもSDKからの操作も、APIにリクエストが実行されています。
そしてそのリクエストには署名バージョン4の署名が必要です。
でも、CLIやSDKはそのあたりをやってくれるので便利でしょ?」

って話を聞いたことあると思うのですが、じゃあCLIやSDK使わずにAPIリクエストってどうやってやるんでしょ?
というと、こちら公式の
署名バージョン 4 を使用してAWS リクエストに署名するに手順があります。
* タスク 1: 署名バージョン4の正規リクエストを作成する
* タスク 2: 署名バージョン4の署名文字列を作成する
* タスク 3: AWS署名バージョン4の署名を計算する
* タスク 4: HTTPリクエストに署名を追加する
こうすることで、認証セキュリティを高めているのですね。

ふむふむ。面倒ですね。

ということで、Postmanで試しました。

AWS APIリクエストをPostmanで試しました

S3のバケット一覧を表示します。
CLIでは「aws s3 ls」に該当する操作です。
リファレンスを見ると、APIエンドポイントは「s3.amazonaws.com」のようです。

GETリクエストで、ホストをs3.amazonaws.comに設定しました。
S3のバケット一覧が見えるs3:ListALlMyBucketsアクションを許可したユーザーのアクセスキーIDとシークレットアクセスキーを、PostmanのAWS Signatureに設定しました。
あと、ADVANCEDのService NameにS3を設定しました。
これをしないと、X-Amz-Content-Sha256ヘッダーができなくてエラーになりました。

設定をすると、Postmanが自動的にヘッダーにAuthorization、X-Amz-Content-Sha256、X-Amz-Dateを作ってくれました。

Authorizationヘッダの内容はこちらでした。

AWS4-HMAC-SHA256
Credential=AKIAYEXAMPLESSS/20201228/us-east-1/s3/aws4_request,
SignedHeaders=host;x-amz-content-sha256;x-amz-date,
Signature=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

公式ユーザーガイドの以下の説明に合致してました。
署名に使用したアルゴリズム (AWS4-HMAC-SHA256)
認証情報スコープ (アクセスキーIDを含む)
署名付きヘッダーの一覧
計算された署名。この署名はリクエスト情報に基づいており、AWSシークレットアクセスキーを使用して署名を生成します。署名により、AWSのIDが確認されます。

レスポンスはこちらでした。

ではでは、2021年もよろしくお願いいたします!


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS ,

  関連記事

AWS WAF Web ACLとルールをv1(Classic)からv2に自動移行しました

新しいものは、課題が解決されていたり、機能追加されたりするのでいいものです。 長 …

新規アカウントでAWS Budgetsの設定をしました

新規で組織を作ってAWS Budgetsを久しぶりに設定しました。 作成してすぐ …

Amazon API GatewayをLambda(Python)で削除する

やりたいこと 特定のAWSアカウント、特定のリージョン内のAPI Gateway …

AWS WAFのマネージドルールを見てみました

Web ACLで[Add managed rule groups]を選択しました …

試そうとしてたらSavings Plans買っちゃいました

Savings Plansの購入画面を確認していました。 画面遷移も確認しようと …

Lambda関数をPython3.6から3.9に変更

CodeGuru ProfilerでLambda関数(Python 3.9)のパ …

AWS EC2 インスタンスステータスのチェックで失敗して起動しなくなり復旧

EC2のインスタンスに接続出来なくなったので、AMIから作成してElastic …

AWS Cost Explorerの設定で「EC2リソースの推奨事項を受け取る」を有効にしました

「EC2リソースの推奨事項を受け取る」という機能がAWS Cost Explor …

AWS WAFの個別ルールを設定する

Web ACLを選択して、[Add my own rules and rule …

AWS CodePipeline クロスアカウントアクセスパイプライン

AWS CodePipelineでクロスアカウントアクセスのパイプライン作成手順 …