LoginSignup
1
0

More than 1 year has passed since last update.

AmazonHttpClientにて、プロキシが自動で設定されてしまうことにハマった

Last updated at Posted at 2022-06-21

背景

ある日、DynamoDBをローカルで動かすようなプログラムをいつものように実行したら、プロキシ関係のエラーではまった。
結局は単純だったが、かなり時間かけてしまったので、ほかに自分みたいな人間が生まれないように、記録。

起きたこと

JavaプログラムからAWS SDkを使用して、Awsのサービスにアクセスしようとした。
これまでは、問題なくアクセスできていたが、サービスにアクセスできない事態が発生。

スタックトレースには、以下のエラーが発生。

com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: null (Service: AmazonDynamoDBv2; Status Code: 502; Error Code: null; Request ID: null; Proxy: proxy.*****)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1862)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1415)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1384)
	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1154)

原因

少し前にAWS CLIからインスタンスの起動と停止をできるように、システム環境変数に

  • HTTPS_PROXY
  • HTPP_PROXY

を追加した。

以下に記載があるが、AmazonHttpClientは、システムプロパティと、システム環境変数を見にいくような実装になっている。

そのため、意図しない形で、プロキシ設定が対象のアプリケーションに設定されてしまっていた。

AmazonDynamoDB のクライアント作成メソッド内で、
引数のclientConfigurationは特に何も指定せずデフォルトでクライアントビルダーを生成している。
そしてAmazonDynamoDBClient.build()を実行すると、内部的に、SystemのProperty("http.proxyHost")と同期され、
設定されていなければ、SystemのEnv(HTTP(S)_PROXY)と同期しに行くようになっている。

1
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
1
0