Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
HTTP-Proxys konfigurieren
Sie können HTTP-Proxys mithilfe von Code, durch Festlegen von Java-Systemeigenschaften oder durch Festlegen von Umgebungsvariablen konfigurieren.
Im Code konfigurieren
Sie konfigurieren Proxys im Code mit einem kundenspezifischen ProxyConfiguration Builder, wenn Sie den Service-Client erstellen. Der folgende Code zeigt eine Beispiel-Proxykonfiguration für einen Apache-based HTTP-Client, der von einem Amazon S3-Serviceclient verwendet wird.
SdkHttpClient httpClient1 = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://proxy.example.com")) .username("username") .password("password") .addNonProxyHost("localhost") .build()) .build(); S3Client s3Client = S3Client.builder() .httpClient(httpClient) .build();
Der Abschnitt für jeden HTTP-Client in diesem Thema zeigt ein Beispiel für eine Proxykonfiguration.
Konfigurieren Sie HTTP-Proxys mit externen Einstellungen
Auch wenn Sie im Code nicht explizit einen ProxyConfiguration Builder verwenden, sucht das SDK nach externen Einstellungen, um eine Standard-Proxykonfiguration zu konfigurieren.
Standardmäßig sucht das SDK zuerst nach JVM-Systemeigenschaften. Wenn auch nur eine Eigenschaft gefunden wird, verwendet das SDK den Wert und alle anderen Systemeigenschaftswerte. Wenn keine Systemeigenschaften verfügbar sind, sucht das SDK nach Proxy-Umgebungsvariablen.
Das SDK kann die folgenden Java-Systemeigenschaften und Umgebungsvariablen verwenden.
| Systemeigenschaft | Description | Unterstützung für HTTP-Clients |
|---|---|---|
|
http.ProxyHost |
Hostname des HTTP-Proxyservers |
Alle |
|
http.ProxyPort |
Portnummer des HTTP-Proxyservers |
Alle |
| http.proxyUser |
Benutzername für die HTTP-Proxyauthentifizierung |
Alle |
|
http.proxyPasswort |
Passwort für die HTTP-Proxy-Authentifizierung |
Alle |
| http.non ProxyHosts |
Liste der Hosts, die unter Umgehung des Proxys direkt erreicht werden sollen. Diese Liste ist auch gültig, wenn HTTPS verwendet |
Alle |
| https.ProxyHost |
Hostname des HTTPS-Proxyservers |
Netty, CRT |
|
https.proxyport |
Portnummer des HTTPS-Proxyservers |
Netty, CRT |
| https.proxy-Benutzer |
Benutzername für die HTTPS-Proxyauthentifizierung |
Netty, CRT |
| https.proxy-Passwort | Passwort für die HTTPS-Proxyauthentifizierung | Netty, CRT |
| Umgebungsvariable | Description | Unterstützung für HTTP-Clients |
|---|---|---|
| HTTP_PROXY 1 |
Eine gültige URL mit einem HTTP-Schema |
Alle |
|
HTTPS_PROXY 1 |
Eine gültige URL mit einem HTTPS-Schema |
Netty, CRT |
| KEIN PROXY 2 |
Liste der Hosts, die unter Umgehung des Proxys direkt erreicht werden sollen. Die Liste ist sowohl für HTTP als auch für HTTPS gültig. |
Alle |
Alle — Alle vom SDK angebotenen HTTP-Clients—UrlConnectionHttpClient,, ApacheHttpClientNettyNioAsyncHttpClient,AwsCrtAsyncHttpClient.
Netty - Der Netty-based HTTP-Client (NettyNioAsyncHttpClient).
CRT - Die AWS CRT-based HTTP-Clients, (AwsCrtHttpClientundAwsCrtAsyncHttpClient).
1 Ob HTTP_PROXY oder, welche Umgebungsvariable abgefragt wirdHTTPS_PROXY, hängt von der Schemaeinstellung im Client ab. ProxyConfiguration Das Standardschema ist HTTP. Der folgende Ausschnitt zeigt, wie das Schema auf HTTPS geändert wird, das für die Auflösung von Umgebungsvariablen verwendet wird.
SdkHttpClient httpClient = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .scheme("https") .build()) .build();
2 Die NO_PROXY Umgebungsvariable unterstützt eine Mischung aus den Trennzeichen „|“ und „,“ zwischen Hostnamen. Informationen zu unterstützten Platzhalterformaten finden Sie unter. Verhalten, das keine ProxyHosts Platzhalter ist
Verwenden Sie eine Kombination von Einstellungen
Sie können eine Kombination aus HTTP-Proxyeinstellungen in Code, Systemeigenschaften und Umgebungsvariablen verwenden.
Beispiel— Konfiguration, die durch eine Systemeigenschaft und durch Code bereitgestellt wird
// Command line with the proxy password set as a system property. $ java -Dhttp.proxyPassword=SYS_PROP_password -cp ... App // Since the 'useSystemPropertyValues' setting is 'true' (the default), the SDK will supplement // the proxy configuration in code with the 'http.proxyPassword' value from the system property. SdkHttpClient apacheHttpClient = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://localhost:1234")) .username("username") .build()) .build(); // Use the apache HTTP client with proxy configuration. DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .httpClient(apacheHttpClient) .build();
Das SDK löst die folgenden Proxyeinstellungen auf.
Host = localhost Port = 1234 Password = SYS_PROP_password UserName = username Non ProxyHost = null
Beispiel— Sowohl Systemeigenschaften als auch Umgebungsvariablen sind verfügbar
Der ProxyConfiguration Builder jedes HTTP-Clients bietet Einstellungen mit dem Namen useSystemPropertyValues unduseEnvironmentVariablesValues. In der Standardeinstellung sind beide Einstellungentrue. Wenntrue, verwendet das SDK automatisch Werte aus Systemeigenschaften oder Umgebungsvariablen für Optionen, die nicht vom ProxyConfiguration Builder bereitgestellt werden.
Wichtig
Systemeigenschaften haben Vorrang vor Umgebungsvariablen. Wenn eine HTTP-Proxy-Systemeigenschaft gefunden wird, ruft das SDK alle Werte aus den Systemeigenschaften ab und keine aus den Umgebungsvariablen. Wenn Sie Umgebungsvariablen Vorrang vor Systemeigenschaften einräumen möchten, setzen Sie useSystemPropertyValues den Wert auf. false
Für dieses Beispiel sind die folgenden Einstellungen zur Laufzeit verfügbar:
// System properties http.proxyHost=SYS_PROP_HOST.com http.proxyPort=2222 http.password=SYS_PROP_PASSWORD http.user=SYS_PROP_USER // Environment variables HTTP_PROXY="http://EnvironmentUser:EnvironmentPassword@ENV_VAR_HOST:3333" NO_PROXY="environmentnonproxy.host,environmentnonproxy2.host:1234"
Der Service-Client wird mit einer der folgenden Anweisungen erstellt. Keine der Anweisungen legt explizit eine Proxyeinstellung fest.
DynamoDbClient client = DynamoDbClient.create(); DynamoDbClient client = DynamoDbClient.builder().build(); DynamoDbClient client = DynamoDbClient.builder() .httpClient(ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .build()) .build()) .build();
Die folgenden Proxyeinstellungen werden vom SDK aufgelöst:
Host = SYS_PROP_HOST.com Port = 2222 Password = SYS_PROP_PASSWORD UserName = SYS_PROP_USER Non ProxyHost = null
Da der Service-Client über Standard-Proxyeinstellungen verfügt, sucht das SDK nach Systemeigenschaften und dann nach Umgebungsvariablen. Da die Einstellungen der Systemeigenschaften Vorrang vor Umgebungsvariablen haben, verwendet das SDK nur Systemeigenschaften.
Wenn die Verwendung von Systemeigenschaften so geändert wird, false wie im folgenden Code gezeigt, löst das SDK nur die Umgebungsvariablen auf.
DynamoDbClient client = DynamoDbClient.builder() .httpClient(ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .useSystemPropertyValues(Boolean.FALSE) .build()) .build()) .build();
Die mithilfe von HTTP aufgelösten Proxyeinstellungen lauten wie folgt:
Host = ENV_VAR_HOST Port = 3333 Password = EnvironmentPassword UserName = EnvironmentUser Non ProxyHost = environmentnonproxy.host, environmentnonproxy2.host:1234
Verhalten, das keine ProxyHosts Platzhalter ist
Mit nonProxyHosts können Sie die Hosts angeben, die den Proxy umgehen. Stellen Sie diesen Wert über den ProxyConfiguration Builder, die http.nonProxyHosts Systemeigenschaft oder die NO_PROXY Umgebungsvariable ein. Jede Quelle unterstützt die folgenden Eingabeformate.
-
Exakter Host:
example.com(entspricht nur dem angegebenen Host) -
Führender Platzhalter:
*.example.com(entspricht der Domain und allen Subdomains) -
Bloßer Platzhalter:
*(umgeht alle Hosts) -
CIDR-Bereich:
10.0.0.0/8(entspricht allen IP-Adressen im Bereich)
Verhaltensunterschiede zwischen HTTP-Clients
Der HTTP-Clienttyp und die Eintragsquelle wirken sich auf zwei wichtige Übereinstimmungsverhalten aus.
Builder-Einträge im Vergleich zu externen Einstellungen
Wenn Sie Platzhaltereinträge (*.example.comoder*) über die nonProxyHosts(Set) addNonProxyHost(String) OR-Methoden im ProxyConfiguration Builder angeben, funktionieren Platzhalter nur mit den AWS
CRT-based HTTP-Clients (AwsCrtHttpClientundAwsCrtAsyncHttpClient).
Die ApacheNetty, und URLConnection basierten Clients werfen ein Zeichen PatternSyntaxException für Platzhaltereinträge aus, die Sie über den Builder angeben.
Wenn Einträge aus der http.nonProxyHosts Systemeigenschaft oder der NO_PROXY Umgebungsvariablen stammen, funktionieren Platzhalter bei allen Clients.
Wichtig
Wenn Sie Platzhalter benötigen, um auf allen HTTP-Clients zu funktionieren, verwenden Sie die http.nonProxyHosts Systemeigenschaft oder die NO_PROXY Umgebungsvariable anstelle des Builders.
Root-domain Entspricht den führenden Platzhaltereinträgen
Die AWS CRT-based Clients und die anderen HTTP-Clients behandeln das *.example.com Muster unterschiedlich:
-
CRT-based clients:
*.example.comentspricht sowohl der Root-Domain (example.com) als auch den Subdomains (z. B.api.example.com). -
ApacheNetty, und URLConnection basierte Clients:
*.example.comstimmt nur mit Subdomains überein. Die Stammdomäne stimmtexample.comnicht überein, und das SDK leitet sie über den Proxy weiter.
Zusammenfassung des Verhaltens von Platzhaltern nach Eintragsquelle
In der folgenden Tabelle wird das Abgleichverhalten zusammengefasst, wenn Sie Einträge über die http.nonProxyHosts Systemeigenschaft oder die NO_PROXY Umgebungsvariable angeben. Alle Clients unterstützen Platzhalter aus diesen Quellen.
| Format des Eintrags | Non-CRT Kunden (ApacheNetty, undURLConnection) | CRT-based Kunden |
|---|---|---|
|
Exakter Host ( |
Geehrt |
Geehrt |
|
Führender Platzhalter () |
Ausgezeichnet (nur Subdomains) |
Ausgezeichnet (Root-Domain und Subdomains) |
|
Bloßer Platzhalter () |
Geehrt |
Geehrt |
|
CIDR-Bereich () |
Geehrt |
Geehrt |