AWS Lambda
Create, invoke, and manage Lambda functions with synchronous and asynchronous patterns, versions, aliases, and event mappings.
Busque em todas as páginas da documentação
Create, invoke, and manage Lambda functions with synchronous and asynchronous patterns, versions, aliases, and event mappings.
Call a function and wait for its JSON response.
# --- Python (boto3) ---
import boto3, json
lam = boto3.client("lambda")
resp = lam.invoke(FunctionName="my-fn", InvocationType="RequestResponse", Payload=json.dumps({"x": 1}))
result = json.load(resp["Payload"])
print(result)// --- TypeScript (AWS SDK v3) ---
import { LambdaClient, InvokeCommand } from "@aws-sdk/client-lambda";
const lam = new LambdaClient({});
const out = await lam.send(new InvokeCommand({
FunctionName: "my-fn",
InvocationType: "RequestResponse",
Payload: JSON.stringify({ x: 1 })
}));
const body = JSON.parse(Buffer.from(out.Payload!).toString());Fire and forget - return immediately without waiting for response.
# --- Python (boto3) ---
import boto3, json
lam = boto3.client("lambda")
resp = lam.invoke(FunctionName="my-fn", InvocationType="Event", Payload=json.dumps({"job": "process"}))
print(resp["StatusCode"]) # 202// --- TypeScript (AWS SDK v3) ---
import { LambdaClient, InvokeCommand } from "@aws-sdk/client-lambda";
const lam = new LambdaClient({});
const out = await lam.send(new InvokeCommand({
FunctionName: "my-fn",
InvocationType: "Event",
Payload: JSON.stringify({ job: "process" })
}));
console.log(out.StatusCode); // 202Extract and parse the Payload stream from invoke response.
# --- Python (boto3) ---
import boto3, json
lam = boto3.client("lambda")
resp = lam.invoke(FunctionName="my-fn", Payload=json.dumps({"key": "val"}))
payload_stream = resp["Payload"].read() # bytes
result = json.loads(payload_stream)
print(result)// --- TypeScript (AWS SDK v3) ---
import { LambdaClient, InvokeCommand } from "@aws-sdk/client-lambda";
const lam = new LambdaClient({});
const out = await lam.send(new InvokeCommand({
FunctionName: "my-fn",
Payload: JSON.stringify({ key: "val" })
}));
const text = Buffer.from(out.Payload!).toString();
const result = JSON.parse(text);Deploy Lambda code from a .zip file in S3.
# --- Python (boto3) ---
import boto3
lam = boto3.client("lambda")
resp = lam.create_function(
FunctionName="my-fn",
Runtime="python3.11",
Role="arn:aws:iam::123456789012:role/lambda-role",
Handler="index.handler",
Code={"S3Bucket": "my-bucket", "S3Key": "fn.zip"}
)
print(resp["FunctionArn"])// --- TypeScript (AWS SDK v3) ---
import { LambdaClient, CreateFunctionCommand } from "@aws-sdk/client-lambda";
const lam = new LambdaClient({});
const out = await lam.send(new CreateFunctionCommand({
FunctionName: "my-fn",
Runtime: "nodejs18.x",
Role: "arn:aws:iam::123456789012:role/lambda-role",
Handler: "index.handler",
Code: { S3Bucket: "my-bucket", S3Key: "fn.zip" }
}));
console.log(out.FunctionArn);Push new code without modifying configuration or environment variables.
# --- Python (boto3) ---
import boto3
lam = boto3.client("lambda")
resp = lam.update_function_code(
FunctionName="my-fn",
S3Bucket="my-bucket",
S3Key="fn-v2.zip"
)
print(resp["LastModified"])// --- TypeScript (AWS SDK v3) ---
import { LambdaClient, UpdateFunctionCodeCommand } from "@aws-sdk/client-lambda";
const lam = new LambdaClient({});
const out = await lam.send(new UpdateFunctionCodeCommand({
FunctionName: "my-fn",
S3Bucket: "my-bucket",
S3Key: "fn-v2.zip"
}));
console.log(out.LastModified);Adjust memory, timeout, environment variables, or layers without redeploying code.
# --- Python (boto3) ---
import boto3
lam = boto3.client("lambda")
resp = lam.update_function_configuration(
FunctionName="my-fn",
MemorySize=512,
Timeout=60,
Environment={"Variables": {"DB_URL": "postgres://..."}}
)
print(resp["MemorySize"])// --- TypeScript (AWS SDK v3) ---
import { LambdaClient, UpdateFunctionConfigurationCommand } from "@aws-sdk/client-lambda";
const lam = new LambdaClient({});
const out = await lam.send(new UpdateFunctionConfigurationCommand({
FunctionName: "my-fn",
MemorySize: 512,
Timeout: 60,
Environment: { Variables: { DB_URL: "postgres://..." } }
}));
console.log(out.MemorySize);Create an immutable version snapshot and point a named alias to it.
# --- Python (boto3) ---
import boto3
lam = boto3.client("lambda")
ver = lam.publish_version(FunctionName="my-fn", Description="v1.0.0")
alias = lam.create_alias(FunctionName="my-fn", Name="prod", FunctionVersion=ver["Version"])
print(alias["AliasArn"])// --- TypeScript (AWS SDK v3) ---
import { LambdaClient, PublishVersionCommand, CreateAliasCommand } from "@aws-sdk/client-lambda";
const lam = new LambdaClient({});
const ver = await lam.send(new PublishVersionCommand({ FunctionName: "my-fn" }));
const alias = await lam.send(new CreateAliasCommand({
FunctionName: "my-fn",
Name: "prod",
FunctionVersion: ver.Version!
}));
console.log(alias.AliasArn);Grant S3, SNS, API Gateway, or other AWS services permission to invoke the function.
# --- Python (boto3) ---
import boto3
lam = boto3.client("lambda")
lam.add_permission(
FunctionName="my-fn",
StatementId="AllowS3",
Action="lambda:InvokeFunction",
Principal="s3.amazonaws.com",
SourceArn="arn:aws:s3:::my-bucket"
)
print("Permission added")// --- TypeScript (AWS SDK v3) ---
import { LambdaClient, AddPermissionCommand } from "@aws-sdk/client-lambda";
const lam = new LambdaClient({});
await lam.send(new AddPermissionCommand({
FunctionName: "my-fn",
StatementId: "AllowS3",
Action: "lambda:InvokeFunction",
Principal: "s3.amazonaws.com",
SourceArn: "arn:aws:s3:::my-bucket"
}));Subscribe a Lambda function to an SQS queue for automatic message processing.
# --- Python (boto3) ---
import boto3
lam = boto3.client("lambda")
resp = lam.create_event_source_mapping(
EventSourceArn="arn:aws:sqs:us-east-1:123456789012:my-queue",
FunctionName="my-fn",
BatchSize=10
)
print(resp["UUID"])// --- TypeScript (AWS SDK v3) ---
import { LambdaClient, CreateEventSourceMappingCommand } from "@aws-sdk/client-lambda";
const lam = new LambdaClient({});
const out = await lam.send(new CreateEventSourceMappingCommand({
EventSourceArn: "arn:aws:sqs:us-east-1:123456789012:my-queue",
FunctionName: "my-fn",
BatchSize: 10
}));
console.log(out.UUID);Retrieve function metadata, code location, and configuration.
# --- Python (boto3) ---
import boto3
lam = boto3.client("lambda")
resp = lam.get_function(FunctionName="my-fn")
print(resp["Configuration"]["FunctionArn"])
print(resp["Code"]["Location"]) # download link// --- TypeScript (AWS SDK v3) ---
import { LambdaClient, GetFunctionCommand } from "@aws-sdk/client-lambda";
const lam = new LambdaClient({});
const out = await lam.send(new GetFunctionCommand({ FunctionName: "my-fn" }));
console.log(out.Configuration?.FunctionArn);
console.log(out.Code?.Location);Target a specific version number or alias instead of $LATEST.
# --- Python (boto3) ---
import boto3, json
lam = boto3.client("lambda")
resp = lam.invoke(
FunctionName="my-fn",
Qualifier="prod", # or "3" for a version
Payload=json.dumps({"data": "test"})
)
result = json.load(resp["Payload"])// --- TypeScript (AWS SDK v3) ---
import { LambdaClient, InvokeCommand } from "@aws-sdk/client-lambda";
const lam = new LambdaClient({});
const out = await lam.send(new InvokeCommand({
FunctionName: "my-fn",
Qualifier: "prod",
Payload: JSON.stringify({ data: "test" })
}));
const body = JSON.parse(Buffer.from(out.Payload!).toString());Retrieve CloudWatch Logs for an invocation without leaving the SDK call.
# --- Python (boto3) ---
import boto3, json, base64
lam = boto3.client("lambda")
resp = lam.invoke(
FunctionName="my-fn",
LogType="Tail",
Payload=json.dumps({})
)
logs = base64.b64decode(resp["LogResult"]).decode()
print(logs)// --- TypeScript (AWS SDK v3) ---
import { LambdaClient, InvokeCommand } from "@aws-sdk/client-lambda";
const lam = new LambdaClient({});
const out = await lam.send(new InvokeCommand({
FunctionName: "my-fn",
LogType: "Tail",
Payload: JSON.stringify({})
}));
const logs = Buffer.from(out.LogResult || "", "base64").toString();
console.log(logs);Reserve warm execution environments to eliminate cold starts.
# --- Python (boto3) ---
import boto3
lam = boto3.client("lambda")
resp = lam.put_provisioned_concurrency_config(
FunctionName="my-fn",
Qualifier="prod",
ProvisionedConcurrentExecutions=100
)
print(resp["ProvisionedConcurrentExecutions"])// --- TypeScript (AWS SDK v3) ---
import { LambdaClient, PutProvisionedConcurrencyConfigCommand } from "@aws-sdk/client-lambda";
const lam = new LambdaClient({});
const out = await lam.send(new PutProvisionedConcurrencyConfigCommand({
FunctionName: "my-fn",
Qualifier: "prod",
ProvisionedConcurrentExecutions: 100
}));
console.log(out.ProvisionedConcurrentExecutions);Enable a dedicated HTTPS endpoint for direct invocation without API Gateway.
# --- Python (boto3) ---
import boto3
lam = boto3.client("lambda")
resp = lam.create_function_url_config(
FunctionName="my-fn",
AuthType="NONE",
Cors={"AllowOrigins": ["*"]}
)
print(resp["FunctionUrl"])// --- TypeScript (AWS SDK v3) ---
import { LambdaClient, CreateFunctionUrlConfigCommand } from "@aws-sdk/client-lambda";
const lam = new LambdaClient({});
const out = await lam.send(new CreateFunctionUrlConfigCommand({
FunctionName: "my-fn",
AuthType: "NONE",
Cors: { AllowOrigins: ["*"] }
}));
console.log(out.FunctionUrl);Remove a function, its code, and configuration permanently.
# --- Python (boto3) ---
import boto3
lam = boto3.client("lambda")
lam.delete_function(FunctionName="my-fn")
print("Function deleted")// --- TypeScript (AWS SDK v3) ---
import { LambdaClient, DeleteFunctionCommand } from "@aws-sdk/client-lambda";
const lam = new LambdaClient({});
await lam.send(new DeleteFunctionCommand({ FunctionName: "my-fn" }));
console.log("Function deleted");Stack versions: This page was written for boto3 1.43.x (Python 3.10+) and the AWS SDK for JavaScript v3 (Node.js 18+).
Revisado por Chris St. John·Última atualização: 23 de jul. de 2026