かりんちゃんの随心遊戯日誌

ゲームの日記、たまに政治の話、香港の話

ちょっとプログラミングの話 AWS SDK v3

今日はちょっと違う話題です。プログラミングの話。

 

実にいうと、仕事のとあるプロジェクトがAWS SDK v3に移行しようという話が出てきました。それはまあ、別にいいんですけど、色々と調べると、仕様がかなり変わったので、今まで使ってたものが全然通用しないという難点。

要件定義では送受信のTLSハンドシェイクを計算しないといけない部分があるので、ここが引っかかります。今までv2では、InvokeオブジェクトからTLSSocketオブジェクトを取得し、そこからソケットのBytesReadとBytesWrittenを取り出して、そこからTLSハンドシェイクを計算するんだが、AWS SDK v3ではそういう部分が完全に隠されたのです。

 

移行はまだ検討段階だから急ぐことではないが、将来のことを考えて、やはりこの部分はいずれ解決しなければならない。ということでソースコードレベルで色々と調査してみた。

 

結論というと、AWS SDK v3のClientが、HttpResponseオブジェクトをまるごと廃棄されたようです。v3ではSmithy-Clientというものを利用していて、そのSendコマンドではResultのResponseオブジェクト(HttpResponseオブジェクト)を無視し、Output(フォーマットされた)のみ返却されたという感じ。


あいにく、ソケットレベルのものはHttpResponseオブジェクトにあるのです。

 

ということで、解決策はLamdaそのものをExtendsし、Sendコマンドをオーバライドすることになった。


まあ、ほぼコピペするだけだが、SendメソッドのHandlerのところに、result.responseを保存するように改造すれば良いことです。

 

無事解決、めでたしめでたし。