Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Client-Endpunkte

Fokusmodus
Client-Endpunkte - AWS SDK for Rust

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.

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.

Wenn der AWS SDK for Rust Anruf erfolgt AWS-Service, besteht einer der ersten Schritte darin, zu bestimmen, wohin die Anfrage weitergeleitet werden soll. Dieser Vorgang wird als Endpunktauflösung bezeichnet.

Sie können die Endpunktauflösung für das SDK konfigurieren, wenn Sie einen Service-Client erstellen. Die Standardkonfiguration für die Endpunktauflösung ist normalerweise in Ordnung, aber es gibt mehrere Gründe, warum Sie die Standardkonfiguration möglicherweise ändern möchten. Zwei Beispielgründe lauten wie folgt:

  • Um Anfragen an eine Vorabversion eines Dienstes oder an eine lokale Bereitstellung eines Dienstes zu stellen.

  • Um auf bestimmte Servicefunktionen zuzugreifen, die noch nicht im SDK modelliert wurden.

Warnung

Die Endpunktauflösung ist ein SDK-Thema für Fortgeschrittene. Wenn Sie die Standardeinstellungen ändern, riskieren Sie, dass Ihr Code beschädigt wird. Die Standardeinstellungen gelten für die meisten Benutzer in Produktionsumgebungen.

Benutzerdefinierte Endpunkte können global festgelegt werden, sodass sie für alle Serviceanfragen verwendet werden, oder Sie können einen benutzerdefinierten Endpunkt für einen bestimmten AWS-Service Endpunkt festlegen.

Benutzerdefinierte Endpunkte können mithilfe von Umgebungsvariablen oder Einstellungen in der gemeinsam genutzten AWS config Datei konfiguriert werden. Informationen zu diesem Ansatz finden Sie unter Dienstspezifische Endpunkte im Referenzhandbuch AWS SDKs und im Tools-Referenzhandbuch. Eine vollständige Liste der Einstellungen für gemeinsam genutzte config Dateien und Umgebungsvariablen für alle AWS-Services finden Sie unter Identifikatoren für dienstspezifische Endpunkte.

Alternativ kann diese Anpassung auch in Ihrem Code konfiguriert werden, wie in den folgenden Abschnitten gezeigt.

Benutzerdefinierte Konfiguration

