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.
Konsolidieren Sie die vorsignierte URL-Generierung und das Herunterladen von Objekten in Amazon S3 mithilfe eines Endpunkts, der statischen IP-Adressen zugeordnet ist
Song Jin, Eunhye Jo und Jun Soung Lee, Amazon Web Services
Übersicht
Dieses Muster vereinfacht den Zugriff auf Amazon Simple Storage Service (Amazon S3), indem sichere, benutzerdefinierte Vorlagen URLs für Objektdownloads erstellt werden. Die Lösung bietet einen einzigen Endpunkt mit einer eindeutigen Domain und statischen IP-Adressen. Es ist auf Kunden zugeschnitten, die eine Konsolidierung von API- und Amazon S3 S3-Endpunkten unter einer einheitlichen Domain mit statischen IP-Adressen benötigen. Bei diesem Anwendungsfall befolgen Benutzer eine Firewall-Richtlinie für IP und Domain-Allowlist, wodurch der API-Zugriff auf bestimmte Domänen und IP-Adressen beschränkt wird.
Die Architektur verwendet Schlüssel AWS-Services wie AWS Global Accelerator Amazon API Gateway AWS Lambda, Application Load Balancer und Amazon S3. AWS PrivateLink Dieses Design zentralisiert die API für die Generierung vorsignierter Endgeräte URLs und des Amazon S3 S3-Endpunkts unter einer einzigen Domain, die mit einem Accelerator mit zwei statischen IP-Adressen verknüpft ist. Folglich können Benutzer mühelos vorsignierte Amazon S3 S3-Objekte über einen einheitlichen Domain-Endpunkt mit statischen IP-Adressen anfordern URLs und herunterladen.
Diese Architektur ist besonders vorteilhaft für Kunden mit strengen Richtlinien oder Compliance-Anforderungen, z. B. im öffentlichen Sektor, im medizinischen Bereich und im Finanzsektor.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktiver AWS-Konto
Eine öffentlich gehostete Zone für Ihren benutzerdefinierten Domainnamen
Eine in AWS Certificate Manager (ACM) importierte Domain in AWS-Region der Ihrer Wahl
Einschränkungen
Der Amazon S3 S3-Bucket-Name muss mit dem Domainnamen des Endpunkts übereinstimmen. Diese Anforderung soll sicherstellen, dass der Amazon S3 S3-Endpunkt über den einzigen API-Endpunkt bedient werden kann.
Der in API Gateway verwendete benutzerdefinierte Domainname sollte mit dem Domainnamen des einzelnen API-Endpunkts übereinstimmen.
Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter AWS Dienste nach Regionen
. Informationen zu bestimmten Endpunkten finden Sie unter Dienstendpunkte und Kontingente. Wählen Sie dort den Link für den Dienst aus.
Architektur
Das folgende Diagramm zeigt die Zielarchitektur und den Arbeitsablauf für dieses Muster.

