[docs]classBotoSessionKwargs(BaseModel):""" AWS credentials and session configuration for Boto3 clients. .. tip:: See `boto_session_manager <https://github.com/MacHu-GWU/boto_session_manager-project>`_ official documentation for more details on how to use this class. """aws_access_key_id:T.Optional[str]=Field(default=None)aws_secret_access_key:T.Optional[str]=Field(default=None)aws_session_token:T.Optional[str]=Field(default=None)region_name:T.Optional[str]=Field(default=None)profile_name:T.Optional[str]=Field(default=None)role_arn:T.Optional[str]=Field(default=None)duration_seconds:int=Field(default=3600)auto_refresh:bool=Field(default=False)defget_bsm(self)->"BotoSesManager":""" Get a configured BotoSesManager instance. """kwargs=dict(aws_access_key_id=self.aws_access_key_id,aws_secret_access_key=self.aws_secret_access_key,aws_session_token=self.aws_session_token,region_name=self.region_name,profile_name=self.profile_name,)kwargs={k:vfork,vinkwargs.items()ifvisnotNone}bsm=BotoSesManager(**kwargs)# If role_arn is provided, assume the roleifisinstance(self.role_arn,str):bsm=bsm.assume_role(role_arn=self.role_arn,duration_seconds=self.duration_seconds,auto_refresh=self.auto_refresh,)returnbsm