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.
-
Defina um aplicativo sem servidor com umAWS SAMModelo do que inclua a camada como recurso — ou seja, um
AWS::Serverless::LayerVersion
ou umAWS::Lambda::LayerVersion
recurso. -
Publique o aplicativo no AWS Serverless Application Repository e compartilhe-o (pública ou privadamente).
-
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