Das Diagramm veranschaulicht das folgende Konzept und den folgenden Arbeitsablauf:
Ein Benutzer initiiert eine Anforderung zur Generierung einer vorsignierten URL mithilfe des benutzerdefinierten Endpunkts AWS Global Accelerator, über den der benutzerdefinierte Domänenname und die zugehörigen IP-Adressen bereitgestellt wird.
Eine Lambda-Funktion generiert die vorsignierte URL, die auf den benutzerdefinierten Endpunkt verweist. Sie antwortet mit einer 301-Weiterleitung, die die generierte vorsignierte URL enthält. Über die umgeleitete vorsignierte URL lädt der Benutzer das Objekt automatisch herunter, indem er den benutzerdefinierten Endpunkt verwendet, der über Global Accelerator bereitgestellt wird.
Die Gesamtarchitektur für die Generierung vorsignierter URLs und den Workflow zum Herunterladen von Objekten besteht aus folgenden Komponenten:
Bereitstellung statischer IP-Adressen durch Global Accelerator.
Registrierung des Alias des Accelerators als A-Eintrag in der öffentlich gehosteten Zone von Amazon Route 53 mit dem benutzerdefinierten Domainnamen.
Erstellung eines Amazon S3 S3-Buckets mit einem Bucket-Namen, der dem registrierten benutzerdefinierten Domainnamen entspricht.
Erstellung von VPC-Endpunkten für API Gateway und den Amazon S3 S3-Service.
Konfiguration eines intern gerichteten Application Load Balancer für die Verbindung mit Global Accelerator.
Zuweisung eines benutzerdefinierten Domainnamens für API Gateway mit angehängtem ACM-Zertifikat.
Bereitstellung eines privaten API Gateway, das in eine Lambda-Funktion integriert ist.
Die Lambda-Funktion ist mit einer angehängten AWS Identity and Access Management (IAM-) Rolle (mit GetObjectBerechtigungen) ausgestattet.
Tools
AWS-Services
Amazon API Gateway unterstützt Sie bei der Erstellung, Veröffentlichung, Wartung, Überwachung und Sicherung von REST, HTTP und WebSocket APIs in jeder Größenordnung.
Application Load Balancer verteilen den eingehenden Anwendungsdatenverkehr auf mehrere Ziele, z. B. Amazon Elastic Compute Cloud (Amazon EC2) -Instances, in mehreren Availability Zones.
AWS Certificate Manager (ACM) unterstützt Sie bei der Erstellung, Speicherung und Erneuerung öffentlicher und privater SSL/TLS X.509-Zertifikate und -Schlüssel, die Ihre AWS Websites und Anwendungen schützen.
AWS Cloud Development Kit (AWS CDK)ist ein Softwareentwicklungs-Framework, das Ihnen hilft, AWS Cloud Infrastruktur im Code zu definieren und bereitzustellen.
AWS Global Acceleratorist ein globaler Dienst, der mehrere AWS-Regionen Endpunkte unterstützt. Sie können Beschleuniger erstellen, die den Datenverkehr über das globale Netzwerk an optimale Endpunkte weiterleiten. AWS Dies verbessert die Verfügbarkeit und Leistung Ihrer Internetanwendungen, die von einer globalen Zielgruppe verwendet werden.
AWS Identity and Access Management (IAM) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
AWS Lambda ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
AWS PrivateLinkhilft Ihnen dabei, unidirektionale, private Verbindungen von Ihren virtuellen privaten Clouds (VPCs) zu Diensten außerhalb der VPC herzustellen.
Amazon Route 53 ist ein hochverfügbarer und skalierbarer DNS-Web-Service.
Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
Andere Tools
Terraform
ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.
Code-Repository
Sie können dieses Muster je nach Wunsch entweder mit AWS CDK oder mit Terraform bereitstellen. Der Abschnitt Epics enthält Anweisungen für beide Bereitstellungsmethoden. Der Code für dieses Muster ist in den folgenden GitHub Repositorys verfügbar:
Bewährte Methoden
Um die Sicherheit in der Produktionsumgebung zu erhöhen, ist es wichtig, Autorisierungsmechanismen wie Amazon Cognito zu implementieren, um den Zugriff auf die
PresignedUrl
Generierungs-API einzuschränken.Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der IAM-Dokumentation unter Gewährung der geringsten Rechte und bewährte Methoden zur Sicherheit.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Entscheiden Sie sich für einen Domainnamen. | Entscheiden Sie sich für einen öffentlichen Domainnamen für den einheitlichen Amazon S3 S3-Endpunkt. Der Domainname wird auch als Amazon S3 S3-Bucket-Name verwendet. | AWS-Administrator, Netzwerkadministrator |
Erstellen Sie eine öffentliche gehostete Zone. | Erstellen Sie eine öffentlich gehostete Zone in Amazon Route 53. Sein Domainname muss mit dem Domainnamen übereinstimmen, der in API Gateway verwendet wird. | AWS-Administrator, Netzwerkadministrator |
Bereiten Sie ein SSL-Zertifikat vor. | Verwenden Sie AWS Certificate Manager (ACM), um ein SSL-Zertifikat für Ihre Webanwendungsdomäne anzufordern oder zu importieren. | AWS-Administrator, Netzwerkadministrator |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Richten Sie die Terraform-Entwicklungsumgebung ein. | Gehen Sie wie folgt vor, um die Entwicklungsumgebung einzurichten:
| AWS-Administrator, Cloud-Administrator |
Ändern Sie die |
Beachten Sie Folgendes:
| AWS-Administrator, Cloud-Administrator |
Stellen Sie Netzwerkressourcen bereit. | Führen Sie die folgenden Befehle aus, um Netzwerkressourcen bereitzustellen:
Geben Sie bei der Ausführung des | AWS-Administrator, Cloud-Administrator |
Stellen Sie API Gateway, Amazon S3 und Lambda bereit. | Verwenden Sie die folgenden Befehle, um Netzwerkressourcen bereitzustellen:
| AWS-Administrator, Cloud-Administrator |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Richten Sie die AWS CDK Entwicklungsumgebung ein. | Gehen Sie wie folgt vor, um die Entwicklungsumgebung einzurichten:
| AWS-Administrator, Cloud-Administrator |
Konfigurieren Sie die Domain-Einstellungen in der | Verwenden Sie die folgenden Befehle, um die Optionen der konstanten Variablen zu bearbeiten:
Ersetzen Sie in den Befehlen jeden Platzhalter durch Ihre eigenen Informationen:
| AWS-Administrator, Cloud-Administrator |
Stellen Sie die Stacks bereit. | Verwenden Sie den folgenden Befehl, um zwei Stacks bereitzustellen, einen für die Virtual Private Cloud (VPC) und einen weiteren für die Anwendung:
| AWS-Administrator, Cloud-Administrator |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Überprüfen Sie die IP-Adressen des Endpunkts. | Verwenden Sie den folgenden Befehl, um zu überprüfen, ob die Domäne für dieses Muster statische IP-Adressen hat:
| Netzwerkadministrator |
Laden Sie eine Testdatei hoch, die Sie später herunterladen können. | Laden Sie die Testdatei in den | AWS-Administrator, Cloud-Administrator |
Rufen Sie die API auf, um eine vorsignierte URL zu generieren. | Um eine vorsignierte URL zu generieren, rufen Sie die URL in einem Browser oder API-Client (z. B. Postman
Ersetzen Sie die Platzhalterwerte in | Besitzer der App |
Überprüfe das Ergebnis. | Das erwartete Ergebnis ist, dass Sie einen Statuscode für die Weiterleitung 301 (dauerhaft verschoben) erhalten sollten. Diese Antwort enthält die vorsignierte URL, die den Download Ihrer Testdatei automatisch initiieren sollte. | Testingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Zerstören Sie API Gateway-, Amazon S3- und Lambda-Ressourcen. | Verwenden Sie die folgenden Befehle, um Ressourcen zu löschen:
| AWS-Administrator, Cloud-Administrator |
Zerstören Sie Netzwerkressourcen. | Verwenden Sie die folgenden Befehle, um Netzwerkressourcen zu löschen:
| AWS-Administrator, Cloud-Administrator |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Zerstöre die Stapel. | Verwenden Sie den folgenden Befehl, um sowohl den VPC- als auch den Anwendungsstapel zu löschen:
| AWS-Administrator, Cloud-Administrator |
Leeren und löschen Sie die Amazon S3 S3-Buckets. | Leeren und löschen Sie das Objekt Amazon S3 S3-Bucket und den Amazon S3 S3-Logs-Bucket, die nicht standardmäßig gelöscht werden. Die Amazon S3 S3-Bucket-Namen lauten Wenn Sie es vorziehen, das AWS Command Line Interface (AWS CLI) zum Löschen der Buckets zu verwenden, verwenden Sie die folgenden Befehle:
Ersetzen Sie | AWS-Administrator, Cloud-Administrator |
Zugehörige Ressourcen
AWS Blogs