23

botocore が送信する PreparedRequest の属性を表示できましたが、AWS に送信された正確なリクエスト文字列をどのように表示できるのか疑問に思っています。AWS 呼び出しをテストしている別のアプリケーションと比較するには、正確なリクエスト文字列が必要です。

4

2 に答える 2

8

したがって、おそらくやりたいことは、プロキシ (mitmproxy、squid) を介してリクエストを送信することです。次に、プロキシで何が送信されたかを確認します。HTTPS データは暗号化されているため、最初に復号化してから応答をログに記録し、暗号化して AWS に送信する必要があります。オプションの 1 つはmitmproxyを使用することです。(インストールは本当に簡単です)

  1. mitmproxy を実行します
  2. 別のターミナルを開き、プロキシを mitmproxys ポートに向けます。

    export http_proxy=127.0.0.1:8080
    export https_proxy=$http_proxy
    
  3. 次にverify=False、セッション/クライアントの作成時に設定します

    In [1]: import botocore.session
    
    In [2]: client = botocore.session.Session().create_client('elasticache', verify=False)
    
  4. リクエストを送信し、mitmproxy の出力を確認します

    In [3]: client.describe_cache_engine_versions()
    
  5. 結果は次のようになります。

    Host:             elasticache.us-east-1.amazonaws.com
    Accept-Encoding:  identity
    Content-Length:   53
    Content-Type:     application/x-www-form-urlencoded
    Authorization:    AWS4-HMAC-SHA256 Credential=FOOOOOO/20150428/us-east-1/elasticache/aws4_request, SignedHeaders=host;user-agent;x-amz-date, Signature=BAAAAAAR
    X-Amz-Date:       20150428T213004Z
    User-Agent:       Botocore/0.103.0 Python/2.7.6 Linux/3.13.0-49-generic
    
<?xml version='1.0' encoding='UTF-8'?>
<DescribeCacheEngineVersionsResponse
xmlns="http://elasticache.amazonaws.com/doc/2015-02-02/">  
<DescribeCacheEngineVersionsResult>
    <CacheEngineVersions>
      <CacheEngineVersion>
      <CacheParameterGroupFamily>memcached1.4</CacheParameterGroupFamily>
    <Engine>memcached</Engine>
    <CacheEngineVersionDescription>memcached version 1.4.14</CacheEngineVersionDescription>
    <CacheEngineDescription>memcached</CacheEngineDescription>
    <EngineVersion>1.4.14</EngineVersion>
于 2015-04-28T21:49:00.110 に答える