aws-samples / aws-samples/aws-serverless-developer-experience-workshop-python

Cross-runtime consistency fixes

Đang mở
#178 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
pending-release
Ngôn ngữ chính
Python
Star
47
Fork
20
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

## 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`: replaced `datetime.now().strftime("%d/%m/%Y %H:%M:%S")` with `datetime.now(timezone.utc).isoformat()` for both `contract_created` and `contract_last_modified_on`
- `update_contract`: replaced `datetime.now().strftime(...)` with `datetime.now(timezone.utc).isoformat()`
- Format change: custom `DD/MM/YYYY HH:MM:SS` → ISO 8601 `YYYY-MM-DDTHH:MM:SS.ffffff+00:00`
- Uses the non-deprecated timezone-aware API (`timezone.utc`) instead of `datetime.utcnow()`

### DynamoDB attribute name (`contract_event_handler.py`)
- `update_contract`: changed `UpdateExpression` from `"set contract_status=:t, modified_date=:m"` to `"set contract_status=:t, contract_last_modified_on=:m"`
- This corrects a bug where `update_contract` wrote to a non-existent `modified_date` attribute instead of the correct `contract_last_modified_on` attribute used in `create_contract`

### Observability metrics (`contract_event_handler.py`)
- Added `metrics.add_metric(name="ContractCreated", unit=MetricUnit.Count, value=1)` to `create_contract` success path

---

## Approvals Service

### Per-invocation timestamp (`contract_status_changed_event_handler.py`)
- Removed module-level `now = datetime.now()` and `current_date` variable 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(...)` with `raise EnvironmentError(...)` for both `SERVICE_NAMESPACE` and `CONTRACT_STATUS_TABLE` missing variable checks
- Removed the now-unused `InternalServerError` import from `aws_lambda_powertools.event_handler.exceptions`

---

## Web Service

### Evaluation result validation (`publication_evaluation_event_handler.py`)
- Added validation guard: only updates DynamoDB when `evaluation_result` is `"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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.