Skip to content

Commit 44d1d76

Browse files
authored
Merge pull request #693 from pagopa/feat/assertion_lambda_count_metric
feat: assertion lambda count metric
2 parents 1b52fe9 + a31ce61 commit 44d1d76

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

src/infra/modules/backend/lambda.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,12 @@ data "aws_iam_policy_document" "assertion_lambda" {
486486
resources = ["${var.assertion_lambda.s3_assertion_bucket_arn}/*"]
487487
}
488488

489+
statement {
490+
effect = "Allow"
491+
actions = ["cloudwatch:PutMetricData"]
492+
resources = ["*"]
493+
}
494+
489495
statement {
490496
effect = "Allow"
491497
actions = ["kms:GenerateDataKey"]

src/oneid/oneid-lambda-assertion/index.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
logger.setLevel(logging.INFO)
1313

1414
s3 = boto3.resource("s3")
15+
cloudwatch = boto3.client('cloudwatch')
16+
1517
bucket_name = os.environ['S3_BUCKET']
18+
CW_NAMESPACE = os.environ.get("CLOUDWATCH_CUSTOM_METRIC_NAMESPACE", "Assertions/TestCounter")
1619

1720
def decode_base64_content(content):
1821

@@ -34,6 +37,18 @@ def get_fiscal_number(token):
3437
except Exception as e:
3538
logger.error(f'Error parsing fiscalNumber: {str(e)}')
3639
return ""
40+
41+
def publish_metric(value: float, metric_name: str) -> None:
42+
"""Publish a single metric to CloudWatch"""
43+
cloudwatch.put_metric_data(
44+
Namespace=CW_NAMESPACE,
45+
MetricData=[{
46+
'MetricName': metric_name,
47+
'Value': float(value),
48+
'Unit': 'Count',
49+
'StorageResolution': 60,
50+
}]
51+
)
3752

3853
def lambda_handler(event, context):
3954

@@ -49,8 +64,10 @@ def lambda_handler(event, context):
4964
if record_type == "SAML" :
5065
record['SAMLRequest'] = decode_base64_content(record['SAMLRequest'])
5166
record['SAMLResponse'] = decode_base64_content(record['SAMLResponse'])
67+
publish_metric(1, "Saml")
5268
elif record_type == "ACCESS_TOKEN":
5369
record['fiscalNumber'] = get_fiscal_number(record['idToken'])
70+
publish_metric(1, "AccessToken")
5471

5572
# Write the file to S3
5673
file_key = cet_time.strftime(f"year=%Y/month=%m/day=%d/hour=%H/type={record_type}/{saml_request_id}.json")

0 commit comments

Comments
 (0)