in alexa/lambda/lib/lambda-stack.js [14:53]
constructor(scope, id, props) {
super(scope, id, props);
//Lambda role
const lambdaRole = new iam.Role(this, 'SCPAlexaLambdaRole', {
assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
})
//Add basic execution and VPC execution roles
lambdaRole.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('AWSLambdaExecute'))
//Create the skill lambda function
const skillHandler = new lambda.Function(this, 'AlexaSkillHandler', {
code: lambda.Code.fromAsset(path.join(__dirname, 'functions/aws-sap-alexa-scp-solo')),
runtime: lambda.Runtime.NODEJS_10_X,
handler: 'index.handler',
description: 'Sample Lambda function for alexa skill through SCP',
role: lambdaRole,
timeout: cdk.Duration.seconds(29),
memorySize: 1024,
environment: {
APIURL: AppConfig.scp.odataProxyAPIUrl,
SKILLNAME: AppConfig.alexaskill.name
}
})
skillHandler.addPermission('AlexaSkillPermission',{
principal: new iam.ServicePrincipal('alexa-appkit.amazon.com'),
action: "lambda:InvokeFunction",
eventSourceToken: AppConfig.alexaskill.id
})
//Outputs
new cdk.CfnOutput(this,'AlexaSkillLambdaFunctionArn',{
value: skillHandler.functionArn,
description: "Alexa skill hander Lambda function ARN",
exportName: AppConfig.cfexports.AlexaSkillLambdaFunctionArn
})
}