in magenta-lib/src/main/scala/magenta/deployment_type/Lambda.scala [101:171]
def lambdaToProcess(
pkg: DeploymentPackage,
target: DeployTarget,
reporter: DeployReporter
): List[UpdateLambdaFunction] = {
val bucket = getTargetBucketFromConfig(pkg, target, reporter)
val stage = target.parameters.stage.name
(
functionNamesParam.get(pkg),
functionsParam.get(pkg),
lookupByTags(pkg, target, reporter),
prefixStackParam(pkg, target, reporter)
) match {
// the lambdas are a simple hardcoded list of function names
case (Some(functionNames), None, false, prefixStack) =>
val stackNamePrefix = if (prefixStack) target.stack.name else ""
for {
name <- functionNames
} yield UpdateLambdaFunction(
LambdaFunctionName(s"$stackNamePrefix$name$stage"),
fileNameParam(pkg, target, reporter),
target.region,
bucket
)
// the list of lambdas are provided in a map from stage to lambda name and filename
case (None, Some(functionsMap), false, _) =>
val functionDefinition = functionsMap.getOrElse(
stage,
reporter.fail(s"Function not defined for stage $stage")
)
val functionName = functionDefinition.getOrElse(
"name",
reporter.fail(s"Function name not defined for stage $stage")
)
val fileName = functionDefinition.getOrElse("filename", "lambda.zip")
List(
UpdateLambdaFunction(
LambdaFunctionName(functionName),
fileName,
target.region,
bucket
)
)
// the lambda to update is discovered from Stack, App and Stage tags
case (None, None, true, _) =>
val tags = LambdaFunctionTags(
Map(
"Stack" -> target.stack.name,
"App" -> pkg.app.name,
"Stage" -> stage
)
)
List(
UpdateLambdaFunction(
tags,
fileNameParam(pkg, target, reporter),
target.region,
bucket
)
)
case _ =>
reporter.fail(
"Must specify one of 'functions', 'functionNames' or 'lookupByTags' parameters"
)
}
}