1212logger .setLevel (logging .INFO )
1313
1414s3 = boto3 .resource ("s3" )
15+ cloudwatch = boto3 .client ('cloudwatch' )
16+
1517bucket_name = os .environ ['S3_BUCKET' ]
18+ CW_NAMESPACE = os .environ .get ("CLOUDWATCH_CUSTOM_METRIC_NAMESPACE" , "Assertions/TestCounter" )
1619
1720def 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
3853def 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