constructor()

in cdk/lib/salesforce-disaster-recovery-health-check.ts [12:72]


	constructor(scope: App, id: string, props: GuStackProps) {
		super(scope, id, props);

		const app = 'salesforce-disaster-recovery-health-check';

		const snsTopicArn = `arn:aws:sns:${this.region}:${this.account}:alarms-handler-topic-${this.stage}`;

		const stateMachine = StateMachine.fromStateMachineName(
			this,
			'stateMachine',
			`salesforce-disaster-recovery-${this.stage}`,
		);

		new GuScheduledLambda(this, 'salesforce-disaster-recovery-health-check', {
			app,
			memorySize: 1024,
			fileName: `${app}.zip`,
			runtime: nodeVersion,
			timeout: Duration.minutes(5),
			environment: {
				APP: app,
				STACK: this.stack,
				STAGE: this.stage,
				REGION: this.region,
				SNS_TOPIC_ARN: snsTopicArn,
				STATE_MACHINE_ARN: stateMachine.stateMachineArn,
			},
			handler: 'salesforceDisasterRecoveryHealthCheck.handler',
			functionName: `${app}-${this.stage}`,
			rules: [
				{
					schedule: Schedule.cron({
						minute: '0',
						hour: '6',
						weekDay: 'MON',
						month: '*',
						year: '*',
					}),
				},
			],
			monitoringConfiguration: { noMonitoring: true },
			initialPolicy: [
				new PolicyStatement({
					actions: ['states:StartExecution'],
					resources: [
						`arn:aws:states:${this.region}:${this.account}:stateMachine:salesforce-disaster-recovery-${this.stage}`,
					],
				}),
				new PolicyStatement({
					actions: ['states:DescribeExecution'],
					resources: [
						`arn:aws:states:${this.region}:${this.account}:execution:salesforce-disaster-recovery-${this.stage}:*`,
					],
				}),
				new PolicyStatement({
					actions: ['sns:Publish'],
					resources: [snsTopicArn],
				}),
			],
		});
	}