I am building a AWS Java Lambda function using SAM template and AWS CodePiepline using terraform.
The Build stage fails stating that it cannot find the template file for running sam package command.
Relevant code snippet is as below.
Terraform Code For Building Pipeline:
<code>stage {
name = "Source"
action {
name = "Source"
category = "Source"
owner = "AWS"
provider = "CodeCommit"
version = "1"
input_artifacts = []
output_artifacts = ["source_output"]
configuration = {
RepositoryName = "add-integers-lambda"
BranchName = "master"
PollForSourceChanges = true
}
}
}
stage {
name = "BuildStage"
action {
name = "BuildAction"
category = "Build"
owner = "AWS"
provider = "CodeBuild"
version = "1"
input_artifacts = ["source_output"]
output_artifacts = ["build_output"]
configuration = {
ProjectName = var.project_name
}
}
}
}
</code>
<code>stage {
name = "Source"
action {
name = "Source"
category = "Source"
owner = "AWS"
provider = "CodeCommit"
version = "1"
input_artifacts = []
output_artifacts = ["source_output"]
configuration = {
RepositoryName = "add-integers-lambda"
BranchName = "master"
PollForSourceChanges = true
}
}
}
stage {
name = "BuildStage"
action {
name = "BuildAction"
category = "Build"
owner = "AWS"
provider = "CodeBuild"
version = "1"
input_artifacts = ["source_output"]
output_artifacts = ["build_output"]
configuration = {
ProjectName = var.project_name
}
}
}
}
</code>
stage {
name = "Source"
action {
name = "Source"
category = "Source"
owner = "AWS"
provider = "CodeCommit"
version = "1"
input_artifacts = []
output_artifacts = ["source_output"]
configuration = {
RepositoryName = "add-integers-lambda"
BranchName = "master"
PollForSourceChanges = true
}
}
}
stage {
name = "BuildStage"
action {
name = "BuildAction"
category = "Build"
owner = "AWS"
provider = "CodeBuild"
version = "1"
input_artifacts = ["source_output"]
output_artifacts = ["build_output"]
configuration = {
ProjectName = var.project_name
}
}
}
}
SAM Template File
<code>Resources:
AddIntegersFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: add-integers-lambda-function
CodeUri: target/add-integers-lambda-1.0-SNAPSHOT.jar
Handler: com.csz.lambda.AddIntegersHandler::handleRequest
Runtime: java17
Timeout: 20
Architectures:
- x86_64
MemorySize: 1024
Policies:
- LambdaInvokePolicy:
FunctionName: add-integers-lambda-function
</code>
<code>Resources:
AddIntegersFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: add-integers-lambda-function
CodeUri: target/add-integers-lambda-1.0-SNAPSHOT.jar
Handler: com.csz.lambda.AddIntegersHandler::handleRequest
Runtime: java17
Timeout: 20
Architectures:
- x86_64
MemorySize: 1024
Policies:
- LambdaInvokePolicy:
FunctionName: add-integers-lambda-function
</code>
Resources:
AddIntegersFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: add-integers-lambda-function
CodeUri: target/add-integers-lambda-1.0-SNAPSHOT.jar
Handler: com.csz.lambda.AddIntegersHandler::handleRequest
Runtime: java17
Timeout: 20
Architectures:
- x86_64
MemorySize: 1024
Policies:
- LambdaInvokePolicy:
FunctionName: add-integers-lambda-function
buildspec.yml file
<code>version: 0.2
phases:
install:
runtime-versions:
java: corretto17
pre_build:
commands:
- echo Nothing to do in pre_build phase
build:
commands:
- echo Build started on `date`
- mvn package
- sam package
--template-file build_output::template.yml
--output-template-file package.yml
--s3-bucket add-integers-lambda-171965071268
artifacts:
files:
- package.yml
</code>
<code>version: 0.2
phases:
install:
runtime-versions:
java: corretto17
pre_build:
commands:
- echo Nothing to do in pre_build phase
build:
commands:
- echo Build started on `date`
- mvn package
- sam package
--template-file build_output::template.yml
--output-template-file package.yml
--s3-bucket add-integers-lambda-171965071268
artifacts:
files:
- package.yml
</code>
version: 0.2
phases:
install:
runtime-versions:
java: corretto17
pre_build:
commands:
- echo Nothing to do in pre_build phase
build:
commands:
- echo Build started on `date`
- mvn package
- sam package
--template-file build_output::template.yml
--output-template-file package.yml
--s3-bucket add-integers-lambda-171965071268
artifacts:
files:
- package.yml
Thanks much for all your help.