

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
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses"></a>

*Song Jin, Eunhye Jo und Jun Soung Lee, Amazon Web Services*

## Zusammenfassung
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-summary"></a>

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-Adressen und Domain-Zulassungslisten, 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
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-prereqs"></a>

**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](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

## Architektur
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-architecture"></a>

Das folgende Diagramm zeigt die Zielarchitektur und den Arbeitsablauf für dieses Muster.

![Komponenten und Arbeitsablauf für die Generierung vorab signierter URLs und das Herunterladen von Objekten.](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e19ebcb5-2138-481e-952e-3cfee9ad9e97/images/effd197c-d4d7-4990-8b66-3eb1c64aab4c.png)


Das Diagramm veranschaulicht das folgende Konzept und den folgenden Arbeitsablauf:

1. 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.

1. 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 [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)Berechtigungen) ausgestattet.

## Tools
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-tools"></a>

**AWS-Services**
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) 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](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) verteilen den eingehenden Anwendungsdatenverkehr auf mehrere Ziele, z. B. Amazon Elastic Compute Cloud (Amazon EC2) -Instances, in mehreren Availability Zones.
+ [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) 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)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)ist ein Softwareentwicklungs-Framework, das Ihnen hilft, AWS Cloud Infrastruktur im Code zu definieren und bereitzustellen.
+ [AWS Global Accelerator](https://docs.aws.amazon.com/global-accelerator/latest/dg/what-is-global-accelerator.html)ist 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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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 PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)hilft Ihnen dabei, unidirektionale, private Verbindungen von Ihren virtuellen privaten Clouds (VPCs) zu Diensten außerhalb der VPC herzustellen.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) ist ein hochverfügbarer und skalierbarer DNS-Web-Service.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

**Andere Tools**
+ [Terraform](https://www.terraform.io/) 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](#consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-epics) enthält Anweisungen für beide Bereitstellungsmethoden. Der Code für dieses Muster ist in den folgenden GitHub Repositorys verfügbar:
+ **AWS CDK**— [s3- -cdk presignedurl-staticips-endpoint-with](https://github.com/aws-samples/s3-presignedurl-staticips-endpoint-with-cdk)
+ **[Terraform — s3- -Terraform presignedurl-staticips-endpoint-with](https://github.com/aws-samples/s3-presignedurl-staticips-endpoint-with-terraform)**

## Best Practices
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-best-practices"></a>
+ Um die Sicherheit in der Produktionsumgebung zu erhöhen, ist es wichtig, Autorisierungsmechanismen wie [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) und [bewährte Methoden zur Sicherheit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html).

## Epen
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-epics"></a>

### Bereite die Umgebung vor
<a name="prepare-the-environment"></a>


| Aufgabe | Description | 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](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html) 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](https://docs.aws.amazon.com/acm/latest/userguide/acm-public-certificates.html) oder zu [importieren](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html). | AWS-Administrator, Netzwerkadministrator | 

### Stellen Sie das Muster mit Terraform bereit
<a name="deploy-the-pattern-with-terraform"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie die Terraform-Entwicklungsumgebung ein. | Gehen Sie wie folgt vor, um die Entwicklungsumgebung einzurichten:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.html) | AWS-Administrator, Cloud-Administrator | 
| Ändern Sie die **`provider.tf`**Dateien `.tfvars` und. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.html)**Beachten Sie Folgendes:**[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.html) | AWS-Administrator, Cloud-Administrator | 
| Stellen Sie Netzwerkressourcen bereit. | Führen Sie die folgenden Befehle aus, um Netzwerkressourcen bereitzustellen:<pre>cd ./2.vpc_alb_ga<br />terraform init<br />terraform plan --var-file=apg.tfvars<br />terraform apply --var-file=apg.tfvars</pre><br />Geben Sie bei der Ausführung des `apply ` Befehls **yes** ein, wenn Sie dazu aufgefordert werden. | AWS-Administrator, Cloud-Administrator | 
| Stellen Sie API Gateway, Amazon S3 und Lambda bereit. | Verwenden Sie die folgenden Befehle, um Netzwerkressourcen bereitzustellen:<pre>cd ./2.apigw_s3_lambda<br />terraform init<br />terraform plan --var-file=apg.tfvars<br />terraform apply --var-file=apg.tfvars</pre> | AWS-Administrator, Cloud-Administrator | 

### Stellen Sie das Muster bereit mit AWS CDK
<a name="deploy-the-pattern-with-cdk"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie die AWS CDK Entwicklungsumgebung ein. | Gehen Sie wie folgt vor, um die Entwicklungsumgebung einzurichten:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.html) | AWS-Administrator, Cloud-Administrator | 
| Konfigurieren Sie die Domain-Einstellungen in der `config/index.ts` Datei. | Verwenden Sie die folgenden Befehle, um die Optionen der konstanten Variablen zu bearbeiten:<pre>export const options = {<br />    certificateArn: '{arn of the acm which created before}',<br />    dnsAttr: {<br />        zoneName: '{public hosted zone name}',<br />        hostedZoneId: 'hosted zone Id',<br />    },<br />    domainNamePrefix: '{Prefix for the domain}',<br />    presignPath: 'presign',<br />    objectsPath: 'objects',<br />};</pre><br />Ersetzen Sie in den Befehlen jeden Platzhalter durch Ihre eigenen Informationen:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.html) | 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:<pre>$ npm install <br />$ cdk synth <br />$ cdk deploy --all</pre> | AWS-Administrator, Cloud-Administrator | 

