diff --git a/serverless-plugin/alarms-alb-target-group.js b/serverless-plugin/alarms-alb-target-group.js index 3288a6dd..0d742094 100644 --- a/serverless-plugin/alarms-alb-target-group.js +++ b/serverless-plugin/alarms-alb-target-group.js @@ -24,12 +24,12 @@ module.exports = function ALBTargetAlarms (albTargetAlarmConfig, context) { for (const tgLogicalId of Object.keys(targetGroupResources)) { const loadBalancerLogicalIds = findLoadBalancersForTargetGroup(tgLogicalId, cfTemplate) for (const loadBalancerLogicalId of loadBalancerLogicalIds) { - const loadBalancerFullName = `\${${loadBalancerLogicalId}.LoadBalancerFullName}` + // const loadBalancerFullName = resolveLoadBalancerFullNameForSub(loadBalancerLogicalId) if (albTargetAlarmConfig.HTTPCode_Target_5XX_Count && albTargetAlarmConfig.HTTPCode_Target_5XX_Count.enabled) { const httpCodeTarget5XXCount = createHTTPCodeTarget5XXCountAlarm( targetGroupResourceName, targetGroupResource, - loadBalancerFullName, + loadBalancerLogicalId, albTargetAlarmConfig.HTTPCode_Target_5XX_Count ) cfTemplate.addResource(httpCodeTarget5XXCount.resourceName, httpCodeTarget5XXCount.resource) @@ -38,7 +38,7 @@ module.exports = function ALBTargetAlarms (albTargetAlarmConfig, context) { const unHealthyHostCount = createUnHealthyHostCountAlarm( targetGroupResourceName, targetGroupResource, - loadBalancerFullName, + loadBalancerLogicalId, albTargetAlarmConfig.UnHealthyHostCount ) cfTemplate.addResource(unHealthyHostCount.resourceName, unHealthyHostCount.resource) @@ -47,7 +47,7 @@ module.exports = function ALBTargetAlarms (albTargetAlarmConfig, context) { const lambdaInternalError = createLambdaInternalErrorAlarm( targetGroupResourceName, targetGroupResource, - loadBalancerFullName, + loadBalancerLogicalId, albTargetAlarmConfig.LambdaInternalError ) cfTemplate.addResource(lambdaInternalError.resourceName, lambdaInternalError.resource) @@ -56,7 +56,7 @@ module.exports = function ALBTargetAlarms (albTargetAlarmConfig, context) { const lambdaUserError = createLambdaUserErrorAlarm( targetGroupResourceName, targetGroupResource, - loadBalancerFullName, + loadBalancerLogicalId, albTargetAlarmConfig.LambdaUserError ) cfTemplate.addResource(lambdaUserError.resourceName, lambdaUserError.resource) @@ -70,7 +70,7 @@ module.exports = function ALBTargetAlarms (albTargetAlarmConfig, context) { alarmName, alarmDescription, targetGroupResourceName, // Logical ID of the CloudFormation Target Group Resource - loadBalancerFullName, + loadBalancerLogicalId, comparisonOperator, threshold, metricName, @@ -81,6 +81,7 @@ module.exports = function ALBTargetAlarms (albTargetAlarmConfig, context) { treatMissingData ) { const targetGroupFullName = { 'Fn::GetAtt': [targetGroupResourceName, 'TargetGroupFullName'] } + const loadBalancerFullName = { 'Fn::GetAtt': [loadBalancerLogicalId, 'LoadBalancerFullName'] } const metricProperties = { Dimensions: [{ Name: 'TargetGroup', Value: targetGroupFullName }, { Name: 'LoadBalancer', Value: loadBalancerFullName }], MetricName: metricName, diff --git a/serverless-plugin/tests/alarms-alb-target-group.test.js b/serverless-plugin/tests/alarms-alb-target-group.test.js index 9dbfcf2a..373b712b 100644 --- a/serverless-plugin/tests/alarms-alb-target-group.test.js +++ b/serverless-plugin/tests/alarms-alb-target-group.test.js @@ -74,8 +74,7 @@ test('ALB Target Group alarms are created', (t) => { }, { Name: 'LoadBalancer', - // eslint-disable-next-line no-template-curly-in-string - Value: '${alb.LoadBalancerFullName}' + Value: { 'Fn::GetAtt': ['alb', 'LoadBalancerFullName'] } } ]) } diff --git a/serverless-test-project-alb/alb-handler.js b/serverless-test-project-alb/alb-handler.js index 3b16a140..d002e2a9 100644 --- a/serverless-test-project-alb/alb-handler.js +++ b/serverless-test-project-alb/alb-handler.js @@ -9,9 +9,13 @@ async function handleALB (event, context) { const body = JSON.parse(event.body || '{}') console.log(body) if (body.triggerError) { - throw new Error('Error triggered') + throw new Error('Error triggered by lambda') } else if (event.triggerError) { - throw new Error('Error triggered by Lambda') + throw new Error('Error triggered by ALB') + } else if (event.sendHttpError) { + return { + statusCode: event.sendHttpError + } } else { console.log('Successful event delivery') return {