Usar o Amazon EFS com o Lambda - AWS Lambda

Usar o Amazon EFS com o Lambda

O Lambda se integra ao Amazon Elastic File System (Amazon EFS) para oferecer acesso seguro e compartilhado ao sistema de arquivos para aplicativos do Lambda. É possível configurar funções para montar um sistema de arquivos durante a inicialização com o protocolo NFS na rede local em uma VPC. O Lambda gerencia a conexão e criptografa todo o tráfego de e para o sistema de arquivos.

O sistema de arquivos e a função do Lambda devem estar na mesma região. Uma função do Lambda em uma conta pode montar um sistema de arquivos em uma conta diferente. Nesse cenário, você configura um emparelhamento de VPCs entre a VPC da função e a VPC do sistema de arquivos.

nota

Para configurar uma função para se conectar a um sistema de arquivos, consulte Configurar o acesso ao sistema de arquivos para funções do Lambda.

O Amazon EFS oferece suporte ao bloqueio de arquivos para evitar a corrupção se várias funções tentarem gravar no mesmo sistema de arquivos ao mesmo tempo. O bloqueio do Amazon EFS segue o protocolo NFS v4.1 para bloqueios recomendados, além de permitir que seus aplicativos usem bloqueios de arquivo inteiro ou de intervalos de bytes.

O Amazon EFS fornece opções para personalizar o sistema de arquivos com base na necessidade do aplicativo de manter o alto desempenho em escala. Há três principais fatores a serem considerados: o número de conexões, a taxa de transferência (em MiB por segundo) e as IOPS.

Cotas

Para obter detalhes sobre cotas e limites do sistema de arquivos, consulte Cotas para sistemas de arquivos do Amazon EFS no Guia do usuário do Amazon Elastic File System.

Para evitar problemas de escalabilidade, taxa de transferência e IOPS, monitore as métricas que o Amazon EFS envia para o Amazon CloudWatch. Para obter uma visão geral do monitoramento no Amazon EFS, consulte Monitorar o Amazon EFS no Guia do usuário do Amazon Elastic File System.

Conexões

O Amazon EFS oferece suporte para até 25,000 conexões por sistema de arquivos. Durante a inicialização, cada instância de uma função cria uma única conexão com o sistema de arquivos que persiste entre invocações. Isso significa que você pode alcançar a simultaneidade de 25,000 em uma ou mais funções conectadas a um sistema de arquivos. Para limitar o número de conexões criadas por uma função, use a simultaneidade reservada.

No entanto, quando você faz alterações no código ou na configuração da função em escala, ocorre um aumento temporário no número de instâncias da função além da simultaneidade atual. O Lambda provisiona novas instâncias para lidar com novas solicitações e existe um atraso antes que as instâncias antigas fechem suas conexões com o sistema de arquivos. Para evitar atingir o limite máximo de conexões durante uma implantação, use implantações contínuas. Com implantações contínuas, você gradualmente muda o tráfego para a nova versão sempre que fizer uma alteração.

Se você se conectar ao mesmo sistema de arquivos de outros serviços, como o Amazon EC2, esteja ciente também do comportamento de escalabilidade das conexões no Amazon EFS. Um sistema de arquivos oferece suporte para a criação de até 3.000 conexões em uma intermitência, após a qual oferece suporte para 500 novas conexões por minuto. Isso corresponde ao comportamento da escalabilidade de intermitência no Lambda, que se aplica a todas as funções em uma região. Mas se você estiver criando conexões fora do Lambda, as funções podem não ser capazes de escalar na velocidade total.

Para monitorar e acionar um alarme nas conexões, use a métrica ClientConnections.

Taxa de transferência

Em escala, também é possível exceder a taxa de transferência máxima de um sistema de arquivos. No modo intermitente (padrão), um sistema de arquivos tem uma baixa taxa de transferência de linha de base que é dimensionada linearmente com o seu tamanho. Para permitir intermitências de atividade, o sistema de arquivos recebe créditos de intermitência que permitem o uso de 100 MiB/s ou mais de taxa de transferência. Os créditos são acumulados continuamente e são gastos em cada operação de leitura e gravação. Se o sistema de arquivos ficar sem créditos, ele limitará as operações de leitura e gravação que ultrapassarem a taxa de transferência de linha de base, o que pode fazer com que as invocações atinjam o tempo limite.

nota

Se você usar a simultaneidade provisionada, a função poderá consumir créditos de intermitência mesmo quando estiver ociosa. Com a simultaneidade provisionada, o Lambda inicializa as instâncias da função antes dela ser invocada e recicla as instâncias em intervalos regulares. Se você usar arquivos em um sistema de arquivos anexado durante a inicialização, essa atividade poderá usar todos os créditos de intermitência.

Para monitorar e acionar um alarme na taxa de transferência, use a métrica BurstCreditBalance. Ela deverá aumentar quando a simultaneidade da função estiver baixa e diminuir quando ela estiver alta. Se ela sempre diminuir ou não acumular durante a baixa atividade o suficiente para cobrir o tráfego de pico, talvez seja necessário limitar a simultaneidade da função ou ativar a taxa de transferência provisionada.

IOPS

As operações de entrada/saída por segundo (IOPS) é uma medida do número de operações de leitura e gravação processadas pelo sistema de arquivos. No modo de uso geral, as IOPS são limitadas a favor da menor latência, o que é benéfico para a maioria dos aplicativos.

Para monitorar e criar alarmes em IOPS no modo de uso geral, use a métrica PercentIOLimit. Se essa métrica atingir 100%, a função poderá atingir o tempo limite aguardando a conclusão das operações de leitura e gravação.