Tutorial: Einen REST API als Amazon S3 S3-Proxy erstellen - APIAmazon-Gateway

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.

Tutorial: Einen REST API als Amazon S3 S3-Proxy erstellen

Als Beispiel für die Verwendung eines API In-Gateways als Proxy für Amazon S3 wird REST API in diesem Abschnitt beschrieben, wie Sie eine erstellen und konfigurieren, REST API um die folgenden Amazon S3 S3-Operationen verfügbar zu machen:

Möglicherweise möchten Sie das Beispiel API als Amazon S3 S3-Proxy importieren, wie unter gezeigtAPIDefinitionen des Beispiels API als Amazon S3 S3-Proxy öffnen. Dieses Beispiel enthält weitere exponierte Methoden. Anweisungen zum Importieren und API Verwenden der API Open-Definition finden Sie unterEntwickeln REST APIs mit Open API in API Gateway.

Anmerkung

Um Ihr API Gateway API in Amazon S3 zu integrieren, müssen Sie eine Region auswählen, in der sowohl der API Gateway- als auch der Amazon S3 S3-Service verfügbar sind. Informationen zur regionalen Verfügbarkeit finden Sie unter Amazon API Gateway Endpoints and Quotas.

Richten Sie IAM Berechtigungen für das Aufrufen API von Amazon S3 S3-Aktionen ein

Damit Amazon S3 S3-Aktionen aufgerufen werden können, müssen Sie einer IAM Rolle die entsprechenden IAM Richtlinien zugewiesen haben. API

Um die AWS Service-Proxy-Ausführungsrolle zu erstellen
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie Roles.

  3. Wählen Sie Rolle erstellen.

  4. Wählen Sie unter Typ der vertrauenswürdigen Entität auswählen die Option AWS Dienst aus, wählen Sie dann APIGateway aus und wählen Sie Erlaubt API Gateway, Protokolle in Logs zu CloudWatch übertragen.

  5. Klicken Sie auf Weiter und dann erneut auf Weiter.

  6. Geben Sie für Role name (Rollenname) den Namen APIGatewayS3ProxyPolicy ein und klicken Sie auf Create role (Rolle erstellen).

  7. Wählen Sie in der Liste Roles die Rolle aus, die Sie gerade erstellt haben. Möglicherweise müssen Sie scrollen oder die Rolle über die Suchleiste finden.

  8. Wählen Sie für die ausgewählte Rolle die Registerkarte Berechtigungen hinzufügen aus.

  9. Wählen Sie in der Dropdown-Liste Berechtigungen anfügen aus.

  10. Geben Sie im Suchfeld AmazonS3FullAccess ein und wählen Sie Berechtigungen hinzufügen aus.

    Anmerkung

    Dieses Tutorial verwendet der Einfachheit halber eine verwaltete Richtlinie. Als bewährte Methode sollten Sie Ihre eigene IAM Richtlinie erstellen, um die erforderlichen Mindestberechtigungen zu gewähren.

  11. Notieren Sie sich die neu erstellte Rolle ARN, Sie werden sie später verwenden.

APIRessourcen zur Darstellung von Amazon S3 S3-Ressourcen erstellen

Sie verwenden die Ressource API's root (/) als Container für die Amazon S3 S3-Buckets eines authentifizierten Aufrufers. Sie erstellen auch Item Ressourcen Folder und, um einen bestimmten Amazon S3 S3-Bucket bzw. ein bestimmtes Amazon S3 S3-Objekt darzustellen. Der Ordnername und der Objektschlüssel werden in Form von Pfadparametern als Teil einer Anfrage URL vom Aufrufer angegeben.

Anmerkung

Beim Zugriff auf Objekte, deren Objektschlüssel ein / oder ein anderes Sonderzeichen enthält, muss das Zeichen URL codiert werden. Beispielsweise sollte test/test.txt zu test%2Ftest.txt kodiert werden.

