Estoy usando AWS SAM para implementar mis funciones de AWS Lambda en AWS.
Pude definir el tiempo de Runtime una vez en la sección Globals y me preguntaba si podía definir una constante para que Lambdas asumiera el rol de AWS ( Role: arn:aws:iam::12345678:role/lambda-role ), que actualmente se repite en el archivo de plantilla para cada función.
Aquí está mi plantilla SAM:
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Globals: Function: Runtime: python3.7 Resources: FunctionA: Type: AWS::Serverless::Function Properties: CodeUri: lambdas/ Handler: app.event_handler_a Role: arn:aws:iam::12345678:role/lambda-role FunctionB: Type: AWS::Serverless::Function Properties: CodeUri: lambdas/ Handler: app.event_handler_b Role: arn:aws:iam::12345678:role/lambda-rolePodría usar Parámetros o Asignaciones para eso.
Por ejemplo con Parámetros :
Parameters: LambdaRoleArn: Type: String Default: arn:aws:iam::12345678:role/lambda-role # Then for example Resoureces: FunctionB: Type: AWS::Serverless::Function Properties: CodeUri: lambdas/ Handler: app.event_handler_b Role: !Ref LambdaRoleArnPor ejemplo con asignaciones :
Mappings: Lambda: Role: Value: arn:aws:iam::12345678:role/lambda-role # Then for example Resoureces: FunctionB: Type: AWS::Serverless::Function Properties: CodeUri: lambdas/ Handler: app.event_handler_b Role: !FindInMap [Lambda, Role, Value]La ventaja de las asignaciones es que no se pueden modificar al implementar la plantilla. Pero obviamente, si desea poder hacerlo, entonces se deben usar parámetros.
Puede usar parámetros y anularlos en la implementación o usar la implementación guiada para guardarlos para la próxima ejecución de implementación.
Revisa esta plantilla:
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Globals: Function: Runtime: python3.7 Parameters: role: Type: String Resources: FunctionA: Type: AWS::Serverless::Function Properties: CodeUri: lambdas/ Handler: app.event_handler_a Role: ${role} FunctionB: Type: AWS::Serverless::Function Properties: CodeUri: lambdas/ Handler: app.event_handler_b Role: ${role}Cómo implementar:
sam deployment --template-file template.yaml --stack-name mystack --capabilities CAPABILITY_IAM --parameter-overrides role=arn:aws:iam::12345678:role/lambda-role
Alternativamente, puede usar el parámetro cli --guided. Consulte los documentos de AWS a continuación:
Por ejemplo, al ejecutar el comando sam deployment --guided, la CLI de AWS SAM agrega automáticamente los parámetros necesarios al archivo de configuración. Posteriormente, puede ejecutar sam deployment sin parámetros y los valores se recuperarán del archivo de configuración.