Cross-runtime consistency fixes
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
Research direction
Compare contract_event_handler.py, contract_status_changed_event_handler.py, and publication_evaluation_event_handler.py with the Java, TypeScript, and .NET runtimes. Review the listed timestamp, DynamoDB, environment-variable, validation, and metric behaviors first, then run the relevant service tests if available. Done means the Python handlers match the stated cross-runtime contracts without unintended writes or duplicate metrics.
Written by the indexing model from the issue text.
Description
Summary
A set of fixes to align the Python runtime with the other runtimes (Java, TypeScript, .NET) for functional equivalence and cross-runtime consistency.
Contracts Service
Timestamp format (contract_event_handler.py)
create_contract: replaceddatetime.now().strftime("%d/%m/%Y %H:%M:%S")withdatetime.now(timezone.utc).isoformat()for bothcontract_createdandcontract_last_modified_onupdate_contract: replaceddatetime.now().strftime(...)withdatetime.now(timezone.utc).isoformat()- Format change: custom
DD/MM/YYYY HH:MM:SS→ ISO 8601YYYY-MM-DDTHH:MM:SS.ffffff+00:00 - Uses the non-deprecated timezone-aware API (
timezone.utc) instead ofdatetime.utcnow()
DynamoDB attribute name (contract_event_handler.py)
update_contract: changedUpdateExpressionfrom"set contract_status=:t, modified_date=:m"to"set contract_status=:t, contract_last_modified_on=:m"- This corrects a bug where
update_contractwrote to a non-existentmodified_dateattribute instead of the correctcontract_last_modified_onattribute used increate_contract
Observability metrics (contract_event_handler.py)
- Added
metrics.add_metric(name="ContractCreated", unit=MetricUnit.Count, value=1)tocreate_contractsuccess path
Approvals Service
Per-invocation timestamp (contract_status_changed_event_handler.py)
- Removed module-level
now = datetime.now()andcurrent_datevariable assignments - Moved timestamp computation inside the handler function body to ensure each invocation captures its own execution time rather than the container initialisation time
Environment variable error type (contract_status_changed_event_handler.py)
- Replaced
raise InternalServerError(...)withraise EnvironmentError(...)for bothSERVICE_NAMESPACEandCONTRACT_STATUS_TABLEmissing variable checks - Removed the now-unused
InternalServerErrorimport fromaws_lambda_powertools.event_handler.exceptions
Web Service
Evaluation result validation (publication_evaluation_event_handler.py)
- Added validation guard: only updates DynamoDB when
evaluation_resultis"APPROVED"or"DECLINED"(case-insensitive) - Logs a warning and returns without writing to DynamoDB for any other value
Metric name correction (publication_evaluation_event_handler.py)
- Removed duplicate
metrics.add_metric(name="PropertiesAdded", ...)call - Retained
metrics.add_metric(name="PropertiesApproved", ...)as the single metric for this path
- Dominant language
- Python
- Stars
- 47
- Forks
- 20
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from aws-samples/aws-serverless-developer-experience-workshop-python
-
internal pending-release triage
aws-samples/aws-serverless-developer-experience-workshop-python#32 · 1 assignee ·
-
bug triage
Difficulty 3/5 1-2 days Newbie friendliness 25/100
aws-samples/aws-serverless-developer-experience-workshop-python#30 ·
All issues in aws-samples/aws-serverless-developer-experience-workshop-python
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
anthropics/skills#1811 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
speaches-ai/speaches#678 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
datalayer/mcp-compose#42 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
conda-forge/spacy-feedstock#177 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
UKGovernmentBEIS/inspect_evals#2523 ·