Um eine API Ressource zu erstellen, die die Amazon S3-Servicefunktionen verfügbar macht
  1. Erstellen Sie in demselben Fall, in dem AWS-Region Sie Ihren Amazon S3 S3-Bucket erstellt haben, einen API mit dem Namen myS3. APIDie Root-Ressource (/) steht für den Amazon S3 S3-Service. In diesem Schritt erstellen Sie zwei zusätzliche Ressourcen: /{folder} und /{item}.

  2. Wählen Sie Create Resource (Ressource erstellen) aus.

  3. Die Proxy-Ressource bleibt ausgeschaltet.

  4. Wählen Sie für Ressourcenpfad / aus.

  5. Geben Sie für Resource name (Ressourcenname) {folder} ein.

  6. Lassen Sie CORS(Cross-Origin Resource Sharing) deaktiviert.

  7. Wählen Sie Create Resource (Ressource erstellen) aus.

  8. Wählen Sie die /{folder}-Ressource aus und klicken Sie dann auf Ressource erstellen.

  9. Wiederholen Sie die Schritte oben, um eine untergeordnete Ressource für /{folder} mit dem Namen {item} zu erstellen.

    Ihr Endergebnis API sollte in etwa wie folgt aussehen:

    Ein API API In-Gateway als Amazon S3 S3-Proxy erstellen

Machen Sie eine API Methode verfügbar, um die Amazon S3 S3-Buckets des Aufrufers aufzulisten

Um die Liste der Amazon S3-Buckets des Aufrufers abzurufen, muss die GETService-Aktion auf Amazon S3 aufgerufen werden. Erstellen Sie API die Methode für die Root-Ressource (/). GET Konfigurieren Sie die GET Methode für die Integration mit Amazon S3 wie folgt.

Um die Methode zu erstellen und zu API initialisieren GET /
  1. Wählen Sie die /-Ressource aus und klicken Sie dann auf Methode erstellen.

  2. Wählen Sie als Methodentyp die Option GET.

  3. Für Integrationstyp wählen Sie AWS-Service aus.

  4. Wählen Sie für den Ort aus AWS-Region, AWS-Region an dem Sie Ihren Amazon S3 S3-Bucket erstellt haben.

  5. Wählen Sie für AWS-Service Amazon Simple Storage Service aus.

  6. Lassen Sie die AWS -Subdomain leer.

  7. Wählen Sie als HTTPMethode aus GET.

  8. Wählen Sie für Aktionstyp Pfadüberschreibung verwenden aus.

    Bei Pfadüberschreibung leitet API Gateway die Client-Anfrage als entsprechende Amazon S3-Anfrage im REST API Pfadstil an Amazon S3 weiter, in der eine Amazon S3 S3-Ressource durch den Ressourcenpfad des Musters ausgedrückt wird. s3-host-name/bucket/key APIGateway legt den angegebenen Client fest s3-host-name bucket und leitet ihn key vom Client an Amazon S3 weiter.

  9. Geben Sie für Pfadüberschreibung / ein.

  10. Geben Sie für Ausführungsrolle die Rolle ARN für einAPIGatewayS3ProxyPolicy.

  11. Wählen Sie Einstellungen für Methodenanfragen aus.

    Sie verwenden die Einstellungen für die Methodenanforderung, um zu steuern, wer diese Methode von Ihnen aufrufen kannAPI.

  12. Wählen Sie im Dropdown-Menü AWS_IAM für Autorisierung aus.

    Deklarieren von Methodenantworttypen
  13. Wählen Sie Methode erstellen aus.

Mit dieser Einrichtung wird die Frontend-Anforderung GET https://your-api-host/stage/ in das GET https://your-s3-host/ am Backend integriert.

Damit Sie API erfolgreiche Antworten und Ausnahmen ordnungsgemäß an den Anrufer zurückgeben können, deklarieren Sie die Antworten 200, 400 und 500 in Method response. Sie verwenden die Standardzuweisung für 200 Antworten, sodass Backend-Antworten mit dem hier nicht deklarierten Statuscode an den Anrufer als 200 Antworten zurückgegeben werden.

