初めに
この記事では、意図的に UnknownHostException を発生させる環境を作り出す方法について調査した結果を共有します。これにより、ネットワーク設定やDNSに関連する例外が発生する状況を再現できます。
手順
1. JavaでS3へのファイル配置プログラムの作成
以下は、S3バケットにファイルをアップロードするシンプルなJavaプログラムです。UnknownHostException を発生させる実験に使用します。
try {
var filename = //ファイル名
var region = //AWSのRegion
var bucket = //バケット名
S3Client s3 = S3Client.builder().region(region).build();
PutObjectRequest putOb = PutObjectRequest.builder().bucket(bucket).key(filename).build();
s3.putObject(putOb, RequestBody.empty());
} catch (Exception e){
e.printStackTrace();
}
このプログラムは、指定されたS3バケットに対してファイルをアップロードします。後述する手順でDNS設定を変更し、UnknownHostException を発生させます。
2. WidnwosPCのDNSを設定する
- [設定] ⇒ [ネットワークとインターネット] ⇒ [Wi-Fi] ⇒ [アダプターのオプションを変更する] に移動します
- 使用しているネットワークアダプターのプロパティを開き、[インターネットプロトコルバージョン4 (TCP/IPv4)] を選択してプロパティを開きます
- [次のDNSサーバーのアドレスを使う] を選択し、存在しないDNSサーバーのIPアドレスを入力します。これにより、ネットワークが正しいDNSにアクセスできなくなり、エラーが発生します
まとめ
この手順を使用して、意図的に UnknownHostException を発生させることができました。このエラーは、DNSが正しく解決できない場合に発生しますが、他にもネットワーク設定やサーバーの応答に問題がある場合にも発生します。ネットワークやDNS周りの問題を再現したい場合に、この方法が有効です。