constructor()

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
    })

  }