File tree 1 file changed +12
-3
lines changed
aws_lambda_powertools/utilities/parser/models
1 file changed +12
-3
lines changed Original file line number Diff line number Diff line change 1
1
from datetime import datetime
2
2
from typing import List , Optional
3
3
4
- from pydantic import BaseModel
4
+ from pydantic import BaseModel , root_validator
5
5
from pydantic .fields import Field
6
6
from pydantic .networks import IPvAnyNetwork
7
7
from pydantic .types import NonNegativeFloat
@@ -43,8 +43,8 @@ class S3Bucket(BaseModel):
43
43
44
44
class S3Object (BaseModel ):
45
45
key : str
46
- size : NonNegativeFloat
47
- eTag : str
46
+ size : Optional [ NonNegativeFloat ]
47
+ eTag : Optional [ str ]
48
48
sequencer : str
49
49
versionId : Optional [str ]
50
50
@@ -68,6 +68,15 @@ class S3RecordModel(BaseModel):
68
68
s3 : S3Message
69
69
glacierEventData : Optional [S3EventRecordGlacierEventData ]
70
70
71
+ @root_validator
72
+ def validate_s3_object (cls , values ):
73
+ event_name = values .get ("eventName" )
74
+ s3_object = values .get ("s3" ).object
75
+ if "ObjectRemoved" not in event_name :
76
+ if s3_object .size is None or s3_object .eTag is None :
77
+ raise ValueError ("S3Object.size and S3Object.eTag are required for non-ObjectRemoved events" )
78
+ return values
79
+
71
80
72
81
class S3Model (BaseModel ):
73
82
Records : List [S3RecordModel ]
You can’t perform that action at this time.
0 commit comments