Aws lambda 如何在codebuild buildspec和codedeploy中使用多个sam模板进行lambda函数部署
我想在我的codebuild buildspec和codedeploy中使用多个SAM模板文件来部署lambda函数 我在buildspec中定义了多SAM模板,该模板构建时没有任何错误。但是,CodeDeploy仅部署一个SAM模板 如何设置codebuild和codedeploy以使用多个sam模板lambda函数部署 下面是我设置的代码构建规范文件Aws lambda 如何在codebuild buildspec和codedeploy中使用多个sam模板进行lambda函数部署,aws-lambda,aws-codepipeline,aws-codebuild,aws-code-deploy,aws-sam,Aws Lambda,Aws Codepipeline,Aws Codebuild,Aws Code Deploy,Aws Sam,我想在我的codebuild buildspec和codedeploy中使用多个SAM模板文件来部署lambda函数 我在buildspec中定义了多SAM模板,该模板构建时没有任何错误。但是,CodeDeploy仅部署一个SAM模板 如何设置codebuild和codedeploy以使用多个sam模板lambda函数部署 下面是我设置的代码构建规范文件 version: 0.1 env: parameter-store: S3_BUCKET: "my_s3_bucket&
version: 0.1
env:
parameter-store:
S3_BUCKET: "my_s3_bucket"
phases:
install:
commands:
- aws cloudformation package --template-file samTemplate.yaml --s3-bucket $S3_BUCKET --output-template-file outputSamTemplate.yaml
- aws cloudformation package --template-file samTemplatetwo.yaml --s3-bucket $S3_BUCKET --output-template-file outputSamTemplate.yaml
artifacts:
type: zip
files:
- samTemplate.yaml
- samTemplatetwo.yaml
- outputSamTemplate.yaml
下面是我对部署lambda函数的codedeploy的配置。这将创建云形成堆栈
下面是我正在使用的sam模板。模板1
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: Lambda Functions Deployment
Parameters:
Environments:
Type: String
Default: UAT
Description: Parameters deployment Environments
Mappings:
StagesMap:
UAT:
CONFIGBUCKET: staging-bucket-name
CONFIGKEY: source-data-key-path
URL: UAT
RoleEnv: arn:aws:iam::
NonProd:
CONFIGBUCKET: non-prod-bucket-name
CONFIGKEY: source-data-key-path
RoleEnv: arn:aws:iam::
Resources:
CDDemoLambda:
Type: 'AWS::Serverless::Function'
Properties:
Handler: lambda_function.lambda_handler
Runtime: python3.6
CodeUri: ./LambdaCode
FunctionName: CDDemoLambda
Description: 'Lambda function for CD Demo'
MemorySize: 128
Timeout: 30
Role: !FindInMap
- StagesMap
- Ref: Environments
- RoleEnv
Environment:
Variables:
CONFIG_BUCKET: !FindInMap
- StagesMap
- Ref: Environments
- CONFIGBUCKET
CONFIG_KEY: !FindInMap
- StagesMap
- Ref: Environments
- CONFIGKEY
LambdaCopy:
Type: 'AWS::Serverless::Function'
Properties:
Handler: lambda_function.lambda_handler
Runtime: python3.6
CodeUri: ./LambdaCopy-CICD
FunctionName: LambdaCopy-CICD
Description: 'Lambda function to copy from one folder to another'
MemorySize: 128
Timeout: 30
Role: !FindInMap
- StagesMap
- Ref: Environments
- RoleEnv
Environment:
Variables:
CONFIG_BUCKET: !FindInMap
- StagesMap
- Ref: Environments
- CONFIGBUCKET
CONFIG_KEY: !FindInMap
- StagesMap
- Ref: Environments
- CONFIGKEY
模板2
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: Lambda Functions Deployment
Parameters:
Environments:
Type: String
Default: UAT
Description: Parameters deployment Environments
Mappings:
StagesMap:
UAT:
CONFIGBUCKET: staging-bucket-name
CONFIGKEY: source-data-key-path
URL: UAT
RoleEnv: arn:aws:iam::
NonProd:
CONFIGBUCKET: non-prod-bucket-name
CONFIGKEY: source-data-key-path
RoleEnv: arn:aws:iam::
Resources:
Demo:
Type: 'AWS::Serverless::Function'
Properties:
Handler: lambda_function.lambda_handler
Runtime: python3.6
CodeUri: ./LambdaCode2
FunctionName: Demo
Description: 'Lambda func'
MemorySize: 128
Timeout: 30
Role: !FindInMap
- StagesMap
- Ref: Environments
- RoleEnv
Environment:
Variables:
CONFIG_BUCKET: !FindInMap
- StagesMap
- Ref: Environments
- CONFIGBUCKET
CONFIG_KEY: !FindInMap
- StagesMap
- Ref: Environments
- CONFIGKEY
一种解决方案是查看嵌套堆栈。通过这种方式,您可以创建第三个SAM模板,该模板将两个模板都作为嵌套堆栈。然后,您只需部署父模板,两个模板将作为单独的堆栈部署 关于这方面的更多信息