Sie können die Endpunktauflösung eines Service-Clients mit zwei Methoden anpassen, die bei der Erstellung des Clients verfügbar sind:

  1. endpoint_url(url: Into<String>)

  2. endpoint_resolver(resolver: impl crate::config::endpoint::ResolveEndpoint + `static)

Sie können beide Eigenschaften festlegen. In den meisten Fällen geben Sie jedoch nur eine an. Für den allgemeinen Gebrauch endpoint_url wird es am häufigsten angepasst.

Endpunkt-URL festlegen

Sie können einen Wert für festlegenendpoint_url, um einen „Basis-Hostnamen“ für den Dienst anzugeben. Dieser Wert ist jedoch nicht endgültig, da er als Parameter an die ResolveEndpoint Instanz des Clients übergeben wird. Die ResolveEndpoint Implementierung kann diesen Wert dann überprüfen und möglicherweise ändern, um den endgültigen Endpunkt zu bestimmen.

Stellen Sie den Endpunkt-Resolver ein

Die ResolveEndpoint Implementierung eines Service-Clients bestimmt den endgültigen aufgelösten Endpunkt, den das SDK für eine bestimmte Anfrage verwendet. Ein Service-Client ruft die resolve_endpoint Methode für jede Anfrage auf und verwendet den vom Resolver zurückgegebenen EndpointFutureWert ohne weitere Änderungen.

Das folgende Beispiel zeigt die Bereitstellung einer benutzerdefinierten Endpoint-Resolver-Implementierung für einen Amazon S3 S3-Client, die pro Phase einen anderen Endpunkt auflöst, z. B. Staging und Produktion:

use aws_sdk_s3::config::endpoint::{ResolveEndpoint, EndpointFuture, Params, Endpoint}; #[derive(Debug)] struct StageResolver { stage: String } impl ResolveEndpoint for StageResolver { fn resolve_endpoint(&self, params: &Params) -> EndpointFuture<'_> { let stage = &self.stage; EndpointFuture::ready(Ok(Endpoint::builder().url(format!("{stage}.myservice.com")).build())) } } let config = aws_config::defaults(BehaviorVersion::latest()) .load() .await; let resolver = StageResolver { stage: std::env::var("STAGE").unwrap() }; let s3_config = aws_sdk_s3::config::Builder::from(&config) .endpoint_resolver(resolver) .build(); let s3 = aws_sdk_s3::Client::from_conf(s3_config);
Anmerkung

Endpoint-Resolver und damit auch das ResolveEndpoint Merkmal sind für jeden Service spezifisch und können daher nur in der Service-Client-Konfiguration konfiguriert werden. Die Endpunkt-URL kann dagegen entweder mithilfe einer gemeinsamen Konfiguration (gilt für alle daraus abgeleiteten Dienste) oder für einen bestimmten Dienst konfiguriert werden.

ResolveEndpoint Parameter

Die resolve_endpoint Methode akzeptiert dienstspezifische Parameter, die Eigenschaften enthalten, die bei der Endpunktauflösung verwendet werden.

Jeder Dienst umfasst die folgenden Basiseigenschaften:

Name Typ Beschreibung
region String Die des Kunden AWS-Region
endpoint String Eine Zeichenkettendarstellung des Wertesatzes von endpointUrl
use_fips Boolesch Ob FIPS-Endpunkte in der Konfiguration des Clients aktiviert sind
use_dual_stack Boolesch Ob Dual-Stack-Endpunkte in der Konfiguration des Clients aktiviert sind

AWS-Services kann zusätzliche Eigenschaften angeben, die für die Auflösung erforderlich sind. Zu den Amazon S3 S3-Endpunktparametern gehören beispielsweise der Bucket-Name und mehrere Amazon S3-spezifische Funktionseinstellungen. Die force_path_style Eigenschaft bestimmt beispielsweise, ob die virtuelle Host-Adressierung verwendet werden kann.

Wenn Sie Ihren eigenen Anbieter implementieren, sollten Sie keine eigene Instanz von Endpunktparametern erstellen müssen. Das SDK stellt die Eigenschaften für jede Anfrage bereit und übergibt sie an Ihre Implementierung vonresolve_endpoint.

Vergleichen Sie das Verwenden mit endpoint_url dem Verwenden endpoint_resolver

Es ist wichtig zu verstehen, dass die folgenden beiden Konfigurationen, die eine verwendet endpoint_url und die andere, die verwendetendpoint_resolver, NICHT zu Clients mit gleichwertigem Verhalten bei der Endpunktauflösung führen.

use aws_sdk_s3::config::endpoint::{ResolveEndpoint, EndpointFuture, Params, Endpoint}; #[derive(Debug, Default)] struct CustomResolver; impl ResolveEndpoint for CustomResolver { fn resolve_endpoint(&self, _params: &Params) -> EndpointFuture<'_> { EndpointFuture::ready(Ok(Endpoint::builder().url("https://endpoint.example").build())) } } let config = aws_config::defaults(BehaviorVersion::latest()) .load() .await; // use endpoint url aws_sdk_s3::config::Builder::from(&config) .endpoint_url("https://endpoint.example") .build(); // Use endpoint resolver aws_sdk_s3::config::Builder::from(&config) .endpoint_resolver(CustomResolver::default()) .build();

Der Client, der das endpoint_url festlegt, gibt eine Basis-URL an, die an den (Standard-) Anbieter übergeben wird und im Rahmen der Endpunktauflösung geändert werden kann.

Der Client, der das festlegt, endpoint_resolver gibt die endgültige URL an, die der Amazon S3 S3-Client verwendet.

Beispiele

Benutzerdefinierte Endpunkte werden häufig zum Testen verwendet. Anstatt Anrufe an den cloudbasierten Dienst zu tätigen, werden Anrufe an einen lokal gehosteten, simulierten Dienst weitergeleitet. Zwei dieser Optionen sind:

  • DynamoDB local — eine lokale Version des Amazon DynamoDB-Service.

  • LocalStack— ein Cloud-Service-Emulator, der in einem Container auf Ihrem lokalen Computer ausgeführt wird.

Die folgenden Beispiele veranschaulichen zwei verschiedene Möglichkeiten, einen benutzerdefinierten Endpunkt anzugeben, um diese beiden Testoptionen zu verwenden.

DynamoDB local direkt im Code verwenden

Wie in den vorherigen Abschnitten beschrieben, können Sie endpoint_url direkt im Code festlegen, dass der Basisendpunkt so überschrieben wird, dass er auf den lokalen DynamoDB-Server verweist. In Ihrem Code:

let config = aws_config::defaults(aws_config::BehaviorVersion::latest()) .test_credentials() // DynamoDB run locally uses port 8000 by default. .endpoint_url("http://localhost:8000") .load() .await; let dynamodb_local_config = aws_sdk_dynamodb::config::Builder::from(&config).build(); let client = aws_sdk_dynamodb::Client::from_conf(dynamodb_local_config);

Das vollständige Beispiel ist verfügbar unter GitHub.

LocalStack Verwenden Sie die config Datei

Sie können dienstspezifische Endpunkte in Ihrer gemeinsam genutzten AWS config Datei festlegen. Das folgende Konfigurationsprofil legt fest, endpoint_url dass eine Verbindung zu einem Port hergestellt werden solllocalhost. 4566 Weitere Informationen zur LocalStack Konfiguration finden Sie unter Zugriff LocalStack über die Endpunkt-URL auf der LocalStack Docs-Website.

[profile localstack] region=us-east-1 endpoint_url = http://localhost:4566

Das SDK nimmt die Änderungen in der gemeinsam genutzten config Datei auf und wendet sie auf Ihre SDK-Clients an, wenn Sie das localstack Profil verwenden. Bei diesem Ansatz muss Ihr Code keinen Verweis auf Endpunkte enthalten und würde wie folgt aussehen:

// set the environment variable `AWS_PROFILE=localstack` when running // the application to source `endpoint_url` and point the SDK at the // localstack instance let config = aws_config::defaults(BehaviorVersion::latest()).load().await; let s3_config = aws_sdk_s3::config::Builder::from(&config) .force_path_style(true) .build(); let s3 = aws_sdk_s3::Client::from_conf(s3_config);

Das vollständige Beispiel ist verfügbar unter GitHub.

Auf dieser Seite

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.