Deklarieren der Antworttypen für die GET /-Methode
  1. Klicken Sie auf der Registerkarte Methodenantwort unter Antwort 200 auf Bearbeiten.

  2. Klicken Sie auf Header hinzufügen und gehen Sie wie folgt vor:

    1. Für Header-Name geben Sie Content-Type ein.

    2. Wählen Sie Add header.

    Wiederholen Sie diese Schritte, um einen Timestamp-Header und einen Content-Length-Header zu erstellen.

  3. Wählen Sie Save (Speichern) aus.

  4. Klicken Sie auf der Registerkarte Methodenantwort unter Methodenantworten auf Antwort erstellen.

  5. Geben Sie als HTTPStatuscode 400 ein.

    Für diese Antwort legen Sie keine Header fest.

  6. Wählen Sie Save (Speichern) aus.

  7. Wiederholen Sie die folgenden Schritte, um die Antwort 500 zu erstellen.

    Für diese Antwort legen Sie keine Header fest.

Da die erfolgreiche Integrationsantwort von Amazon S3 die Bucket-Liste als XML Nutzlast zurückgibt und die Standardmethodenantwort von API Gateway eine JSON Nutzlast zurückgibt, müssen Sie den Wert des Backend-Header-Parameters Content-Type dem Frontend-Gegenstück zuordnen. Andernfalls erhält der Client application/json für den Inhaltstyp, wenn der Antworttext tatsächlich eine Zeichenfolge ist. XML Das folgende Verfahren zeigt, wie diese Einrichtung erfolgt. Darüber hinaus möchten Sie dem Client auch andere Header-Parameter wie Datum und Inhaltslänge anzeigen.

So richten Sie Antwort-Header-Zuordnungen für die Methode/ein GET
  1. Klicken Sie auf der Registerkarte Integrationsantwort unter Standard - Antwort auf Bearbeiten.

  2. Geben Sie für den Header Content-Length den Wert integration.response.header.Content-Length als Zuordnungswert ein.

  3. Geben Sie für den Header Content-Type den Wert integration.response.header.Content-Type als Zuordnungswert ein.

  4. Geben Sie für den Header Timestamp den Wert integration.response.header.Date als Zuordnungswert ein.

  5. Wählen Sie Save (Speichern) aus. Das Ergebnis sollte in etwa wie folgt aussehen:

    Zuweisen von Integrationsantwort-Headern zu Methodenantwort-Headern
  6. Klicken Sie auf der Registerkarte Integrationsantwort unter Integrationsantworten auf Antwort erstellen.

  7. Geben Sie für HTTPStatus-Regex ein. 4\d{2} Dadurch werden alle HTTP 4xx-Antwortstatuscodes der Methodenantwort zugeordnet.

  8. Wählen Sie für Statuscode der Methodenantwort 400 aus.

  9. Wählen Sie Create (Erstellen) aus.

  10. Wiederholen Sie die folgenden Schritte, um eine Integrationsantwort für die 500-Methodenantwort zu erstellen. Geben Sie für HTTPStatus-Regex ein. 5\d{2}

Es hat sich bewährt, die bisher konfigurierte API Version zu testen.

So testen Sie die GET /-Methode
  1. Wählen Sie die Registerkarte Test. Möglicherweise müssen Sie die rechte Pfeiltaste wählen, um die Registerkarte anzuzeigen.

  2. Wählen Sie Test aus. Das Ergebnis sollte wie in der folgenden Abbildung aussehen:

    Testen Sie das API GET Root-Bucket-Ergebnis

APIMethoden für den Zugriff auf einen Amazon S3 S3-Bucket verfügbar machen

Um mit einem Amazon S3 S3-Bucket zu arbeiten, machen Sie die GET Methode für die Ressource/{folder} verfügbar, um Objekte in einem Bucket aufzulisten. Die Anweisungen sind ähnlich wie diejenigen, die unter beschrieben sin Machen Sie eine API Methode verfügbar, um die Amazon S3 S3-Buckets des Aufrufers aufzulisten. Für weitere Methoden können Sie das Beispiel API hier importierenAPIDefinitionen des Beispiels API als Amazon S3 S3-Proxy öffnen.

