Mit AWS Lambda-und API-Gateway zu dienen statische javascript?

Schreibe ich eine Dritte Partei-widget, das führt javascript-client-Seite eine Schaltfläche hinzu, die die Nutzer der Website. Im wesentlichen, wird dem Benutzer ein tag auf Ihrer Website, die enthält einen Pfad zu meinem widget. Die URL für diesen Weg wird auch die app_id für den jeweiligen Benutzer aufrufen der widget. Zum Beispiel

<script src="www.widget.com/widget/{USER_ID}">

Ich möchte in der Lage sein, mithilfe von AWS Lambda-und API-Gateway zu tun, ein paar schnelle Authentifizierung, die der Benutzer berechtigt ist, laden Sie das widget und dienen der javascript-Inhalte. Das ist super einfach, mit etwas res.sendFile in Express.js aber API-Gateway scheint nicht zu unterstützen, versenden einer Datei. Gibt es eine Möglichkeit, die ich nutzen kann API-Gateway zu dienen, die javascript-schnell, ohne stringify die gesamte Datei?

InformationsquelleAutor JensenS | 2016-08-16



2 Replies
  1. 2

    Können Sie die setup-api-gateway-proxy alle Anfragen an s3 die hosts-Datei (S3-proxy-Beispiel). Ansonsten können Sie setup ein Http-Proxy integration und führen Sie dann eine backend-http-server, dient die gesamte Datei.
    Um eine Authentifizierung durchzuführen, die auf die bitte, die Sie ausführen können eine lambda-Funktion als benutzerdefinierte Vollmachtgeber

    Wenn Sie einen lambda-integration geben, die nur ist, um wieder die gesamte Datei in die Antwort mit-callback –lambda-Dokumentation für Rückruf.

    • Danke für die Antwort! Das problem mit der benutzerdefinierten Vollmachtgeber feature ist, dass die token kommen aus dem Kopf. Da brauche ich das auth-token aus der url-Parameter, die nicht arbeiten. Kennst du eine andere Möglichkeit, ich kann authentifizieren, bevor Zugriff auf S3?
  2. 1

    Erste, Antworten Sie so etwas wie dies in Ihrer Lambda-Funktion:

    {
        statusCode: 200,
        headers: { 
            "content-type": "text/javascript"
        },
        body: buildMyJavascriptFileInTextFormat(event.user_id),
        isBase64Encoded: false,
    }

    Geht dann in das API-Gateway-Ressourcen und einrichten der integration die folgenden Schritte:

    Methode Anforderung:

    Fügen Sie eine query-string aufgerufen user_id.

    Integration Anforderung:

    {
        "user_id": "$input.params('user_id')"
    }

    Integration Antwort

    Gehen Sie auf Status-code: 200 erstellen Sie eine Mapping-Vorlage genannt: text/javascript und dieses einrichten:

    $input.path('body')

    Methode Response

    In der box Response Body for 200 ändern Sie die Content-Type zu text/javascript.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.