Práticas recomendadas
Constructos L1
-
Nem sempre é possível evitar o uso direto de constructos L1, mas você deve evitá-los sempre que possível. Se um constructo L2 específico não for compatível com seu caso de exceção, você pode explorar estas duas opções em vez de usar o constructo L1 diretamente:
-
Acessar
defaultChild: se a propriedade do CloudFormation de que você precisa não estiver disponível em um constructo L2, você poderá acessar o constructo L1 subjacente usandoL2Construct.node.defaultChild. Você pode atualizar qualquer propriedade pública do constructo L1 acessando-a por meio dessa propriedade, em vez de ter o trabalho de criar por conta própria o constructo L1. -
Usar substituições de propriedade: e se a propriedade que você deseja atualizar não for pública? O melhor recurso final de escape que permite ao AWS CDK fazer qualquer coisa que um modelo do CloudFormation possa fazer é usar um método disponível em cada constructo L1: addPropertyOverride. Você pode manipular sua pilha no nível do modelo do CloudFormation passando o nome e o valor da propriedade do CloudFormation diretamente para esse método.
-
Constructos L2
-
Lembre-se de aproveitar os métodos auxiliares que as constructos L2 geralmente oferecem. Com a camada 2, você não precisa passar todas as propriedades na instanciação. Os métodos auxiliares L2 podem tornar o provisionamento de recursos exponencialmente mais conveniente, especialmente quando a lógica condicional é necessária. Um dos métodos auxiliares mais convenientes é derivado da classe Grant. Essa classe não é usada diretamente, mas muitos constructos L2 a usam para fornecer métodos auxiliares que tornam as permissões muito mais fáceis de implementar. Por exemplo, se você quiser dar permissão para uma função L2 do Lambda para acessar um bucket L2 do S3, você pode chamar
s3Bucket.grantReadWrite(lambdaFunction)em vez de criar um novo perfil e política.
Constructos L3
-
Embora os constructos L3 possam ser muito convenientes quando você deseja tornar suas pilhas mais reutilizáveis e personalizáveis, recomendamos que você as use com cautela. Considere de qual tipo de constructo L3 você precisa ou se você realmente precisa de um constructo L3:
-
Se você não estiver interagindo diretamente com os recursos da AWS, geralmente é mais apropriado criar uma classe auxiliar em vez de estender a classe
Construct. Isso ocorre porque a classeConstructexecuta muitas ações por padrão que serão necessárias somente se você estiver interagindo diretamente com os recursos da AWS. Portanto, se você não precisa que essas ações sejam executadas, é mais eficiente evitá-las. -
Se você determinar que a criação de um novo constructo L3 é apropriada, na maioria dos casos, você desejará estender a classe
Constructdiretamente. Estenda outros constructos L2 somente quando quiser atualizar as propriedades padrão do constructo. Se outros constructos L2 ou a lógica personalizada estiverem envolvidos, estendaConstructdiretamente e instancie todos os recursos no constructo.
-