Um die GET Methode für eine Ordnerressource verfügbar zu machen
  1. Wählen Sie die /{folder}-Ressource aus und klicken Sie dann auf Methode erstellen.

  2. Wählen Sie als Methodentyp die Option GET.

  3. Für Integrationstyp wählen Sie AWS-Service aus.

  4. Wählen Sie für den Ort aus AWS-Region, AWS-Region an dem Sie Ihren Amazon S3 S3-Bucket erstellt haben.

  5. Wählen Sie für AWS-Service Amazon Simple Storage Service aus.

  6. Lassen Sie die AWS -Subdomain leer.

  7. Wählen Sie als HTTPMethode aus GET.

  8. Wählen Sie für Aktionstyp Pfadüberschreibung verwenden aus.

  9. Geben Sie für Pfadüberschreibung {bucket} ein.

  10. Geben Sie für Ausführungsrolle die Rolle ARN für einAPIGatewayS3ProxyPolicy.

  11. Wählen Sie Methode erstellen aus.

Sie legen den {folder} Pfadparameter im Amazon S3 S3-Endpunkt festURL. Der {folder}-Pfadparameter der Methodenanforderung muss dem {bucket}-Pfadparameter der Integrationsanforderung zugeordnet werden.

Zuordnen von {folder} zu {bucket}
  1. Klicken Sie auf der Registerkarte Integrationsanfrage unter Einstellungen für Integrationsanfragen auf Bearbeiten.

  2. Wählen Sie URLPfadparameter und dann Pfadparameter hinzufügen.

  3. Geben Sie unter Name bucket ein.

  4. Geben Sie für Zugeordnet von method.request.path.folder ein.

  5. Wählen Sie Save (Speichern) aus.

Jetzt testen Sie IhreAPI.

Testen der /{folder} GET-Methode
  1. Wählen Sie die Registerkarte Test. Möglicherweise müssen Sie die rechte Pfeiltaste wählen, um die Registerkarte anzuzeigen.

  2. Geben Sie den Namen Ihres Buckets unter Pfad für Ordner ein.

  3. Wählen Sie Test aus.

    Das Testergebnis wird eine Liste der Objekte in Ihrem Bucket enthalten.

    Testen Sie die GET Methode, um einen Amazon S3 S3-Bucket zu erstellen.

APIMethoden für den Zugriff auf ein Amazon S3 S3-Objekt in einem Bucket verfügbar machen

Amazon S3 unterstütztGET,, DELETE HEADOPTIONS, POST und PUT Aktionen für den Zugriff auf und die Verwaltung von Objekten in einem bestimmten Bucket. In diesem Tutorial exponieren Sie eine GET-Methode für die {folder}/{item}-Ressource, um eine Abbildung aus einem Bucket abzurufen. Weitere Anwendungen der {folder}/{item} Ressource finden Sie im BeispielAPI,APIDefinitionen des Beispiels API als Amazon S3 S3-Proxy öffnen.

Um die GET Methode für eine Artikelressource verfügbar zu machen
  1. Wählen Sie die /{item}-Ressource aus und klicken Sie dann auf Methode erstellen.

  2. Wählen Sie als Methodentyp die Option aus GET.

  3. Für Integrationstyp wählen Sie AWS-Service aus.

  4. Wählen Sie für den Ort aus AWS-Region, AWS-Region an dem Sie Ihren Amazon S3 S3-Bucket erstellt haben.

  5. Wählen Sie für AWS-Service Amazon Simple Storage Service aus.

  6. Lassen Sie die AWS -Subdomain leer.

  7. Wählen Sie als HTTPMethode aus GET.

  8. Wählen Sie für Aktionstyp Pfadüberschreibung verwenden aus.

  9. Geben Sie für Pfadüberschreibung {bucket}/{object} ein.

  10. Geben Sie für Ausführungsrolle die Rolle ARN für einAPIGatewayS3ProxyPolicy.

  11. Wählen Sie Methode erstellen aus.

Sie legen die Pfadparameter {folder} und die {item} Pfadparameter im Amazon S3 S3-Endpunkt festURL. Der -Pfadparameter der Methodenanforderung muss dem -Pfadparameter der Integrationsanforderung zugeordnet werden.

