Provedores de capacidade
Um provedor de capacidade é a base para a execução de instâncias gerenciadas do Lambda. Ele atua como limite de segurança para suas funções e define os recursos computacionais que o Lambda provisionará e gerenciará em seu nome.
Ao criar um provedor de capacidade, você especifica:
-
Configuração de VPC: as sub-redes e os grupos de segurança em que as instâncias serão executadas
-
Permissões: as funções do IAM para o Lambda gerenciar recursos do EC2
-
Requisitos da instância (opcional): preferências de arquitetura e de tipo de instância
-
Configuração de escalabilidade (opcional): como o Lambda escala suas instâncias
Noções básicas dos provedores de capacidade como limite de segurança
Os provedores de capacidade servem como limite de segurança para as funções do Lambda em sua VPC, substituindo o isolamento baseado em Firecracker. As funções são executadas em contêineres dentro de instâncias, mas os contêineres não fornecem um forte isolamento de segurança entre as funções, ao contrário das microVMs do Firecracker.
Principais conceitos de segurança:
-
Provedor de capacidade: o limite de segurança que define os níveis de confiança para as funções do Lambda
-
Isolamento de contêineres: os contêineres NÃO são um provedor de segurança. Não confie neles para garantir a segurança entre workloads não confiáveis
-
Separação de confiança:: separe as workloads que não sejam mutuamente confiáveis usando diferentes provedores de capacidade.
Criação de um provedor de capacidade
É possível criar um provedor de capacidade usando a AWS CLI, o Console de Gerenciamento da AWS ou as SDKs da AWS.
Uso da AWS CLI
aws lambda create-capacity-provider \ --capacity-provider-name my-capacity-provider \ --vpc-config SubnetIds=subnet-12345,subnet-67890,subnet-11111,SecurityGroupIds=sg-12345 \ --permissions-config CapacityProviderOperatorRoleArn=arn:aws:iam::123456789012:role/MyOperatorRole \ --instance-requirements Architectures=x86_64 \ --capacity-provider-scaling-config ScalingMode=Auto
Parâmetros necessários
CapacityProviderName
-
Um nome exclusivo para o seu provedor de capacidade
-
Ele deve ser exclusivo na sua conta da AWS
VpcConfig
-
SubnetIds (obrigatório): ao menos uma sub-rede, máximo de 16. Use sub-redes em várias zonas de disponibilidade para obter resiliência
-
SecurityGroupIds (opcional): grupos de segurança para suas instâncias. O padrão é o grupo de segurança padrão da VPC, se não for especificado
PermissionsConfig
-
CapacityProviderOperatorRoleArn (obrigatório): perfil do IAM que permite ao Lambda gerenciar recursos do EC2 em seu provedor de capacidade
Parâmetros opcionais
InstanceRequirements
Especifique a arquitetura e os tipos de instância
-
Arquiteturas: escolha
x86_64ouarm64. O padrão éx86_64 -
AllowedInstanceTypes: especifique os tipos de instância permitidos. Exemplo:
m5.8xlarge -
ExcludedInstanceTypes: especifique os tipos de instância excluídos usando curingas. É possível especificar apenas um dentre AllowedInstanceTypes ou ExcludedInstanceTypes.
Por padrão, o Lambda escolhe os melhores tipos de instância para sua workload. Recomendamos que as instâncias gerenciadas do Lambda escolham os tipos de instância para você, pois restringir o número de tipos de instância possíveis pode resultar em menor disponibilidade.
CapacityProviderScalingConfig
Configure como o Lambda escala suas instâncias:
-
ScalingMode: defina como
Autopara escalabilidade automática ouManualpara controle manual. O padrão éAuto -
MaxVCpuCount: número máximo de vCPUs para o provedor de capacidade. O padrão é de 400.
-
ScalingPolicies: defina políticas de escalabilidade de rastreamento de destinos para utilização de CPU e memória
KmsKeyArn
Especifique uma chave do AWS KMS para a criptografia do EBS. O padrão é de chave gerenciada pela AWS, caso não especificado.
Tags da
Adicione tags para organizar e gerenciar os provedores de capacidade.
Gerenciamento dos provedores de capacidade
Atualização de um provedor de capacidade
É possível atualizar determinadas propriedades de um provedor de capacidade usando a API UpdateCapacityProvider.
aws lambda update-capacity-provider \ --capacity-provider-name my-capacity-provider \ --capacity-provider-scaling-config ScalingMode=Auto
Exclusão de um provedor de capacidade
É possível excluir um provedor de capacidade quando ele não for mais necessário usando a API DeleteCapacityProvider.
aws lambda delete-capacity-provider \ --capacity-provider-name my-capacity-provider
Observação: não é possível excluir um provedor de capacidade que tenha versões de função anexadas a ele.
Visualização de detalhes do provedor de capacidade
Recupere informações sobre um provedor de capacidade usando a API GetCapacityProvider.
aws lambda get-capacity-provider \ --capacity-provider-name my-capacity-provider
Estados do provedor de capacidade
Um provedor de capacidade pode estar em um dos estados a seguir:
-
Pendente: o provedor de capacidade está sendo criado
-
Ativo: o provedor de capacidade está pronto para uso
-
Com falha: a criação do provedor de capacidade falhou
-
Em exclusão: o provedor de capacidade está sendo excluído
Cotas
-
Máximo de provedores de capacidade por conta: 1.000
-
Versões máximas de funções por provedor de capacidade: 100 (não pode ser aumentado)
Práticas recomendadas
-
Separe por nível de confiança: crie diferentes provedores de capacidade para workloads com diferentes requisitos de segurança
-
Use nomes descritivos: nomeie os provedores de capacidade para indicar claramente o uso pretendido e o nível de confiança (por exemplo,
production-trusted,dev-sandbox). -
Use várias zonas de disponibilidade: especifique as sub-redes em várias zonas de disponibilidade para obter alta disponibilidade
-
Deixe o Lambda escolher os tipos de instância: a menos que você tenha requisitos específicos de hardware, permita que o Lambda selecione os melhores tipos de instância para uma disponibilidade ideal
-
Monitore o uso: use o AWS CloudTrail para monitorar as atribuições e os padrões de acesso do provedor de capacidade.
Próximas etapas
-
Saiba mais sobre a escalabilidade de instâncias gerenciadas do Lambda
-
Entenda a segurança e as permissões das instâncias gerenciadas do Lambda
-
Configure a conectividade de VPC para seus provedores de capacidade
-
Consulte os guias específicos de runtime para Java, Node.js e Python