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.
Automatisieren Sie das S3 Object Lambda-Setup mit einer Vorlage CloudFormation
Sie können eine AWS CloudFormation Vorlage verwenden, um schnell einen Amazon S3 Object Lambda Access Point zu erstellen. Die CloudFormation Vorlage erstellt automatisch relevante Ressourcen, konfiguriert AWS Identity and Access Management (IAM) -Rollen und richtet eine AWS Lambda Funktion ein, die Anfragen automatisch über den Object Lambda Access Point verarbeitet. Mit der CloudFormation Vorlage können Sie bewährte Verfahren implementieren, Ihre Sicherheitslage verbessern und Fehler reduzieren, die durch manuelle Prozesse verursacht werden.
Dieses GitHub Repository
Die in der Vorlage bereitgestellte Lambda-Funktion führt keine Transformation aus. Stattdessen gibt sie Ihre Objekte im Ist-Zustand aus Ihrem S3-Bucket zurück. Sie können die Funktion klonen und Ihren eigenen Transformationscode hinzufügen, um Daten zu ändern und zu verarbeiten, wenn sie an eine Anwendung zurückgegeben werden. Weitere Informationen zum Anpassen Ihrer Funktion finden Sie unter Ändern der Lambda-Funktion und Schreiben von Lambda-Funktionen für S3 Object Lambda Access Points.
Ändern der Vorlage
Erstellen eines neuen unterstützenden Zugriffspunkts
S3 Object Lambda verwendet zwei Zugriffspunkte, einen Object Lambda Access Point und einen standardmäßigen S3-Zugriffspunkt, der als unterstützender Zugriffspunkt bezeichnet wird. Wenn Sie eine Anforderung an einen Object Lambda Access Point ausführen, ruft S3 entweder Lambda in Ihrem Namen auf oder delegiert die Anforderung an den unterstützenden Zugriffspunkt, abhängig von der Konfiguration von S3 Object Lambda. Sie können einen neuen unterstützenden Zugriffspunkt erstellen, indem Sie den folgenden Parameter als Teil des aws
cloudformation deploy
-Befehls, der beim Bereitstellen der Vorlage erstellt werden soll, übergeben.
CreateNewSupportingAccessPoint=true
Konfigurieren einer Nutzlast-Funktion
Sie können eine Nutzlast konfigurieren, um der Lambda-Funktion zusätzliche Daten bereitzustellen, indem Sie beim Bereitstellen der Vorlage den folgenden Parameter als Teil des aws cloudformation
deploy
-Befehls übergeben.
LambdaFunctionPayload="format=json"
CloudWatch Amazon-Überwachung aktivieren
Sie können die CloudWatch Überwachung aktivieren, indem Sie bei der Bereitstellung der Vorlage den folgenden Parameter als Teil des aws cloudformation deploy
Befehls übergeben.
EnableCloudWatchMonitoring=true
Dieser Parameter aktiviert die Anforderungsmetriken Ihres Object Lambda Access Point für Amazon S3 und erstellt zwei CloudWatch Alarme zur Überwachung von clientseitigen und serverseitigen Fehlern.
Anmerkung
Für die CloudWatch Nutzung durch Amazon fallen zusätzliche Kosten an. Weitere Informationen zu Amazon-S3-Anforderungsmetriken finden Sie unter Überwachen und Protokollieren von Zugriffspunkten.
Details zu den Preisen finden Sie unter CloudWatch -Preise
Konfigurieren von Provisioned Concurrency
Zur Reduzierung der Latenz können Sie bereitgestellte Parallelität für die Lambda-Funktion konfigurieren, die den Object Lambda Access Point unterstützt, indem Sie die Vorlage so bearbeiten, dass sie die folgenden Zeilen unter Resources
einschließt.
LambdaFunctionVersion: Type: AWS::Lambda::Version Properties: FunctionName: !Ref LambdaFunction ProvisionedConcurrencyConfig: ProvisionedConcurrentExecutions: Integer
Anmerkung
Für die Bereitstellung von Nebenläufigkeit fallen zusätzliche Gebühren an. Weitere Informationen zur bereitgestellten Parallelität finden Sie unter Verwalten der von Lambda bereitgestellten Parallelität im AWS Lambda -Entwicklerhandbuch.
Details zu den Preisen finden Sie unter AWS Lambda
-Preise
Ändern der Lambda-Funktion
Ändern der Header-Werte für eine GetObject
-Anforderung
Standardmäßig leitet die Lambda-Funktion alle Header außer Content-Length
und ETag
von der vorsignierten URL Anfrage an den Client weiter. GetObject
Basierend auf Ihrem Transformationscode in der Lambda-Funktion können Sie wählen, ob Sie neue Header-Werte an den GetObject
-Client senden.
Sie können Ihre Lambda-Funktion aktualisieren, um neue Header-Werte zu senden, indem Sie sie in der WriteGetObjectResponse
API Operation übergeben.
Wenn Ihre Lambda-Funktion beispielsweise den Text in Amazon-S3-Objekten in eine andere Sprache übersetzt, können Sie einen neuen Wert im Content-Language
-Header bestätigen. Ändern Sie die writeResponse
-Funktion dazu wie folgt:
async function writeResponse (s3Client: S3, requestContext: GetObjectContext, transformedObject: Buffer, headers: Headers): Promise<PromiseResult<{}, AWSError>> { const { algorithm, digest } = getChecksum(transformedObject); return s3Client.writeGetObjectResponse({ RequestRoute: requestContext.outputRoute, RequestToken: requestContext.outputToken, Body: transformedObject, Metadata: { 'body-checksum-algorithm': algorithm, 'body-checksum-digest': digest }, ...headers, ContentLanguage: '
my-new-language
' }).promise(); }
Eine vollständige Liste der unterstützten Header finden Sie WriteGetObjectResponse
in der Amazon Simple Storage Service API Reference.
Zurückgeben von Metadaten Headern
Sie können Ihre Lambda-Funktion aktualisieren, um neue Header-Werte zu senden, indem Sie sie in der WriteGetObjectResponse
APIOperationsanforderung übergeben.
async function writeResponse (s3Client: S3, requestContext: GetObjectContext, transformedObject: Buffer, headers: Headers): Promise<PromiseResult<{}, AWSError>> { const { algorithm, digest } = getChecksum(transformedObject); return s3Client.writeGetObjectResponse({ RequestRoute: requestContext.outputRoute, RequestToken: requestContext.outputToken, Body: transformedObject, Metadata: { 'body-checksum-algorithm': algorithm, 'body-checksum-digest': digest, 'my-new-header': '
my-new-value
' }, ...headers }).promise(); }
Einen neuen Statuscode zurückgeben
Sie können einen benutzerdefinierten Statuscode an den GetObject
Client zurückgeben, indem Sie ihn in der WriteGetObjectResponse
APIBetriebsanforderung übergeben.
async function writeResponse (s3Client: S3, requestContext: GetObjectContext, transformedObject: Buffer, headers: Headers): Promise<PromiseResult<{}, AWSError>> { const { algorithm, digest } = getChecksum(transformedObject); return s3Client.writeGetObjectResponse({ RequestRoute: requestContext.outputRoute, RequestToken: requestContext.outputToken, Body: transformedObject, Metadata: { 'body-checksum-algorithm': algorithm, 'body-checksum-digest': digest }, ...headers, StatusCode:
Integer
}).promise(); }
Eine vollständige Liste der unterstützten Statuscodes finden Sie WriteGetObjectResponse
in der Amazon Simple Storage Service API Reference.
Anwenden der Parameter Range
und partNumber
auf das Quellobjekt
Standardmäßig kann der von der CloudFormation Vorlage erstellte Object Lambda Access Point die partNumber
Parameter Range
und verarbeiten. Die Lambda-Funktion wendet den Bereich oder die Teilenummer an, die auf das transformierte Objekt angefordert wird. Dazu muss die Funktion das gesamte Objekt herunterladen und die Transformation ausführen. In einigen Fällen werden Ihre transformierten Objektbereiche möglicherweise genau Ihren Quellobjektbereichen zugeordnet. Dies bedeutet, dass das Anfordern des Bytebereichs A-B für Ihr Quellobjekt und das Ausführen der Transformation zum gleichen Ergebnis führen kann, wie das Anfordern des gesamten Objekts, das Ausführen der Transformation und das Zurückgeben des Bytebereichs A-B für das transformierte Objekt.
In solchen Fällen können Sie die Implementierung der Lambda-Funktion ändern, um den Bereich oder die Teilenummer direkt auf das Quellobjekt anzuwenden. Dieser Ansatz verbessert die allgemeine Funktionslatenz und den erforderlichen Speicher. Weitere Informationen finden Sie unter Arbeitet mit Range and partNumber Header.
Deaktivieren der Verarbeitung von Range
und partNumber
Standardmäßig kann der von der CloudFormation Vorlage erstellte Object Lambda Access Point die partNumber
Parameter Range
und verarbeiten. Wenn Sie dieses Verhalten nicht benötigen, können Sie es deaktivieren, indem Sie die folgenden Zeilen aus der Vorlage entfernen.
AllowedFeatures: - GetObject-Range - GetObject-PartNumber - HeadObject-Range - HeadObject-PartNumber
Transformieren von großen Objekten
Standardmäßig verarbeitet die Lambda-Funktion das gesamte Objekt im Speicher, bevor es mit dem Streamen der Antwort auf S3 Object Lambda beginnen kann. Sie können die Funktion ändern, um die Antwort zu streamen, während sie die Transformation durchführt. Dies hilft, die Transformationslatenz und die Speichergröße der Lambda-Funktion zu reduzieren. Eine Beispielimplementierung finden Sie unter Beispiel für komprimierte Inhalte streamen.