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 un archivio. 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 codice direttamente da un bucket S3 del tuo account. Lambda non memorizza una copia del codice, quindi il codice non viene conteggiato nella quota di spazio di Lambda-managed archiviazione. 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 tranne le 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 usa un bucket esistente nel tuo account.
-
Abilita il controllo delle versioni S3 per il bucket. Lambda richiede il controllo delle versioni 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 il principale del servizio Lambda
s3:GetObjectes3:GetObjectVersionle autorizzazioni per l'oggetto di origine. Vedi Configurazione delle autorizzazioni. -
Crea o aggiorna la tua 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 lo storage di codice S3 autogestito, concedi al servizio Lambda l'autorizzazione principal (lambda.amazonaws.com) per accedere ai tuoi oggetti di origine. Aggiungi la seguente policy sui 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
Puoi creare una funzione con l'archiviazione del codice S3 autogestita utilizzando o. AWS CLI AWS CloudFormation
Utilizzo di AWS CLI
Usa il create-function comando con il S3ObjectStorageMode=REFERENCE parametro:
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 omettiS3ObjectStorageMode, l'impostazione predefinita è e COPY Lambda archivia il codice in un archivio. Lambda-managed
Utilizzo AWS CloudFormation
Nel tuo 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
Puoi anche utilizzare l'archiviazione del codice S3 autogestita 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 di Lambda-managed storage autogestito per codice funzionale e codice di livello.
Passaggio da una modalità di archiviazione all'altra
Puoi passare da una memorizzazione del codice S3 all'altra Lambda-managed e gestirla automaticamente quando aggiorni il codice della funzione o pubblichi una nuova versione di livello. Imposta su uno S3ObjectStorageMode dei due o su: COPY REFERENCE
-
COPY(impostazione predefinita): Lambda copia il codice sorgente nello storage. Lambda-managed -
REFERENCE— Lambda fa riferimento al codice sorgente direttamente dal bucket S3 senza archiviarne una copia.
Quando passi da COPY aREFERENCE, Lambda elimina la Lambda-managed copia del codice sorgente. Quando passi da REFERENCE aCOPY, Lambda crea una copia del codice sorgente in Lambda-managed archivio. 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 stato.
InactivePer ripristinare la funzione, ripristina l'accesso all'oggetto di origine 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 delle funzioni con il livello inaccessibile non riesce.
Cross-account e utilizzo interregionale
Puoi creare funzioni e livelli a partire dal codice sorgente in bucket S3 in diversi account e in diverse regioni. Cross-Region il recupero degli oggetti comporta costi aggiuntivi per il trasferimento dei dati S3. Consulta i prezzi di S3
Considerazioni
-
Self-managed L'archiviazione del codice S3 è disponibile solo per le funzioni e i livelli di archiviazione dei file.zip. Le funzioni di immagine dei container continuano a utilizzare Amazon ECR.
-
La dimensione massima del pacchetto di distribuzione.zip (250 MB decompressi) 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 tranne le classi di archiviazione Glacier.
-
Puoi utilizzare funzionalità di S3 come S3 Cross-Region Replication per condividere artefatti tra regioni e politiche del ciclo di vita di S3 per gestire gli oggetti.