DynamoDBに限った話ではなく、AWS-SDK全般に言える事なのですが、デフォルトはHTTPS通信を行います。
これはClientConfiguration
クラスの設定によるものなのですが、SSL処理はまぁ比較的重いものです。特に高負荷環境においては結構気になるものです。
DynamoDBを例に取ると、AmazonDynamoDBClient.setRegion(日本リージョン)
をした時にendpointとしてhttps://dynamodb.ap-northeast-1.amazonaws.com
を設定します。この時にClientConfiguration.getProtocol()
でHTTPSのスキーマを設定しています。
なので、setRegionする前に、ClientConfiguration.setRegion(Protocol.HTTP)
をすればHTTPで通信する事ができます。
これを調べていた過程で気になったのは、EC2インスタンスからアクセスした場合、Internal通信なのかPublic通信なのか。ものによっては(RDSとかは)Internal通信になるとかあるのですがDynamoDBの場合は、Publicアクセスっぽい。Publicインターフェースを持っている/いないに関わらず、DNSはPublicIPを返してきます。
DynamoDBにはVPC Endpointが無いのがなぁ..
https://forums.aws.amazon.com/message.jspa?messageID=701530
(SDKのソースを見てたらS3はHTTPSじゃないとダメだよってassertがあるっぽい)
参考: https://docs.aws.amazon.com/ja_jp/general/latest/gr/rande.html