In diesem Schritt führen Sie folgende Aufgaben aus:

  • Ordnen Sie den Pfadparameter {folder} der Methodenanforderung dem Pfadparameter {bucket} der Integrationsanforderung zu.

  • Ordnen Sie den Pfadparameter {item} der Methodenanforderung dem Pfadparameter {object} der Integrationsanforderung zu.

Zuordnen von {folder} zu {bucket} und {item} zu {object}
  1. Klicken Sie auf der Registerkarte Integrationsanfrage unter Einstellungen für Integrationsanfragen auf Bearbeiten.

  2. Wählen Sie URLPfadparameter aus.

  3. Klicken Sie auf Pfadparameter hinzufügen.

  4. Geben Sie unter Name bucket ein.

  5. Geben Sie für Zugeordnet von method.request.path.folder ein.

  6. Klicken Sie auf Pfadparameter hinzufügen.

  7. Geben Sie unter Name object ein.

  8. Geben Sie für Zugeordnet von method.request.path.item ein.

  9. Wählen Sie Save (Speichern) aus.

Testen der /{folder}/{object} GET-Methode
  1. Wählen Sie die Registerkarte Test. Möglicherweise müssen Sie die rechte Pfeiltaste wählen, um die Registerkarte anzuzeigen.

  2. Geben Sie den Namen Ihres Buckets unter Pfad für Ordner ein.

  3. Geben Sie unter Pfad, Element den Namen eines Elements ein.

  4. Wählen Sie Test aus.

    Der Antworttext enthält den Inhalt des Elements.

    Testen Sie die GET Methode, um einen Amazon S3 S3-Bucket zu erstellen.

    Die Anfrage gibt korrekt den Klartext von („Hello world“) als Inhalt der angegebenen Datei (test.txt) im angegebenen Amazon S3-Bucket (amzn-s3-demo-bucket) zurück.

Zum Herunterladen oder Hochladen von Binärdateien, die in API Gateway als etwas anderes als UTF-8-codierter Inhalt betrachtet werden, sind zusätzliche Einstellungen erforderlich. JSON API Dies kann wie folgt beschrieben werden:

Herunterladen oder Hochladen von Binärdateien von S3
  1. Registrieren Sie die Medientypen der betroffenen Datei bei den. API binaryMediaTypes Sie können Sie von der Konsole aus erledigen:

    1. Wählen Sie APIEinstellungen für dieAPI.

    2. Klicken Sie unter Binäre Medientypen auf Medientypen verwalten.

    3. Klicken Sie auf Binären Medientyp hinzufügen und geben Sie dann den erforderlichen Medientyp ein, z. B. image/png.

    4. Wählen Sie zum Speichern der Einstellung Save Changes (Änderungen speichern) aus.

  2. Fügen Sie den Header Content-Type (zum Hochladen) und/oder Accept (zum Herunterladen) zur Methodenanfrage hinzu, um den Client aufzufordern, den erforderlichen binären Medientyp anzugeben, und weisen Sie sie der Integrationsanfrage zu.

  3. Setzen Sie Content Handling in der Integrationsanfrage auf Passthrough (für das Hochladen), und in einer Integrationsantwort (für das Herunterladen). Stellen Sie sicher, dass keine Mapping-Vorlage für den betroffenen Inhaltstyp definiert ist. Weitere Informationen finden Sie unter Passthrough-Verhalten bei der Integration und Auswahl von VTL Zuordnungsvorlagen.

Die maximale Größe der Nutzlast ist 10 MB. Siehe APIGateway-Kontingente für die Konfiguration und Ausführung eines REST API.

Stellen Sie sicher, dass für Dateien in Amazon S3 die richtigen Inhaltstypen als Metadaten der Dateien hinzugefügt wurden. Bei streamfähigen Medieninhalten muss den Metadaten möglicherweise auch Content-Disposition:inline hinzugefügt werden.

Weitere Informationen zur Unterstützung von Binärdateien in API Gateway finden Sie unterKonvertierungen von Inhaltstypen in Gateway API.