Feature request: Ability to post custom timestamps with metrics
Use case
I've setup a cron job to log daily costs from cost explorer to cloudwatch metrics (i.e. looking at the previous day's data for each invocation). I realised today that it might not be possible to assign the correct timestamp using powertools for this use case, as I think it assumes the timestamp is the time of publishing?
Related to this, I could not see any documentation on https://docs.powertools.aws.dev/lambda/typescript/latest/core/metrics/ for how the timestamp is determined (is it time of addMetrics() or time of .flush()?
Solution/User Experience
Allow specification of timestamp with the addMetric() call
Alternative solutions
In the mean time, I think I'll need to use https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cloudwatch/command/PutMetricDataCommand/
I notice this feature seems to already be available in the Python toolkit: https://docs.powertools.aws.dev/lambda/python/latest/core/metrics/#changing-default-timestamp and maybe not in Java
Acknowledgment
- [x] This feature request meets Powertools for AWS Lambda (TypeScript) Tenets
- [x] Should this be considered in other Powertools for AWS Lambda languages? i.e. Python, Java, and .NET
Future readers
Please react with 👍 and your use case to help us understand customer demand.
Hi @bml1g12, thanks for opening this feature request!
I think it's more than valid since as you pointed out, the feature itself already present in another version of Powertools for AWS.
In terms of DX, we'll most likely align with the one introduced in the Python version rather than adding a new parameter to the method to add a metric.
I'll add this to the backlog and mark it as open for contributors. If anyone is interested to take it, please leave a comment so we can assign it you. Feel free to ask any questions.
If it's not picked up, we'll prioritize it to be worked on within the team as time allows it.
Hi @bml1g12, thanks for opening this feature request!
I think it's more than valid since as you pointed out, the feature itself already present in another version of Powertools for AWS.
In terms of DX, we'll most likely align with the one introduced in the Python version rather than adding a new parameter to the method to add a metric.
I'll add this to the backlog and mark it as open for contributors. If anyone is interested to take it, please leave a comment so we can assign it you. Feel free to ask any questions.
If it's not picked up, we'll prioritize it to be worked on within the team as time allows it.
That makes sense, thanks
Also, @bml1g12, I missed your other question about the timestamp.
The timestamp is generated here, which is called during the publishStoredMetrics() method.
We should clarify this in the API docs of the feature.
I will work on this ✋️