diff --git a/plugins/aws/resoto_plugin_aws/config.py b/plugins/aws/resoto_plugin_aws/config.py index 41d9546e8..bf54dece8 100644 --- a/plugins/aws/resoto_plugin_aws/config.py +++ b/plugins/aws/resoto_plugin_aws/config.py @@ -4,10 +4,12 @@ import uuid from datetime import timedelta -from attrs import define, field +from resotolib.types import Json +from attrs import define, field, fields_dict from functools import lru_cache from typing import List, ClassVar, Optional, Type, Any, Dict +from resotolib.json import from_json as from_js from boto3.session import Session as BotoSession from resotolib.durations import parse_duration @@ -156,6 +158,14 @@ class AwsConfig: }, ) + @staticmethod + def from_json(json: Json) -> "AwsConfig": + valid_fields = fields_dict(AwsConfig).keys() + for field_name in json.copy().keys(): + if field_name not in valid_fields: + del json[field_name] + return from_js(json, AwsConfig) + def atime_mtime_period(self) -> timedelta: return parse_duration(self.cloudwatch_metrics_for_atime_mtime_period)