AWS SDK for Java (v1) の近日発表
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
DNS 名参照用の JVM TTL の設定
Java 仮想マシン (JVM) は DNS 名参照をキャッシュします。JVM がホスト名を IP アドレスに解決すると、time-to-live(TTL) と呼ばれる指定された期間、IP アドレスがキャッシュされます。
AWS リソースは DNS 名エントリを使用するため、JVM の TTL 値は 60 秒以下に設定することをお勧めします。これにより、リソースの IP アドレスが変更されたときに、アプリケーションは DNS に対して再度クエリを実行することで、リソースの新しい IP アドレスを取得し、使用できるようになります。
一部の Java 設定では JVM のデフォルトの TTL が設定されるため、JVM が再起動されるまで、DNS エントリが更新されることはありません。したがって、アプリケーションがまだ実行中に AWS リソースの IP アドレスが変更された場合、JVM を手動で再起動してキャッシュされた IP 情報が更新されるまで、そのリソースを使用することはできません。この場合、キャッシュされた IP 情報が定期的に更新されるように JVM の TTL を設定することが極めて重要です。
注記
JVM のバージョンと、セキュリティマネージャー
JVM TTL の設定方法
JVM の TTL を変更するには、networkaddress.cache.ttl
-
グローバルに、JVM を使用するすべてのアプリケーションが対象。Java 8 の
$JAVA_HOME/jre/lib/security/java.security
ファイル、または Java 11 以降の$JAVA_HOME/conf/security/java.security
ファイルでnetworkaddress.cache.ttl
を設定します。networkaddress.cache.ttl=60
-
アプリケーションのみが対象の場合は、アプリケーションの初期化コードで
networkaddress.cache.ttl
を設定します。java.security.Security.setProperty("networkaddress.cache.ttl" , "60");