Provedores de capacidade - AWS Lambda

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 para seu provedor de capacidade:

  • Arquiteturas: escolha x86_64 ou arm64. 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 Auto para escalabilidade automática ou Manual para 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

  1. Separe por nível de confiança: crie diferentes provedores de capacidade para workloads com diferentes requisitos de segurança

  2. 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).

  3. Use várias zonas de disponibilidade: especifique as sub-redes em várias zonas de disponibilidade para obter alta disponibilidade

  4. 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

  5. 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