Amazon web services 是否可以在SAM模板中定义常量以使我的模板文件更易于维护?

Amazon web services 是否可以在SAM模板中定义常量以使我的模板文件更易于维护?,amazon-web-services,aws-lambda,amazon-cloudformation,Amazon Web Services,Aws Lambda,Amazon Cloudformation,我正在使用AWS SAM将AWS Lambda函数部署到AWS 我曾经在Globals部分定义过一次运行时,我想知道是否可以为AWS角色定义一个常量,由我的Lambdas角色承担:arn:AWS:iam::12345678:Role/lambda角色,该角色当前在每个函数的模板文件中重复 这是我的SAM模板: AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Globals: Funct

我正在使用AWS SAM将AWS Lambda函数部署到AWS

我曾经在Globals部分定义过一次运行时,我想知道是否可以为AWS角色定义一个常量,由我的Lambdas角色承担:arn:AWS:iam::12345678:Role/lambda角色,该角色当前在每个函数的模板文件中重复

这是我的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-role
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}
你可以用或来做那件事

例如,使用参数:

例如,对于映射:

映射的优点是在部署模板时不能修改它们。但是很明显,如果你想做到这一点,那么就应该使用参数。

你可以使用或

例如,使用参数:

例如,对于映射:


映射的优点是在部署模板时不能修改它们。但显然,如果您希望能够做到这一点,那么应该使用参数。

您可以在部署时使用参数并覆盖它们,或者使用引导部署将它们保存以供下次部署运行

检查此模板:

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-role
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}
如何部署:

sam部署-模板文件template.yaml-堆栈名称mystack-能力能力\u IAM-参数覆盖role=arn:aws:IAM::12345678:role/lambda role

或者,您可以使用-guided cli参数。检查以下AWS文件:

例如,在执行sam部署引导命令时,AWS sam CLI会自动将所需参数添加到配置中 文件随后,您可以不带参数地执行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-role
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}
如何部署:

sam部署-模板文件template.yaml-堆栈名称mystack-能力能力\u IAM-参数覆盖role=arn:aws:IAM::12345678:role/lambda role

或者,您可以使用-guided cli参数。检查以下AWS文件:

例如,在执行sam部署引导命令时,AWS sam CLI会自动将所需参数添加到配置中 文件随后,您可以不带参数地执行sam部署,并且 这些值将从配置文件中检索