Introducción a las instancias administradas de Lambda
Creación de una función de instancia administrada de Lambda (consola)
Puede usar la consola de Lambda para crear una función de instancia administrada que se ejecute en instancias de Amazon EC2 administradas por un proveedor de capacidad.
Importante: Antes de crear una función de instancia administrada, primero debe crear un proveedor de capacidad. Estas funciones requieren que un proveedor de capacidad defina la infraestructura de Amazon EC2 que ejecutará sus funciones.
Cómo crear una función de instancia administrada de Lambda (consola)
-
Abra la consola Lambda.
-
Desde el panel de navegación izquierdo, elija Proveedores de capacidad.
-
Elija Creación de proveedores de capacidad
-
En la sección de Configuración de proveedores de capacidad, introduzca un nombre para su proveedor de capacidad.
-
Seleccione la VPC y los permisos para su proveedor de capacidad. Puede crear uno nuevo o utilizar uno existente. Para obtener información sobre la creación del rol de operador requerido, consulte Rol de operador de Lambda para instancias administradas de Lambda.
-
Amplíe Configuración avanzada.
-
Defina los Requisitos de la instancia; para ello, elija la arquitectura del procesador y los tipos de instancia.
-
En Escalado automático, especifique la cantidad máxima de vCPU de EC2 para su proveedor de capacidad. También puede elegir el Modo de escalado manual de instancias para establecer su propio valor de escalado y lograr un control preciso.
-
Elija Creación de proveedores de capacidad para crear uno nuevo.
-
A continuación, elija Create function.
-
Seleccione Crear desde cero.
-
En el panel de Información básica, indique un Nombre de función.
-
En Tiempo de ejecución, elija cualquiera de los tiempos de ejecución compatibles.
-
Elija la Arquitectura para su función (la misma que seleccionó como proveedor de capacidad). De forma predeterminada, x86_64.
-
En Permisos, asegúrese de tener permiso para el Rol de ejecución elegido. En caso contrario, puede crear un rol nuevo.
-
En Configuraciones adicionales, seleccione en Tipo de cómputo Instancias administradas de Lambda.
-
Debe preseleccionar el ARN del proveedor de capacidad que creó en los pasos anteriores.
-
Seleccione Tamaño de memoria y Memoria del entorno de ejecución (GiB) por proporción de vCPU.
-
Seleccione Creación de función.
Se crea la función de instancia administrada de Lambda, que aprovisionará la capacidad del proveedor de capacidad especificado. La creación de funciones suele tardar varios minutos. Una vez completado, puede editar el código de la función y ejecutar la primera prueba.
Creación de una función de instancia administrada de Lambda (CLI de AWS)
Requisitos previos
Antes de empezar, asegúrese de que tiene lo siguiente:
-
CLI de AWS: instale y configure la CLI de AWS. Para obtener más información, consulte Instalación o actualización de la versión más reciente de la CLI de AWS.
-
Permisos de IAM: su rol o usuario de IAM debe tener permisos para crear funciones de Lambda, proveedores de capacidad y transferir roles de IAM. Tenga en cuenta que también necesitará el
iam:CreateServiceLinkedRolesi es la primera vez que crea un proveedor de capacidad en la cuenta o si se ha eliminado el rol vinculado al servicio (SLR).
Paso 1: crear los roles de IAM requeridos
Las instancias administradas de Lambda requieren dos roles de IAM: un rol de ejecución para la función y un rol de operador para el proveedor de capacidad. El rol de operador permite que Lambda lance, finalice y supervise instancias de Amazon EC2 en su nombre. El rol de ejecución de una función concede a esa función permiso de acceso a otros recursos y servicios de AWS.
Para crear el rol de ejecución de Lambda
-
Cree un documento de política de confianza que permita que Lambda asuma el rol:
cat > lambda-trust-policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF -
Cree el rol de ejecución:
aws iam create-role \ --role-name MyLambdaExecutionRole \ --assume-role-policy-document file://lambda-trust-policy.json -
Adjunte la política de ejecución básica:
aws iam attach-role-policy \ --role-name MyLambdaExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Cómo crear el rol de operador del proveedor de capacidad
-
Cree un documento de política de confianza que permita que Lambda asuma el rol de operador:
cat > operator-trust-policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF -
Cree el rol de operador:
aws iam create-role \ --role-name MyCapacityProviderOperatorRole \ --assume-role-policy-document file://operator-trust-policy.json -
Adjunte la política de permisos de EC2 requerida:
aws iam attach-role-policy \ --role-name MyCapacityProviderOperatorRole \ --policy-arn arn:aws:iam::aws:policy/AWSLambdaManagedEC2ResourceOperator
Paso 2: configurar recursos de la VPC
Las instancias administradas de Lambda se ejecutan en su VPC y requieren una subred y un grupo de seguridad.
Cómo crear recursos de la VPC
-
Cree una VPC:
VPC_ID=$(aws ec2 create-vpc \ --cidr-block 10.0.0.0/16 \ --query 'Vpc.VpcId' \ --output text) -
Cree una subred:
SUBNET_ID=$(aws ec2 create-subnet \ --vpc-id $VPC_ID \ --cidr-block 10.0.1.0/24 \ --query 'Subnet.SubnetId' \ --output text) -
Cree un grupo de seguridad:
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)
Nota: Las funciones de las instancias administradas de Lambda requieren una configuración de VPC para acceder a los recursos externos a la VPC y para transmitir los datos de telemetría a Registros de CloudWatch y X-Ray. Para obtener información sobre la configuración, consulte Redes para instancias administradas de Lambda.
Paso 3: Crear un proveedor de capacidad
Un proveedor de capacidad administra las instancias de EC2 que ejecutan las funciones de Lambda.
Para crear un proveedor de capacidad
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 crea un proveedor de capacidad con la siguiente configuración:
-
Configuración de VPC: especifica la subred y el grupo de seguridad de las instancias de EC2.
-
Permisos: define el rol de IAM que Lambda utiliza para administrar las instancias de EC2.
-
Requisitos de instancia: especifica la arquitectura x86_64.
-
Configuración de escalado: establece un máximo de 30 vCPU para el proveedor de capacidad.
Paso 4: crear una función de Lambda con código en línea
Cómo crear una función con código en línea
-
Primero, cree una función de Python simple y empaquétela en línea:
# 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 -
Cree la función de Lambda mediante el archivo ZIP en línea:
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}La función se crea con lo siguiente:
-
Tiempo de ejecución: Python 3.13.
-
Controlador: la función
lambda_handlerenlambda_function.py. -
Memoria: 2048 MB.
-
Almacenamiento efímero: 512 MB.
-
Proveedor de capacidad: enlaza con el proveedor de capacidad que creó.
-
Paso 5: publicar una versión de la función
Para ejecutar la función en instancias administradas de Lambda, debe publicar una versión.
Cómo publicar una versión de la función
aws lambda publish-version \ --function-name my-managed-instance-function
Este comando publica la versión 1 de la función y la implementa en el proveedor de capacidad.
Paso 6: invocar su función
Después de la publicación, puede invocar la función.
Para invocar tu función
aws lambda invoke \ --function-name my-managed-instance-function:1 \ --payload '{"name": "World"}' \ response.json # View the response cat response.json
La función se ejecuta en las instancias de EC2 administradas por su proveedor de capacidad y devuelve una respuesta.
Limpieza
Para evitar incurrir en cargos, elimine los recursos que haya creado:
-
Elimine la función:
aws lambda delete-function --function-name my-managed-instance-function -
Elimine el proveedor de capacidad:
aws lambda delete-capacity-provider --capacity-provider-name my-capacity-provider -
Elimine los recursos de la 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 -
Elimine los roles de 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