Reutilizar código e recursos usando aplicações aninhadas no AWS SAM
Um aplicativo sem servidor pode incluir um ou mais aplicativos aninhados. Uma aplicação aninhada faz parte de um aplicação maior e pode ser empacotada e implantada como um artefato independente ou como um componente de uma aplicação maior. As aplicações aninhadas permitem que você transforme códigos usados com frequência em sua própria aplicação, que pode ser reutilizado em uma aplicação sem servidor maior ou em várias aplicações sem servidor.
À medida que as arquiteturas sem servidor crescem, normalmente surgem padrões comuns nos quais os mesmos componentes são definidos em vários modelos de aplicação. As aplicações aninhadas permitem que você reutilize códigos, funcionalidades, recursos e configurações comuns em modelos separados do AWS SAM, permitindo que você mantenha apenas o código de uma única origem. Isso reduz código e configurações duplicadas. Além disso, essa abordagem modular simplifica o desenvolvimento, aprimora a organização do código e facilita a consistência em aplicações sem servidor. Com aplicativos aninhados, você pode se concentrar mais na lógica de negócios exclusiva do seu aplicativo.
Para definir um aplicativo aninhado em seu aplicativo sem servidor, use o tipo de recurso AWS::Serverless::Application.
Você pode definir aplicativos aninhados a partir das duas fontes a seguir:
-
Um AWS Serverless Application Repositoryaplicativo — Você pode definir aplicativos aninhados usando aplicativos que estão disponíveis para sua conta na AWS Serverless Application Repository. Eles podem ser aplicativos privados em sua conta, aplicativos que são compartilhados de forma privada com sua conta ou aplicativos que são compartilhados publicamente no AWS Serverless Application Repository. Para obter mais informações sobre os diferentes níveis de permissões de implantação, consulte Permissões de implantação de aplicativos e aplicativos de publicação no AWS Serverless Application RepositoryGuia do desenvolvedor.
-
Um aplicativo local — você pode definir aplicativos aninhados usando aplicativos armazenados em seu sistema de arquivos local.
Consulte as seções a seguir para obter detalhes sobre como usar AWS SAM para definir esses dois tipos de aplicativos aninhados em seu aplicativo sem servidor.
nota
O número máximo de aplicativos que podem ser aninhados em um aplicativo sem servidor é 200.
O número máximo de parâmetros que um aplicativo aninhado pode ter é 60.
Definindo um aplicativo aninhado a partir do AWS Serverless Application Repository
Você pode definir aplicativos aninhados usando aplicativos que estão disponíveis no AWS Serverless Application Repository. Você também pode armazenar e distribuir aplicativos que contêm aplicativos aninhados usando AWS Serverless Application Repository. Para revisar os detalhes de um aplicativo aninhado no AWS Serverless Application Repository, você pode usar o AWS SDK, o AWS CLI, o ou console Lambda.
Para definir um aplicativo hospedado no AWS Serverless Application Repository em seu modelo AWS SAM do seu aplicativo sem servidor, use o botão Copiar como recurso do SAM na página de detalhes de cada aplicativo AWS Serverless Application Repository. Para isso, siga estas etapas:
-
Certifique-se de estar conectado ao Console de gerenciamento da AWS.
-
Encontre o aplicativo no qual você deseja aninhar AWS Serverless Application Repository usando as etapas na seção Navegação, Pesquisa e Implantação de Aplicativos do AWS Serverless Application Repository Guia do desenvolvedor.
-
Escolha o botão Copiar como recurso do SAM. A seção de modelo do SAM para o aplicativo que você está visualizando agora está na sua área de transferência.
-
Cole a seção do modelo do SAM na seção
Resources:do arquivo de modelo do SAM do aplicativo que você deseja aninhar nesse aplicativo.
Veja a seguir um exemplo de seção de modelo de SAM para um aplicativo aninhado hospedado no AWS Serverless Application Repository:
Transform: AWS::Serverless-2016-10-31 Resources:applicationaliasname: Type: AWS::Serverless::Application Properties: Location: ApplicationId: arn:aws:serverlessrepo:us-east-1:123456789012:applications/application-alias-nameSemanticVersion: 1.0.0 Parameters: # Optional parameter that can have default value overridden# ParameterName1: 15 # Uncomment to override default value# Required parameter that needs value to be providedParameterName2: YOUR_VALUE
Se não houver configurações de parâmetros obrigatórias, você poderá omitir a seção Parameters: do modelo.
Importante
Os aplicativos que contêm aplicativos aninhados hospedados no AWS Serverless Application Repository herdam as restrições de compartilhamento dos aplicativos aninhados.
Por exemplo, suponha que um aplicativo seja compartilhado publicamente, mas contém um aplicativo aninhado que é compartilhado apenas de forma privada com a conta da AWS que criou o aplicativo pai. Nesse caso, se a conta da AWS não tiver permissão para implantar o aplicativo aninhado, não será possível implantar o aplicativo pai. Para obter mais informações sobre permissões para implantar aplicativos, consulte Permissões de implantação de aplicativos e publicação de aplicativos no AWS Serverless Application Repository Guia do desenvolvedor.
Definindo um aplicativo aninhado a partir do sistema de arquivos local
Você pode definir aplicativos aninhados usando aplicativos armazenados no sistema de arquivos local. Você faz isso especificando o caminho para o arquivo de modelo AWS SAM que está armazenado em seu sistema de arquivos local.
Veja a seguir um exemplo de seção de modelo de SAM para um aplicativo local aninhado:
Transform: AWS::Serverless-2016-10-31 Resources:applicationaliasname: Type: AWS::Serverless::Application Properties: Location:../my-other-app/template.yamlParameters: # Optional parameter that can have default value overridden# ParameterName1: 15 # Uncomment to override default value# Required parameter that needs value to be providedParameterName2: YOUR_VALUE
Se não houver configurações de parâmetros, você poderá omitir a seção Parameters: do modelo.
Implantar aplicativos aninhados
Você pode implantar seu aplicativo aninhado usando o comando sam
deploy do AWS SAM CLI. Consulte mais detalhes em Implantar a aplicação e os recursos com o AWS SAM.
nota
Quando você implanta uma aplicação que contém aplicações aninhadas, deve reconhecer que ela contém aplicações aninhadas. Você faz isso passando CAPABILITY_AUTO_EXPAND para a API CreateCloudFormationChangeSet ou usando o comando aws serverlessrepo
create-cloud-formation-change-set da AWS CLI.
Para obter mais informações sobre como reconhecer aplicativos aninhados, consulte Reconhecer funções, políticas de recursos e aplicativos aninhados do perfil do IAM ao implantar aplicativos no Guia do desenvolvedor do AWS Serverless Application Repository.