Compartilhar camadas do Lambda - AWS Serverless Application Repository

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Compartilhar camadas do Lambda

Se você implementou a funcionalidade em uma camada do Lambda, talvez queira compartilhar a camada sem hospedar uma instância global dela. Compartilhar camadas dessa forma permite que outros implantem uma instância da camada na própria conta. Isso impede que os aplicativos cliente dependam de uma instância global da camada. OAWS Serverless Application RepositoryIsso permite compartilhar camadas do Lambda facilmente dessa forma.

Para obter mais informações sobre camadas do Lambda, consulteAWS LambdaCamadas donoAWS LambdaGuia do desenvolvedor.

Como funcionam

Veja a seguir as etapas para compartilhar a camada usando o AWS Serverless Application Repository. Isso permite que uma cópia da camada seja criada noAWSconta.

  1. Defina um aplicativo sem servidor com umAWS SAMModelo do que inclua a camada como recurso — ou seja, umAWS::Serverless::LayerVersionou umAWS::Lambda::LayerVersionrecurso.

  2. Publique o aplicativo no AWS Serverless Application Repository e compartilhe-o (pública ou privadamente).

  3. Um cliente implanta o aplicativo, o que cria uma cópia da camada por conta própriaAWSconta. O cliente pode referenciar o nome de recurso da Amazon (ARN) da camada noAWSConta no aplicativo cliente.

Exemplo

Veja a seguir um exemplo doAWS SAMModelo do para um aplicativo que contém a camada do Lambda que deseja compartilhar:

Resources: SharedLayer: Type: AWS::Serverless::LayerVersion Properties: LayerName: shared-layer ContentUri: source/layer-code/ CompatibleRuntimes: - python3.7 Outputs: LayerArn: Value: !Ref SharedLayer

Quando um cliente implanta o aplicativo a partir doAWS Serverless Application Repository, uma camada é criada em seusAWSconta. O ARN da camada se parece com o seguinte:

arn:aws:lambda:us-east-1:012345678901:layer:shared-layer:1

O cliente pode referenciar esse ARN para o próprio aplicativo cliente, como neste exemplo:

Resources: MyFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: python3.7 CodeUrl: source/app-code/ Layers: - arn:aws:lambda:us-east-1:012345678901:layer:shared-layer:1