Tengo un archivo de plantilla de AWS SAM con algunos recursos alojados en github, se ha configurado un codepipeline para detectar cambios en el repositorio y luego crear/actualizar y ejecutar cambios en la pila de formación en la nube. Todo está funcionando bien. Pero ahora necesito configurar escenarios y entornos de producción en la misma plantilla. Me resulta difícil cómo hacerlo correctamente.
También se aceptan diferentes enfoques.
¿PROD y STAGE están en la misma cuenta o en cuentas diferentes? asumiré lo mismo
Transform: AWS::Serverless-2016-10-31 Parameters: Environment: Type: String AllowedValues: - STAGE - PROD Resources: MyLambda: Type: AWS::Serverless::Function Properties: Handler: lambda_function.lambda_handler FunctionName: !Sub ${Environment}_my_lambda CodeUri: my_lambdaEsto le daría un nombre único a su lambda, por entorno
Luego, cuando implemente su plantilla, use --parameter-overrides=Environment=STAGE o --parameter-overrides=Environment=PROD
Puede configurar CloudWatch para escuchar CodeCommit. Si la rama STAGE cambia, llame a CodeBuild para usar la rama STAGE y llame a CloudFormation con el parámetro STAGE. Lo mismo para PROD
Los parámetros serían los mejores
También puede usar asignaciones o condiciones. Pero cualquiera de los dos podría ensuciarse.