Conceitos básicos das instâncias gerenciadas do Lambda
Criação de uma função de instância gerenciada do Lambda (console)
É possível usar o console do Lambda para criar uma função de instância gerenciada que é executada em instâncias do Amazon EC2 gerenciadas por um provedor de capacidade.
Importante: antes de criar uma função de instância gerenciada, você deve primeiro criar um provedor de capacidade. Essas funções exigem que um provedor de capacidade defina a infraestrutura do Amazon EC2 que executará suas funções.
Para criar uma função de instância gerenciada do Lambda (console)
-
Abra o console do lambda.
-
Escolha Provedores de capacidade no painel de navegação à esquerda.
-
Escolha Criar provedor de capacidade.
-
Na seção Configurações do provedor de capacidade, insira um nome para seu provedor de capacidade.
-
Selecione a VPC e as permissões para seu provedor de capacidade. É possível usar uma existente ou criar uma nova. Para obter informações sobre como criar o perfil de operador necessário, consulte Perfil de operador do Lambda para instâncias gerenciadas do Lambda.
-
Expanda Advanced settings (Configurações avançadas).
-
Defina seus requisitos de instância escolhendo a arquitetura do processador e os tipos de instância.
-
Em Ajuste de escala automático, especifique o número máximo de vCPUs EC2 para seu provedor de capacidade. Também é possível escolher o modo de escalabilidade de instâncias manual para definir seu próprio valor de escalabilidade para um controle preciso.
-
Escolha Criar provedor de capacidade para criar um novo.
-
A seguir, escolha Create function.
-
Selecione Criar do zero.
-
No painel Informações básicas, forneça o Nome da função.
-
Em Runtime, escolha qualquer um dos runtimes com suporte.
-
Escolha a Arquitetura para sua função (a mesma que você selecionou para o provedor de capacidade). Por padrão, x86_64.
-
Em Permissões, verifique se você tem permissão para o perfil de execução escolhido. Caso contrário, é possível criar um novo perfil.
-
Em Configurações adicionais, escolha o Tipo de computação como Instâncias gerenciadas do Lambda.
-
O ARN do provedor de capacidade que você criou nas etapas anteriores deve ser pré-selecionado.
-
Escolha Tamanho da memória e Memória do ambiente de execução (GiB) por proporção de vCPU.
-
Escolha a opção Criar função.
Sua função de Instância gerenciada do Lambda é criada e provisionará a capacidade em seu provedor de capacidade especificado. A criação da função normalmente leva vários minutos. Depois de concluído, será possível editar o código da função e executar seu primeiro teste.
Criação de uma função de instância gerenciada do Lambda (AWS CLI)
Pré-requisitos
Antes de começar, você deve ter o seguinte:
-
AWS CLI: instale e configure a AWS CLI. Para obter mais informações, consulte Instalação ou atualização da versão mais recente da AWS CLI.
-
Permissões do IAM: seu perfil ou usuário do IAM deve ter permissões para criar funções do Lambda, provedores de capacidade e transmitir perfis do IAM. Observe que você também precisará de
iam:CreateServiceLinkedRolese for a primeira vez que cria um provedor de capacidade na conta ou se o perfil vinculado ao serviço (SLR) foi excluído.
Etapa 1: criação dos perfis do IAM necessários.
As instâncias gerenciadas do Lambda exigem dois perfis do IAM: um perfil de execução para sua função e um perfil de operador para o provedor de capacidade. O perfil do operador permite que o Lambda inicie, encerre e monitore instâncias do Amazon EC2 em seu nome. O perfil de execução da função concede a ela permissões para acessar outros serviços e recursos da AWS.
Para criar o perfil de execução do Lambda
-
Crie um documento de política de confiança que permita que o Lambda assuma o perfil:
cat > lambda-trust-policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF -
Crie o perfil de execução
aws iam create-role \ --role-name MyLambdaExecutionRole \ --assume-role-policy-document file://lambda-trust-policy.json -
Anexe a política básica de execução:
aws iam attach-role-policy \ --role-name MyLambdaExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Para criar o perfil de operador do provedor de capacidade
-
Crie um documento de política de confiança que permita que o Lambda assuma o perfil de operador:
cat > operator-trust-policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF -
Crie o perfil de operador:
aws iam create-role \ --role-name MyCapacityProviderOperatorRole \ --assume-role-policy-document file://operator-trust-policy.json -
Anexe a política de permissões do EC2 necessária:
aws iam attach-role-policy \ --role-name MyCapacityProviderOperatorRole \ --policy-arn arn:aws:iam::aws:policy/AWSLambdaManagedEC2ResourceOperator
Etapa 2: configuração dos recursos da VPC
As instâncias gerenciadas do Lambda são executadas em sua VPC e exigem uma sub-rede e um grupo de segurança.
Para criar recursos de VPC
-
Crie uma VPC:
VPC_ID=$(aws ec2 create-vpc \ --cidr-block 10.0.0.0/16 \ --query 'Vpc.VpcId' \ --output text) -
Crie uma sub-rede:
SUBNET_ID=$(aws ec2 create-subnet \ --vpc-id $VPC_ID \ --cidr-block 10.0.1.0/24 \ --query 'Subnet.SubnetId' \ --output text) -
Crie um grupo de segurança:
SECURITY_GROUP_ID=$(aws ec2 create-security-group \ --group-name my-capacity-provider-sg \ --description "Security group for Lambda Managed Instances" \ --vpc-id $VPC_ID \ --query 'GroupId' \ --output text)
Observação: suas funções de instâncias gerenciadas do Lambda exigem a configuração da VPC para acessar recursos fora da VPC e transmitir dados de telemetria para o CloudWatch Logs e o X-Ray. Para obter detalhes de configuração, consulte Rede para instâncias gerenciadas do Lambda.
Etapa 3: Criar um provedor de capacidade
Um provedor de capacidade gerencia as instâncias do EC2 que executam suas funções do Lambda.
Para criar um provedor de capacidade
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) aws lambda create-capacity-provider \ --capacity-provider-name my-capacity-provider \ --vpc-config SubnetIds=[$SUBNET_ID],SecurityGroupIds=[$SECURITY_GROUP_ID] \ --permissions-config CapacityProviderOperatorRoleArn=arn:aws:iam::${ACCOUNT_ID}:role/MyCapacityProviderOperatorRole \ --instance-requirements Architectures=[x86_64] \ --capacity-provider-scaling-config MaxVCpuCount=30
Este comando cria um provedor de capacidade com a configuração a seguir:
-
Configuração da VPC: especifica a sub-rede e o grupo de segurança para as instâncias do EC2
-
Permissões: define o perfil do IAM que o Lambda usa para gerenciar instâncias do EC2
-
Requisitos da instância: especifica a arquitetura x86_64
-
Configuração de escalabilidade: define um máximo de 30 vCPUs para o provedor de capacidade
Etapa 4: criação de uma função do Lambda com código embutido
Para criar uma função com código embutido
-
Primeiro, crie uma função simples do Python e empacote-a em linha:
# Create a temporary directory for the function code mkdir -p /tmp/my-lambda-function cd /tmp/my-lambda-function # Create a simple Python handler cat > lambda_function.py << 'EOF' import json def lambda_handler(event, context): return { 'statusCode': 200, 'body': json.dumps({ 'message': 'Hello from Lambda Managed Instances!', 'event': event }) } EOF # Create a ZIP file zip function.zip lambda_function.py -
Crie a função do Lambda usando o arquivo ZIP embutido:
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) REGION=$(aws configure get region) aws lambda create-function \ --function-name my-managed-instance-function \ --package-type Zip \ --runtime python3.13 \ --handler lambda_function.lambda_handler \ --zip-file fileb:///tmp/my-lambda-function/function.zip \ --role arn:aws:iam::${ACCOUNT_ID}:role/MyLambdaExecutionRole \ --architectures x86_64 \ --memory-size 2048 \ --ephemeral-storage Size=512 \ --capacity-provider-config LambdaManagedInstancesCapacityProviderConfig={CapacityProviderArn=arn:aws:lambda:${REGION}:${ACCOUNT_ID}:capacity-provider:my-capacity-provider}A função é criada com:
-
Runtime: Python 3,13
-
Manipulador: a função
lambda_handleremlambda_function.py -
Memória: 2048 MB
-
Armazenamento efêmero: 512 MB
-
Provedor de capacidade: links para o provedor de capacidade que você criou
-
Etapa 5: publicação de uma versão da função
Para executar sua função nas instâncias gerenciadas do Lambda, é necessário publicar uma versão.
Para publicar uma versão da função
aws lambda publish-version \ --function-name my-managed-instance-function
Esse comando publica a versão 1 da sua função e a implanta no provedor de capacidade.
Etapa 6: invocação da sua função
Depois de publicar, é possível invocar sua função.
Para invocar sua função
aws lambda invoke \ --function-name my-managed-instance-function:1 \ --payload '{"name": "World"}' \ response.json # View the response cat response.json
A função é executada nas instâncias do EC2 gerenciadas pelo seu provedor de capacidade e retorna uma resposta.
Limpeza
Para evitar incorrer em custos, exclua os recursos que você criou:
-
Exclua a função:
aws lambda delete-function --function-name my-managed-instance-function -
Exclua o provedor de capacidade:
aws lambda delete-capacity-provider --capacity-provider-name my-capacity-provider -
Exclua os recursos da VPC:
aws ec2 delete-security-group --group-id $SECURITY_GROUP_ID aws ec2 delete-subnet --subnet-id $SUBNET_ID aws ec2 delete-vpc --vpc-id $VPC_ID -
Excluas os perfis do IAM:
aws iam detach-role-policy \ --role-name MyLambdaExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole aws iam detach-role-policy \ --role-name MyCapacityProviderOperatorRole \ --policy-arn arn:aws:iam::aws:policy/AWSLambdaManagedEC2ResourceOperator aws iam delete-role --role-name MyLambdaExecutionRole aws iam delete-role --role-name MyCapacityProviderOperatorRole