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],
}),
],
});
}