handlers/digital-voucher-cancellation-processor/cfn.yaml (182 lines of code) (raw):
Parameters:
Stage:
Type: String
Description: Stage
Conditions:
IsProd:
Fn::Equals:
- Ref: Stage
- PROD
Resources:
DigitalVoucherCancellationProcessorFnRole9BC677A8:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Statement:
- Action: sts:AssumeRole
Effect: Allow
Principal:
Service: lambda.amazonaws.com
Version: "2012-10-17"
Tags:
- Key: App
Value: digital-voucher-cancellation-processor
- Key: Stage
Value:
Ref: Stage
- Key: Stack
Value: membership
DigitalVoucherCancellationProcessorFnRoleDefaultPolicy0592FCB9:
Type: AWS::IAM::Policy
Properties:
PolicyDocument:
Statement:
- Action: ssm:GetParametersByPath
Effect: Allow
Resource:
- Fn::Join:
- ""
- - "arn:aws:ssm:"
- Ref: AWS::Region
- ":"
- Ref: AWS::AccountId
- :parameter/
- Ref: Stage
- /membership/support-service-lambdas-shared-salesforce
- Fn::Join:
- ""
- - "arn:aws:ssm:"
- Ref: AWS::Region
- ":"
- Ref: AWS::AccountId
- :parameter/
- Ref: Stage
- /membership/support-service-lambdas-shared-imovo
- Action: kms:Decrypt
Effect: Allow
Resource:
Fn::Join:
- ""
- - "arn:aws:kms:"
- Ref: AWS::Region
- ":"
- Ref: AWS::AccountId
- :alias/aws/ssm
- Action: logs:CreateLogGroup
Effect: Allow
Resource:
Fn::Join:
- ""
- - "arn:aws:logs:"
- Ref: AWS::Region
- ":"
- Ref: AWS::AccountId
- :*
- Action:
- logs:CreateLogStream
- logs:PutLogEvents
Effect: Allow
Resource:
Fn::Join:
- ""
- - "arn:aws:logs:"
- Ref: AWS::Region
- ":"
- Ref: AWS::AccountId
- :log-group:/aws/lambda/digital-voucher-cancellation-processor-
- Ref: Stage
- :*
Version: "2012-10-17"
PolicyName: DigitalVoucherCancellationProcessorFnRoleDefaultPolicy0592FCB9
Roles:
- Ref: DigitalVoucherCancellationProcessorFnRole9BC677A8
DigitalVoucherCancellationProcessorLambdaCA1ECC62:
Type: AWS::Lambda::Function
Properties:
Code:
S3Bucket: support-service-lambdas-dist
S3Key:
Fn::Join:
- ""
- - membership/
- Ref: Stage
- /digital-voucher-cancellation-processor/digital-voucher-cancellation-processor.jar
Handler: com.gu.digital_voucher_cancellation_processor.Handler::handle
Role:
Fn::GetAtt:
- DigitalVoucherCancellationProcessorFnRole9BC677A8
- Arn
Runtime: java21
Environment:
Variables:
App: digital-voucher-cancellation-processor
Stage:
Ref: Stage
Stack: membership
FunctionName:
Fn::Join:
- ""
- - digital-voucher-cancellation-processor-
- Ref: Stage
MemorySize: 1536
Tags:
- Key: App
Value: digital-voucher-cancellation-processor
- Key: Stage
Value:
Ref: Stage
- Key: Stack
Value: membership
Timeout: 300
Architectures:
- arm64
DependsOn:
- DigitalVoucherCancellationProcessorFnRoleDefaultPolicy0592FCB9
- DigitalVoucherCancellationProcessorFnRole9BC677A8
DigitalVoucherCancellationProcessorLambdaAllowEventRuledigitalvouchercancellationprocessorDigitalVoucherCancellationProcessorSchedule4B74A65D3684A4A6:
Type: AWS::Lambda::Permission
Properties:
Action: lambda:InvokeFunction
FunctionName:
Fn::GetAtt:
- DigitalVoucherCancellationProcessorLambdaCA1ECC62
- Arn
Principal: events.amazonaws.com
SourceArn:
Fn::GetAtt:
- DigitalVoucherCancellationProcessorSchedule5BB23F75
- Arn
DigitalVoucherCancellationProcessorSchedule5BB23F75:
Type: AWS::Events::Rule
Properties:
ScheduleExpression: cron(0 * * * ? *)
State: ENABLED
Targets:
- Arn:
Fn::GetAtt:
- DigitalVoucherCancellationProcessorLambdaCA1ECC62
- Arn
Id: Target0
ErrorAlarmC73DBEA2:
Type: AWS::CloudWatch::Alarm
Properties:
ComparisonOperator: GreaterThanOrEqualToThreshold
EvaluationPeriods: 1
AlarmActions:
- !Sub arn:aws:sns:${AWS::Region}:${AWS::AccountId}:alarms-handler-topic-PROD
AlarmDescription: "IMPACT: If this goes unaddressed at least one subscription that was supposed to be cancelled will be available for fulfilment. For troubleshooting, see https://github.com/guardian/support-service-lambdas/blob/main/handlers/digital-voucher-cancellation-processor/README.md."
AlarmName: "URGENT 9-5 - PROD: Failed to cancel digital voucher subscriptions"
Dimensions:
- Name: FunctionName
Value:
Ref: DigitalVoucherCancellationProcessorLambdaCA1ECC62
MetricName: Errors
Namespace: AWS/Lambda
Period: 300
Statistic: Sum
Threshold: 1
TreatMissingData: missing
DependsOn:
- DigitalVoucherCancellationProcessorLambdaAllowEventRuledigitalvouchercancellationprocessorDigitalVoucherCancellationProcessorSchedule4B74A65D3684A4A6
- DigitalVoucherCancellationProcessorLambdaCA1ECC62
Condition: IsProd