LoginSignup
0
0

AWS CLI・SDKのデバッグログを有効にする・通信をキャプチャする

Last updated at Posted at 2020-12-15

AWS CLI・SDKがコールするAPIのリクエスト・レスポンスを見る方法。

AWS CLI v2

方法1. --debugオプション

aws s3 ls --debug

とするとリクエスト・レスポンスが表示される(DEBUG - Sending http request:DEBUG - Response body:の部分)。

方法2. mitmproxyを使う

mitmproxy -p 8888で起動済みとする。

export HTTPS_PROXY=http://127.0.0.1:8888
aws s3 ls --no-verify-ssl

または

export HTTPS_PROXY=http://127.0.0.1:8888
aws s3 ls --ca-bundle ~/.mitmproxy/mitmproxy-ca-cert.pem

~/.mitmproxy/mitmproxy-ca-cert.pemが見つからない場合は、

curl -x 127.0.0.1:8888 'http://mitm.it/cert/pem' > mitmproxy-ca-cert.pem

で入手できるはず。

AWS SDK

方法1. デバッグログを有効にする(AWS SDK for JavaScript v2)

const AWS = require("aws-sdk");

AWS.config.update({
    logger: console,
});

// AWS.config.updateの後でnewしないとダメ。あるいはこのコンストラクタの引数にlogger:consoleを含めても良い
const lambda = new AWS.Lambda({ region: "ap-northeast-1" });

async function main() {
    await lambda.listFunctions({ MaxItems: 10 }).promise();
}

main();

上記コードを実行すると以下のようなログが表示される。

[AWS lambda 200 0.363s 0 retries] listFunctions({ MaxItems: 10 })

このログはメソッドが終了する直前に出されるらしく、リトライ中にプロセスが死んだりした場合には何も出力されない。
https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/logging-sdk-calls.html

方法2. mitmproxyを使う(AWS SDK for JavaScript v2)

公式ドキュメントNode.js 用のプロキシの設定 - AWS SDK for JavaScriptの通り。

$ npm install proxy-agent
const AWS = require("aws-sdk");
const proxy = require("proxy-agent");

AWS.config.update({
    httpOptions: { agent: proxy("http://127.0.0.1:8888") },  // プロキシを指定
    sslEnabled: false,  // SSLをオフにする。公式エンドポイントリストにHTTPSしか載っていなくてもHTTPで通るようだ(DynamoDBで実験済み)
});

sslEnabled: falseにしないと

(node:37757) UnhandledPromiseRejectionWarning: Error: self signed certificate in certificate chain

というエラーになってしまった。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0