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à.
Self-managed Archiviazione del codice S3
Per impostazione predefinita, quando crei o aggiorni una funzione o un layer Lambda da un archivio di file .zip, Lambda archivia una copia del codice in memoria. Lambda-managed Ogni AWS account ha una quota di 300 GB di spazio di Lambda-managed archiviazione per regione.
Con l'archiviazione del codice S3 autogestita, puoi configurare Lambda in modo che faccia riferimento al tuo codice direttamente da un bucket S3 nel tuo account. Lambda non memorizza una copia del codice, quindi il codice non viene conteggiato nella tua quota di archiviazione. Lambda-managed Lambda accede al codice direttamente dal bucket S3.
Self-managed L'archiviazione del codice S3 è disponibile per tutte le funzioni e i livelli creati e aggiornati utilizzando archivi di file .zip. È compatibile con tutte le classi di archiviazione S3 ad eccezione delle classi di archiviazione Glacier.
Nota
Self-managed L'archiviazione del codice S3 non modifica la dimensione massima del pacchetto di distribuzione .zip, che rimane a 250 MB (decompresso).
Argomenti
Configurazione dell'archiviazione del codice S3 autogestita
Per utilizzare lo storage di codice S3 autogestito, completa i seguenti passaggi:
-
Crea un bucket S3 o utilizza un bucket esistente nel tuo account.
-
Abilita il controllo delle versioni https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html S3 per il bucket. Lambda richiede il controllo delle versioni di S3 per tenere traccia della versione dell'oggetto sorgente da utilizzare. Ogni volta che carichi un nuovo pacchetto .zip, S3 crea una nuova versione in modo che Lambda possa distinguere gli aggiornamenti.
-
Carica il tuo pacchetto di distribuzione .zip nel bucket S3.
-
Concedi l'entità del servizio Lambda
s3:GetObjecte les3:GetObjectVersionautorizzazioni per l'oggetto sorgente. Vedi Configurazione delle autorizzazioni. -
Crea o aggiorna la funzione o il livello, specificando l'oggetto S3, la chiave S3, la versione dell'oggetto S3 e impostando su.
S3ObjectStorageModeREFERENCE
Configurazione delle autorizzazioni
Per utilizzare l'archiviazione di codice S3 autogestita, concedi al servizio Lambda service principal (lambda.amazonaws.com) l'autorizzazione ad accedere agli oggetti sorgente. Aggiungi la seguente policy per il bucket S3:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LambdaSelfManagedCodeAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::my-bucket/my-function.zip" ], "Principal": { "Service": "lambda.amazonaws.com" }, "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:lambda:us-east-1:111122223333:function:my-function" } } } ] }
Creazione di una funzione con storage S3 autogestito
È possibile creare una funzione con archiviazione di codice S3 autogestita utilizzando la console, il, o. AWS CLI AWS CloudFormation
Nota
L'editor di codice della console Lambda non è disponibile per le funzioni che utilizzano la modalità Reference. Per modificare il codice della funzione, aggiorna il file .zip nel bucket S3 e aggiorna la funzione.
Utilizzo della console
Quando aggiorni una funzione da una posizione S3 nella console Lambda, puoi scegliere la modalità di archiviazione del codice.
Per aggiornare una funzione per utilizzare la modalità Reference (console)
Aprire la pagina Funzioni
della console Lambda. -
Scegliere la funzione da aggiornare e scegliere la scheda Codice
-
In Code source, scegli Aggiorna, quindi scegli Aggiorna da un file in Amazon S3.
-
Per l'URL del link di Amazon S3, inserisci l'URL del link S3 del tuo file .zip.
-
In modalità di archiviazione del codice, scegli la modalità di riferimento.
-
Scegli Save (Salva).
Dopo aver configurato la modalità di riferimento, la sezione delle proprietà del codice nella scheda Codice della funzione mostra la modalità di archiviazione del codice: Reference e la posizione S3 che punta al bucket S3.
Utilizzo di AWS CLI
Usa il create-function comando con il parametro: S3ObjectStorageMode=REFERENCE
aws lambda create-function \ --function-name my-function \ --runtime python3.12 \ --role arn:aws:iam::111122223333:role/lambda-execution-role \ --handler lambda_function.lambda_handler \ --code S3Bucket=my-bucket,\ S3Key=my-function.zip,\ S3ObjectVersion=abc123def456,\ S3ObjectStorageMode=REFERENCE
Per aggiornare una funzione esistente per utilizzare lo storage S3 autogestito:
aws lambda update-function-code \ --function-name my-function \ --s3-bucketmy-bucket\ --s3-keymy-function.zip\ --s3-object-versionabc123def456\ --s3-object-storage-mode REFERENCE
Importante
È necessario specificare S3ObjectStorageMode=REFERENCE in ogni chiamata a. update-function-code Se si ometteS3ObjectStorageMode, il valore predefinito è COPY e Lambda memorizza il codice in memoria. Lambda-managed
Utilizzo AWS CloudFormation
Nel CloudFormation modello, imposta su S3ObjectStorageMode REFERENCE nella Code proprietà della risorsa: AWS::Lambda::Function
Resources: MyFunction: Type: AWS::Lambda::Function Properties: FunctionName: my-function Runtime: python3.12 Handler: lambda_function.lambda_handler Role: !GetAtt LambdaExecutionRole.Arn Code: S3Bucket:my-bucketS3Key:my-function.zipS3ObjectVersion:abc123def456S3ObjectStorageMode: REFERENCE
Utilizzo dello storage S3 autogestito con livelli
È inoltre possibile utilizzare lo storage di codice S3 autogestito per le versioni a più livelli. Usa il publish-layer-version comando con: S3ObjectStorageMode=REFERENCE
aws lambda publish-layer-version \ --layer-name my-layer \ --content S3Bucket=my-bucket,S3Key=my-layer.zip,S3ObjectStorageMode=REFERENCE \ --compatible-runtimes python3.12
È possibile utilizzare qualsiasi combinazione Lambda-managed e archiviazione autogestita per il codice funzione e il codice di livello.
Passaggio da una modalità di archiviazione all'altra
È possibile passare dall'archiviazione del codice S3 all'altra Lambda-managed e gestirla automaticamente quando si aggiorna il codice della funzione o si pubblica una nuova versione del layer. Impostato su S3ObjectStorageMode uno o: COPY REFERENCE
-
COPY(impostazione predefinita): Lambda copia il codice sorgente nell' Lambda-managed archivio. -
REFERENCE— Lambda fa riferimento al codice sorgente direttamente dal bucket S3 senza archiviarne una copia.
Quando si passa da COPY aREFERENCE, Lambda elimina la Lambda-managed copia del codice sorgente. Quando si passa da REFERENCE aCOPY, Lambda crea una copia del codice sorgente in memoria. Lambda-managed Il passaggio a COPY non riesce se si supera il limite di archiviazione del Lambda-managed codice.
Ciclo di vita delle funzioni con storage autogestito
Lambda accede periodicamente all'oggetto sorgente dal bucket S3 per riottimizzare il codice della funzione. È necessario mantenere l'accesso all'oggetto sorgente affinché la funzione rimanga attiva.
-
Se Lambda perde l'accesso all'oggetto sorgente di una funzione, la funzione passa allo
Inactivestato. Per ripristinare la funzione, ripristina l'accesso all'oggetto sorgente e aggiorna la funzione. -
Se Lambda perde l'accesso all'oggetto sorgente per un livello, la funzione rimane
Active. È possibile aggiornare la configurazione della funzione (senza aggiornare i livelli), aggiornare il codice della funzione o aggiornare la configurazione della funzione con nuovi livelli. Tuttavia, l'aggiornamento della configurazione della funzione con il livello inaccessibile non riesce.
Cross-account e utilizzo in più regioni
Puoi creare funzioni e livelli dal codice sorgente nei bucket S3 in diversi account e in diverse regioni. Cross-Region il recupero degli oggetti comporta costi aggiuntivi per il trasferimento dei dati S3. Per i dettagli, consulta i prezzi di S3.
Considerazioni
-
Self-managed L'archiviazione del codice S3 è disponibile solo per le funzioni e i livelli di archiviazione di file .zip. Le funzioni di immagine dei contenitori continuano a utilizzare Amazon ECR.
-
La dimensione massima del pacchetto di distribuzione .zip (250 MB decompresso) rimane invariata.
-
Paghi le tariffe di storage standard di Amazon S3 per il codice archiviato nei tuoi bucket autogestiti. Lambda non addebita alcun costo per il recupero di oggetti S3 all'interno della stessa regione.
-
Self-managed L'archiviazione del codice S3 è compatibile con tutte le classi di archiviazione S3 ad eccezione delle classi di archiviazione Glacier.
-
Puoi utilizzare funzionalità S3 come S3 Cross-Region Replication per condividere gli artefatti tra le regioni e le policy del ciclo di vita S3 per gestire gli oggetti.