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.
Passen Sie den HTTP-Client an
Der AWS SDK für Go verwendet einen Standard-HTTP-Client mit Standardkonfigurationswerten. Sie können zwar einige dieser Konfigurationswerte ändern, aber der Standard-HTTP-Client und -Transport sind nicht ausreichend für Kunden konfiguriert, die den AWS SDK für Go in einer Umgebung mit hohem Durchsatz und niedrigen Latenzanforderungen verwenden. Weitere Informationen finden Sie im, Häufig gestellte Fragen da die Konfigurationsempfehlungen je nach Arbeitslast variieren. In diesem Abschnitt wird beschrieben, wie Sie einen benutzerdefinierten HTTP-Client konfigurieren und diesen Client zum Erstellen von AWS SDK für Go Aufrufen verwenden.
Um Ihnen bei der Erstellung eines benutzerdefinierten HTTP-Clients zu helfen, wird in diesem Abschnitt beschrieben, wie Sie benutzerdefinierte Einstellungen konfigurieren und diesen Client mit einem AWS SDK für Go Service-Client verwenden. NewBuildableClient
Lassen Sie uns definieren, was wir anpassen möchten.
Überschreiben beim Laden der Konfiguration
Beim Aufrufen können benutzerdefinierte HTTP-Clients bereitgestellt werden, LoadDefaultConfigLoadDefaultConfig
übergeben wird. Um zum Beispiel customClient
als unseren Client zu übergeben:
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithHTTPClient(customClient))
Zeitüberschreitung
Das BuildableHTTPClient
kann mit einem Timeout-Limit für Anfragen konfiguriert werden. Dieses Timeout beinhaltet die Zeit, um eine Verbindung herzustellen, etwaige Weiterleitungen zu verarbeiten und den gesamten Antworttext zu lesen. Um beispielsweise das Client-Timeout zu ändern:
import "github.com/aws/aws-sdk-go-v2/aws/transport/http" // ... httpClient := http.NewBuildableClient().WithTimeout(time.Second*5)
Dialer
Der BuildableHTTPClient
bietet eine Builder-Mechanik zum Erstellen von Clients mit modifizierten Dialer-OptionenDialer
konfiguriert werden.
import awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" import "net" // ... httpClient := awshttp.NewBuildableClient().WithDialerOptions(func(d *net.Dialer) { d.KeepAlive = -1 d.Timeout = time.Millisecond*500 })
Einstellungen
Dialer. KeepAlive
Diese Einstellung stellt den Keep-Alive-Zeitraum für eine aktive Netzwerkverbindung dar.
Auf einen negativen Wert setzen, um Keep-Alives zu deaktivieren.
Auf 0 setzen, um Keep-Alives zu aktivieren, sofern sie vom Protokoll und vom Betriebssystem unterstützt werden.
Netzwerkprotokolle oder Betriebssysteme, die Keep-Alives nicht unterstützen, ignorieren dieses Feld. Standardmäßig aktiviert TCP Keep Alive.
Weitere Informationen finden Sie unter https://golang. org/pkg/net/#Dialer. KeepAlive
KeepAlive
Als Time.Duration festlegen.
Dialer.Timeout
Diese Einstellung gibt an, wie lange ein Dial maximal darauf wartet, dass eine Verbindung hergestellt wird.
Die Standardeinstellung ist 30 Sekunden.
Weitere Informationen finden Sie unter https://golang. org/pkg/net/#Dialer .Timeout
Timeout
Als Time.Duration festlegen.
Transport
Einen Proxy konfigurieren
Wenn Sie keine direkte Verbindung zum Internet herstellen können, können Sie von GO unterstützte Umgebungsvariablen (HTTP_PROXY
/HTTPS_PROXY
) verwenden oder einen benutzerdefinierten HTTP-Client erstellen, um Ihren Proxy zu konfigurieren. Im folgenden Beispiel wird der Client so konfiguriert, dass er PROXY_URL
als Proxy-Endpunkt verwendet wird:
import awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" import "net/http" // ... httpClient := awshttp.NewBuildableClient().WithTransportOptions(func(tr *http.Transport) { proxyURL, err := url.Parse("PROXY_URL") if err != nil { log.Fatal(err) } tr.Proxy = http.ProxyURL(proxyURL) })
Andere Einstellungen
Im Folgenden finden Sie einige andere Transport
Einstellungen, die geändert werden können, um den HTTP-Client zu optimieren. Alle zusätzlichen Einstellungen, die hier nicht beschrieben werden, finden Sie in der Dokumentation zum Transporttyp
import awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" import "net/http" // ... httpClient := awshttp.NewBuildableClient().WithTransportOptions(func(tr *http.Transport) { tr.ExpectContinueTimeout = 0 tr.MaxIdleConns = 10 })
Verkehr. ExpectContinueTimeout
Wenn die Anfrage einen „Expect: 100-continue“ -Header hat, stellt diese Einstellung die maximale Wartezeit auf die ersten Antwortheader eines Servers dar, nachdem die Anforderungsheader vollständig geschrieben wurden. Diese Zeit beinhaltet nicht die Zeit zum Senden des Anforderungsheaders. Der HTTP-Client sendet seine Nutzdaten, nachdem dieser Timeout abgelaufen ist.
Standard 1 Sekunde.
Setzen Sie den Wert auf 0, um kein Timeout zu vermeiden, und senden Sie die Payload der Anfrage ohne Wartezeit. Ein Anwendungsfall ist, wenn Sie auf Probleme mit Proxys oder Drittanbieterdiensten stoßen, die eine Sitzung durchführen, die der Verwendung von Amazon S3 in der später gezeigten Funktion ähnelt.
ExpectContinue
Als Time.Duration festlegen.
Verkehr. IdleConnTimeout
Diese Einstellung stellt die maximale Zeit dar, um eine inaktive Netzwerkverbindung zwischen HTTP-Anfragen aufrechtzuerhalten.
Auf 0 gesetzt, wenn kein Limit angegeben wird.
Weitere Informationen finden Sie unter https://golang. org/pkg/net/http/#Transport. IdleConnTimeout
IdleConnTimeout
Als Time.Duration festlegen.
Verkehr. MaxIdleConns
Diese Einstellung stellt die maximale Anzahl inaktiver Verbindungen (Keep-Alive) auf allen Hosts dar. Ein Anwendungsfall für die Erhöhung dieses Werts ist, wenn Sie in kurzer Zeit viele Verbindungen von denselben Clients sehen
0 bedeutet kein Limit.
Weitere Informationen finden Sie unter https://golang. org/pkg/net/http/#Transport. MaxIdleConns
MaxIdleConns
Als int setzen.
Verkehr. MaxIdleConnsPerHost
Diese Einstellung stellt die maximale Anzahl inaktiver Verbindungen (Keep-Alive) dar, die pro Host beibehalten werden können. Ein Anwendungsfall für die Erhöhung dieses Werts ist, wenn Sie innerhalb eines kurzen Zeitraums viele Verbindungen von denselben Clients sehen
Die Standardeinstellung sind zwei inaktive Verbindungen pro Host.
Auf 0 setzen, um DefaultMaxIdleConnsPerHost (2) zu verwenden.
Weitere Informationen finden Sie unter https://golang. org/pkg/net/http/#Transport. MaxIdleConnsPerHost
MaxIdleConnsPerHost
Als int setzen.
Verkehr. ResponseHeaderTimeout
Diese Einstellung stellt die maximale Wartezeit dar, bis ein Client den Antwortheader gelesen hat.
Wenn der Client den Header der Antwort innerhalb dieser Dauer nicht lesen kann, schlägt die Anforderung mit einem Timeout-Fehler fehl.
Seien Sie vorsichtig bei der Einstellung dieses Werts, wenn Sie Lambda-Funktionen mit langer Laufzeit verwenden, da der Vorgang keine Antwortheader zurückgibt, bis die Lambda-Funktion abgeschlossen ist oder das Timeout abgelaufen ist. Sie können diese Option jedoch weiterhin mit der API-Operation ** ** verwenden. InvokeAsync
Die Standardeinstellung ist kein Timeout. Warte ewig.
Weitere Informationen finden Sie unter https://golang. org/pkg/net/http/#Transport. ResponseHeaderTimeout
ResponseHeaderTimeout
Als Time.Duration festlegen.
Verkehr. TLSHandshakeAuszeit
Diese Einstellung stellt die maximale Wartezeit bis zum Abschluss eines TLS-Handshakes dar.
Der Standardwert beträgt 10 Sekunden.
Null bedeutet kein Timeout.
Weitere Informationen finden Sie unter https://golang. org/pkg/net/http/#Transport. TLSHandshakeAuszeit
TLSHandshakeTimeout
Als Time.Duration festlegen.