### Testen Sie das Muster
<a name="test-the-pattern"></a>


| Aufgabe | Description | 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:<pre>nslookup ${s3-bucket-prefix}.${domain}</pre> | Netzwerkadministrator | 
| Laden Sie eine Testdatei hoch, die Sie später herunterladen können. | Laden Sie die Testdatei in den `'/objects'` Ordner im Amazon S3 S3-Bucket hoch. | 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](https://www.postman.com/product/what-is-postman/)) im folgenden Format auf:<pre>https://${s3-bucket-prefix}.${domain}/presign/objects/${uploaded-filename}</pre><br />Ersetzen Sie die Platzhalterwerte in `${s3-bucket-prefix}` und `${domain}` durch die Werte, die Sie in den vorherigen Schritten festgelegt haben. | 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 | 

### Mit Terraform aufräumen
<a name="clean-up-with-terraform"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Zerstören Sie API Gateway-, Amazon S3- und Lambda-Ressourcen. | Verwenden Sie die folgenden Befehle, um Ressourcen zu löschen:<pre>cd ./2.apigw_s3_lambda<br />terraform init<br />terraform plan --destroy --var-file=apg.tfvars<br />terraform destroy --var-file=apg.tfvars<br /></pre> | AWS-Administrator, Cloud-Administrator | 
| Zerstören Sie Netzwerkressourcen. | Verwenden Sie die folgenden Befehle, um Netzwerkressourcen zu löschen:<pre>cd ./1.vpc_alb_ga<br />terraform init<br />terraform plan --destroy --var-file=apg.tfvars<br />terraform destroy --var-file=apg.tfvars<br /></pre> | AWS-Administrator, Cloud-Administrator | 

### Aufräumen mit AWS CDK
<a name="clean-up-with-cdk"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Zerstöre die Stapel. | Verwenden Sie den folgenden Befehl, um sowohl den VPC- als auch den Anwendungsstapel zu löschen:<pre>$ cdk destroy --all</pre> | AWS-Administrator, Cloud-Administrator | 
| Leeren und löschen Sie die Amazon S3 S3-Buckets. | [Leeren](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) und [löschen Sie](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) das Objekt Amazon S3 S3-Bucket und den Amazon S3 S3-Logs-Bucket, die nicht standardmäßig gelöscht werden.<br />Die Amazon S3 S3-Bucket-Namen lauten `${s3-bucket-prefix}.${domain}` und`${s3-bucket-prefix}.${domain}-logs`.<br />Wenn Sie es vorziehen, das [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) zum Löschen der Buckets zu verwenden, verwenden Sie die folgenden Befehle:<pre>$ aws s3 rm s3://${s3-bucket-prefix}.${domain} --recursive<br />$ aws s3 rb s3://${s3-bucket-prefix}.${domain} --force<br />$ aws s3 rm s3://${s3-bucket-prefix}.${domain}-logs --recursive<br />$ aws s3 rb s3://${s3-bucket-prefix}.${domain}-logs --force</pre><br />Ersetzen Sie `${s3-bucket-prefix}` und `${domain}` durch die Werte, die Sie in den vorherigen Schritten festgelegt haben. , /p> | AWS-Administrator, Cloud-Administrator | 

## Zugehörige Ressourcen
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-resources"></a>

**AWS Blogs**
+ [Zugriff auf ein Amazon API Gateway über statische IP-Adressen, bereitgestellt von AWS Global Accelerator](https://aws.amazon.com/blogs/networking-and-content-delivery/accessing-an-aws-api-gateway-via-static-ip-addresses-provided-by-aws-global-accelerator/) 
+ [Generieren Sie eine vorsignierte URL in modularer Form AWS CDK JavaScript](https://aws.amazon.com/blogs/developer/generate-presigned-url-modular-aws-sdk-javascript/) 
+ [Hosten interner statischer HTTPS-Websites mit ALB, S3 und PrivateLink](https://aws.amazon.com/blogs/networking-and-content-delivery/hosting-internal-https-static-websites-with-alb-s3-and-privatelink/) 