Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Automatizza la configurazione di S3 Object Lambda con un modello CloudFormation
Puoi utilizzare un AWS CloudFormation modello per creare rapidamente un punto di accesso Amazon S3 Object Lambda. Il CloudFormation modello crea automaticamente le risorse pertinenti, configura AWS Identity and Access Management (IAM) i ruoli e imposta una AWS Lambda funzione che gestisce automaticamente le richieste tramite l'Object Lambda Access Point. Con il CloudFormation modello, puoi implementare le migliori pratiche, migliorare il tuo livello di sicurezza e ridurre gli errori causati dai processi manuali.
Questo GitHub repository
La funzione Lambda fornita nel modello non esegue alcuna trasformazione. Al contrario, restituisce gli oggetti così come sono dal bucket S3. È possibile clonare la funzione e aggiungere il proprio codice di trasformazione per modificare ed elaborare i dati man mano che vengono restituiti ad un'applicazione. Per ulteriori informazioni sulla modifica della funzione, consulta Modifica della funzione Lambda e Scrittura di funzioni Lambda per i punti di accesso Lambda per oggetti S3.
Modificare il modello
Creazione di un nuovo punto di accesso di supporto
Lambda per oggetti S3 utilizza due punti di accesso, un punto di accesso Lambda per oggetti e un punto di accesso S3 standard, denominato punto di accesso di supporto. Quando effettui una richiesta a un punto di accesso Lambda per oggetti, S3 richiama Lambda per tuo conto o delega la richiesta al punto di accesso di supporto, a seconda della configurazione di Lambda per oggetti S3. È possibile creare un nuovo punto di accesso di supporto passando il seguente parametro come parte del comando aws
cloudformation deploy
durante l'implementazione del modello.
CreateNewSupportingAccessPoint=true
Configurazione di un payload di funzione
È possibile configurare un payload per fornire dati supplementari alla funzione Lambda passando il seguente parametro come parte del comando aws cloudformation
deploy
al momento dell'implementazione del modello.
LambdaFunctionPayload="format=json"
Abilitare il CloudWatch monitoraggio di Amazon
Puoi abilitare il CloudWatch monitoraggio passando il seguente parametro come parte del aws cloudformation deploy
comando durante la distribuzione del modello.
EnableCloudWatchMonitoring=true
Questo parametro abilita i parametri delle richieste Object Lambda Access Point per Amazon S3 e crea CloudWatch due allarmi per monitorare gli errori lato client e lato server.
Nota
CloudWatch L'utilizzo di Amazon comporterà costi aggiuntivi. Per ulteriori informazioni sulle metriche delle richieste Amazon S3, consulta la sezione Monitoraggio e registrazione degli access point.
Per i dettagli sui prezzi, vedere Prezzi di CloudWatch
Configurazione della simultaneità fornita
Per ridurre la latenza, è possibile configurare la simultaneità con provisioning per la funzione Lambda che supporta il punto di accesso Lambda per oggetti modificando il modello per includere le seguenti righe in Resources
.
LambdaFunctionVersion: Type: AWS::Lambda::Version Properties: FunctionName: !Ref LambdaFunction ProvisionedConcurrencyConfig: ProvisionedConcurrentExecutions: Integer
Nota
Saranno applicati costi aggiuntivi la simultaneità con provisioning. Per ulteriori informazioni sulla simultaneità con provisioning, consulta Gestione della simultaneità con provisioning di Lambda nella Guida per gli sviluppatori di AWS Lambda .
Per i dettagli sui prezzi, vedere Prezzi di AWS Lambda
Modifica della funzione Lambda
Modifica dei valori di intestazione per una richiesta GetObject
Per impostazione predefinita, la funzione Lambda inoltra tutte le intestazioni, tranne Content-Length
eETag
, dalla richiesta prefirmata al clientURL. GetObject
In base al codice di trasformazione nella funzione Lambda, puoi scegliere di inviare nuovi valori di intestazione al client GetObject
.
Puoi aggiornare la tua funzione Lambda per inviare nuovi valori di intestazione passandoli durante l'operazione. WriteGetObjectResponse
API
Ad esempio, se la funzione Lambda traduce il testo negli oggetti Amazon S3 in una lingua diversa, puoi passare un nuovo valore nell'intestazione Content-Language
. Puoi fare ciò modificando la funzione writeResponse
come descritto di seguito.
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(); }
Per un elenco completo delle intestazioni supportate, consulta WriteGetObjectResponse
Amazon Simple Storage Service API Reference.
Restituzione di intestazioni di metadati
Puoi aggiornare la tua funzione Lambda per inviare nuovi valori di intestazione passandoli nella richiesta dell'WriteGetObjectResponse
APIoperazione.
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(); }
Restituzione di un nuovo codice di stato
È possibile restituire un codice di stato personalizzato al GetObject
client passandolo nella richiesta dell'WriteGetObjectResponse
APIoperazione.
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(); }
Per un elenco completo dei codici di stato supportati, consulta WriteGetObjectResponse
Amazon Simple Storage Service API Reference.
Applicazione dei Range
e partNumber
all'oggetto di origine
Per impostazione predefinita, l'Object Lambda Access Point creato dal CloudFormation modello può gestire i parametri Range
andpartNumber
. La funzione Lambda applica l'intervallo o il numero di parte richiesto all'oggetto trasformato. A tale scopo, è necessario scaricare l'intero oggetto ed eseguire la trasformazione. In alcuni casi, gli intervalli di oggetti trasformati potrebbero essere associati esattamente agli intervalli di oggetti fonte. Ciò significa che la richiesta dell'intervallo di byte A-B sull'oggetto di origine e l'esecuzione della trasformazione potrebbero produrre lo stesso risultato della richiesta dell'intero oggetto, dell'esecuzione della trasformazione e della restituzione dell'intervallo di byte A-B sull'oggetto trasformato.
In questi casi, è possibile modificare l'implementazione della funzione Lambda per applicare l'intervallo o il numero di parte direttamente all'oggetto fonte. Questo approccio riduce la latenza generale della funzione e la memoria richieste. Per ulteriori informazioni, consulta Lavorare con Range e partNumber headers.
Disabilitazione della gestione di Range
epartNumber
Per impostazione predefinita, l'Object Lambda Access Point creato dal CloudFormation modello può gestire i parametri Range
andpartNumber
. Se questo comportamento non è necessario, è possibile disabilitarlo rimuovendo le seguenti righe dal modello:
AllowedFeatures: - GetObject-Range - GetObject-PartNumber - HeadObject-Range - HeadObject-PartNumber
Trasformazione di oggetti di grandi dimensioni
Per impostazione predefinita, la funzione Lambda elabora l'intero oggetto in memoria prima di poter avviare lo streaming della risposta a S3 Object Lambda. È possibile modificare la funzione per effettuare lo streaming della risposta mentre esegue la trasformazione. Ciò aiuta a ridurre la latenza della trasformazione e la dimensione della memoria della funzione Lambda. Per un'implementazione esemplificativa, consulta Streaming esemplificativo del contenuto compresso.