constructor()

in subscribers/javascript/auto-export-to-s3/cfn/lambda.ts [9:40]


  constructor(app: cdk.App, id: string) {
    super(app, id);

    const s3Bucket = new s3.Bucket(this, 'DataExchangeAssetsBucket', {
      encryption: s3.BucketEncryption.S3_MANAGED
    });

    const lambdaFunction = new lambda.Function(this, 'AutoExportToS3Lambda', {
      code: new lambda.AssetCode('dist/lambda'),
      handler: 'exportToS3.handler',
      timeout: cdk.Duration.minutes(15),
      runtime: lambda.Runtime.NODEJS_12_X,
      environment: {
        S3_BUCKET: s3Bucket.bucketName
      }
    });

    lambdaFunction.role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('AWSDataExchangeSubscriberFullAccess'));
    lambdaFunction.addToRolePolicy(new iam.PolicyStatement({
      actions: [ 's3:PutObject', 's3:PutObjectAcl' ],
      resources: [ cdk.Fn.join('', [ s3Bucket.bucketArn, '/*' ]) ]
    }));

    new events.Rule(this, 'DataExchangeRule', {
      description: 'Each time an ENTITLED Data Set is updated with a new Revision, this Rule will be triggered.',
      eventPattern: {
        source: [ 'aws.dataexchange' ],
        detailType: [ 'Revision Published To Data Set' ]
      },
      targets: [ new targets.LambdaFunction(lambdaFunction) ]
    });
  }