def send_email_sns(config, sender, subject, message, topic_ARN, image_png): """ Sends notification through AWS SNS. Takes Topic ARN from recipients. Does not handle access keys. Use either 1/ configuration file 2/ EC2 instance profile See also http://boto3.readthedocs.org/en/latest/guide/configuration.html. """ from boto3 import resource as boto3_resource sns = boto3_resource('sns') topic = sns.Topic(topic_ARN[0]) # Subject is max 100 chars if len(subject) > 100: subject = subject[0:48] + '...' + subject[-49:] response = topic.publish(Subject=subject, Message=message) logger.debug(("Message sent to SNS.\nMessageId: {},\nRequestId: {},\n" "HTTPSStatusCode: {}").format(response['MessageId'], response['ResponseMetadata']['RequestId'], response['ResponseMetadata']['HTTPStatusCode']))
def send_email_sns(sender, subject, message, topics_ARN, image_png): """ Sends notification through AWS SNS. Takes Topic ARN from recipients. Does not handle access keys. Use either 1/ configuration file 2/ EC2 instance profile See also https://boto3.readthedocs.io/en/latest/guide/configuration.html. """ from boto3 import resource as boto3_resource sns = boto3_resource('sns') for topic_ARN in topics_ARN: topic = sns.Topic(topic_ARN) # Subject is max 100 chars if len(subject) > 100: subject = subject[0:48] + '...' + subject[-49:] response = topic.publish(Subject=subject, Message=message) logger.debug(("Message sent to SNS.\nMessageId: {},\nRequestId: {},\n" "HTTPSStatusCode: {}").format( response['MessageId'], response['ResponseMetadata']['RequestId'], response['ResponseMetadata']['HTTPStatusCode']))
def resource(self, service_name, **kwargs): if service_name not in self._service_endpoint_mapping: raise Exception('%s is not supported by this mock session.' % (service_name)) return boto3_resource( service_name, endpoint_url=self._service_endpoint_mapping[service_name], aws_access_key_id=self.aws_access_key_id, aws_secret_access_key=self.aws_secret_access_key, region_name=self.region_name, verify=False)
def resource(self, service_name, **kwargs): """ Mock boto3 resource If **kwargs are provided they will passed through to boto3.client unless they are contained already within overwrite_kwargs which are set with priority Returns boto3.resources.factory.s3.ServiceResource object """ if service_name not in self._service_endpoint_mapping: raise Exception('%s is not supported by this mock session.' % (service_name)) protected_kwargs = { **self.common_protected_kwargs, 'service_name': service_name, 'endpoint_url': self._service_endpoint_mapping[service_name] } return boto3_resource(**{**kwargs, **protected_kwargs})
# Client initialization self.boto3_client = boto3_client( "ecs", aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, aws_session_token=aws_session_token, region_name=region_name, config=Config(**botocore_config), ) # fetch external kwargs from s3 if needed if self.use_external_kwargs: self.logger.info("Use of external S3 kwargs enabled.") self.s3_resource = boto3_resource( "s3", aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, aws_session_token=aws_session_token, region_name=region_name, ) # get boto3 client for resource groups tagging api if self.enable_task_revisions: self.logger.info("Native ECS task revisions enabled.") self.boto3_client_tags = boto3_client( "resourcegroupstaggingapi", aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, aws_session_token=aws_session_token, region_name=region_name, config=Config(**botocore_config), )
def __init__( # type: ignore self, name: str = None, labels: Iterable[str] = None, env_vars: dict = None, aws_access_key_id: str = None, aws_secret_access_key: str = None, aws_session_token: str = None, region_name: str = None, enable_task_revisions: bool = False, use_external_kwargs: bool = False, external_kwargs_s3_bucket: str = None, external_kwargs_s3_key: str = None, **kwargs) -> None: super().__init__(name=name, labels=labels, env_vars=env_vars) from boto3 import client as boto3_client from boto3 import resource as boto3_resource # Config used for boto3 client initialization aws_access_key_id = aws_access_key_id or os.getenv("AWS_ACCESS_KEY_ID") aws_secret_access_key = aws_secret_access_key or os.getenv( "AWS_SECRET_ACCESS_KEY") aws_session_token = aws_session_token or os.getenv("AWS_SESSION_TOKEN") region_name = region_name or os.getenv("REGION_NAME") # revisions and kwargs configurations self.enable_task_revisions = enable_task_revisions self.use_external_kwargs = use_external_kwargs self.external_kwargs_s3_bucket = external_kwargs_s3_bucket self.external_kwargs_s3_key = external_kwargs_s3_key # Parse accepted kwargs for definition and run self.task_definition_kwargs, self.task_run_kwargs = self._parse_kwargs( kwargs, True) # Client initialization self.boto3_client = boto3_client( "ecs", aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, aws_session_token=aws_session_token, region_name=region_name, ) # fetch external kwargs from s3 if needed if self.use_external_kwargs: self.logger.info("Use of external S3 kwargs enabled.") self.s3_resource = boto3_resource( "s3", aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, aws_session_token=aws_session_token, region_name=region_name, ) # get boto3 client for resource groups tagging api if self.enable_task_revisions: self.logger.info("Native ECS task revisions enabled.") self.boto3_client_tags = boto3_client( "resourcegroupstaggingapi", aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, aws_session_token=aws_session_token, region_name=region_name, )
def __init__( # type: ignore self, name: str = None, labels: Iterable[str] = None, env_vars: dict = None, max_polls: int = None, agent_address: str = None, no_cloud_logs: bool = False, launch_type: str = "FARGATE", aws_access_key_id: str = None, aws_secret_access_key: str = None, aws_session_token: str = None, region_name: str = None, botocore_config: dict = None, enable_task_revisions: bool = False, use_external_kwargs: bool = False, external_kwargs_s3_bucket: str = None, external_kwargs_s3_key: str = None, **kwargs, ) -> None: super().__init__( name=name, labels=labels, env_vars=env_vars, max_polls=max_polls, agent_address=agent_address, no_cloud_logs=no_cloud_logs, ) from boto3 import client as boto3_client from boto3 import resource as boto3_resource from botocore.config import Config # Config used for boto3 client initialization aws_access_key_id = aws_access_key_id or os.getenv("AWS_ACCESS_KEY_ID") aws_secret_access_key = aws_secret_access_key or os.getenv( "AWS_SECRET_ACCESS_KEY") aws_session_token = aws_session_token or os.getenv("AWS_SESSION_TOKEN") region_name = region_name or os.getenv("REGION_NAME") botocore_config = botocore_config or {} # revisions and kwargs configurations self.enable_task_revisions = enable_task_revisions self.use_external_kwargs = use_external_kwargs self.external_kwargs_s3_bucket = external_kwargs_s3_bucket self.external_kwargs_s3_key = external_kwargs_s3_key self.launch_type = launch_type # Parse accepted kwargs for task definition, run, and container definitions key of task definition ( self.task_definition_kwargs, self.task_run_kwargs, self.container_definitions_kwargs, ) = self._parse_kwargs(kwargs, True) # Client initialization self.boto3_client = boto3_client( "ecs", aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, aws_session_token=aws_session_token, region_name=region_name, config=Config(**botocore_config), ) # fetch external kwargs from s3 if needed if self.use_external_kwargs: self.logger.info("Use of external S3 kwargs enabled.") self.s3_resource = boto3_resource( "s3", aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, aws_session_token=aws_session_token, region_name=region_name, ) # get boto3 client for resource groups tagging api if self.enable_task_revisions: self.logger.info("Native ECS task revisions enabled.") self.boto3_client_tags = boto3_client( "resourcegroupstaggingapi", aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, aws_session_token=aws_session_token, region_name=region_name, config=Config(**botocore_config), ) self.logger.debug(f"Launch type: {self.launch_type}") self.logger.debug( f"Enable task revisions: {self.enable_task_revisions}") self.logger.debug(f"Use external kwargs: {self.use_external_kwargs}") self.logger.debug( f"External kwargs S3 bucket: {self.external_kwargs_s3_bucket}") self.logger.debug( f"External kwargs S3 key: {self.external_kwargs_s3_key}")