in src/tasks/LambdaDeployFunction/TaskOperations.ts [155:220]
private async createFunction(): Promise<string> {
console.log(tl.loc('CreatingFunction', this.taskParameters.functionName))
const request: Lambda.CreateFunctionRequest = {
FunctionName: this.taskParameters.functionName,
Handler: this.taskParameters.functionHandler,
Role: await SdkUtils.roleArnFromName(this.iamClient, this.taskParameters.roleARN),
MemorySize: this.taskParameters.memorySize,
Timeout: this.taskParameters.timeout,
Publish: this.taskParameters.publish,
Runtime: this.taskParameters.runtime,
Code:
this.taskParameters.codeLocation === updateFromLocalFile
? {
ZipFile: readFileSync(this.taskParameters.localZipFile)
}
: {
S3Bucket: this.taskParameters.s3Bucket,
S3Key: this.taskParameters.s3ObjectKey,
S3ObjectVersion: this.taskParameters.s3ObjectVersion
},
DeadLetterConfig: {
TargetArn: this.taskParameters.deadLetterARN
},
KMSKeyArn: this.taskParameters.kmsKeyARN
}
if (this.taskParameters.description) {
request.Description = this.taskParameters.description
}
if (this.taskParameters.environment) {
request.Environment = {}
request.Environment.Variables = SdkUtils.getTagsDictonary(this.taskParameters.environment)
}
if (this.taskParameters.tags && this.taskParameters.tags.length > 0) {
request.Tags = SdkUtils.getTagsDictonary(this.taskParameters.tags)
}
if (this.taskParameters.layers && this.taskParameters.layers.length > 0) {
request.Layers = this.taskParameters.layers
}
if (this.taskParameters.securityGroups && this.taskParameters.securityGroups.length > 0) {
request.VpcConfig = {
SecurityGroupIds: this.taskParameters.securityGroups,
SubnetIds: this.taskParameters.subnets
}
}
if (this.taskParameters.tracingConfig && this.taskParameters.tracingConfig !== 'XRay') {
request.TracingConfig = {
Mode: this.taskParameters.tracingConfig
}
}
try {
const response = await this.lambdaClient.createFunction(request).promise()
if (!response.FunctionArn) {
throw new Error(tl.loc('NoFunctionArnReturned'))
}
await this.waitForStatus(FUNCTION_ACTIVE)
return response.FunctionArn
} catch (err) {
throw new Error(`Failed to create function, error ${err}`)
}
}