diff --git a/awslogs/core.py b/awslogs/core.py index 8af6a0e..b471679 100644 --- a/awslogs/core.py +++ b/awslogs/core.py @@ -33,6 +33,10 @@ def milis2iso(milis): def boto3_client(aws_profile, aws_access_key_id, aws_secret_access_key, aws_session_token, aws_region): core_session = botocore.session.get_session() + known_regions = core_session.get_available_regions('logs') + if aws_region is not None: + if aws_region not in known_regions: + print("WARNING: your selected region {REGION} is probably not valid".format(REGION=aws_region)) core_session.set_config_variable('profile', aws_profile) credential_provider = core_session.get_component('credential_provider').get_provider('assume-role') @@ -103,9 +107,9 @@ def list_logs(self): streams = list(self._get_streams_from_pattern(self.log_group_name, self.log_stream_name)) if len(streams) > self.FILTER_LOG_EVENTS_STREAMS_LIMIT: raise exceptions.TooManyStreamsFilteredError( - self.log_stream_name, - len(streams), - self.FILTER_LOG_EVENTS_STREAMS_LIMIT + self.log_stream_name, + len(streams), + self.FILTER_LOG_EVENTS_STREAMS_LIMIT ) if len(streams) == 0: raise exceptions.NoStreamsFilteredError(self.log_stream_name) diff --git a/tests/test_it.py b/tests/test_it.py index b54f30d..43fd2e6 100644 --- a/tests/test_it.py +++ b/tests/test_it.py @@ -399,8 +399,8 @@ def test_get_nogroup_nostream_short_forms(self, mock_stdout, botoclient): def test_get_timestamp(self, mock_stdout, botoclient): self.set_ABCDE_logs(botoclient) exit_code = main("awslogs get " - "--timestamp --no-group --no-stream " - "AAA DDD --color=never".split()) + "--timestamp --no-group --no-stream " + "AAA DDD --color=never".split()) self.assertEqual( mock_stdout.getvalue(), @@ -418,8 +418,8 @@ def test_get_timestamp(self, mock_stdout, botoclient): def test_get_ingestion_time(self, mock_stdout, botoclient): self.set_ABCDE_logs(botoclient) exit_code = main("awslogs get " - "--ingestion-time --no-group --no-stream " - "AAA DDD --color=never".split()) + "--ingestion-time --no-group --no-stream " + "AAA DDD --color=never".split()) self.assertEqual( mock_stdout.getvalue(), @@ -437,8 +437,8 @@ def test_get_ingestion_time(self, mock_stdout, botoclient): def test_get_timestamp_and_ingestion_time(self, mock_stdout, botoclient): self.set_ABCDE_logs(botoclient) exit_code = main("awslogs get " - "--timestamp --ingestion-time --no-group --no-stream " - "AAA DDD --color=never".split()) + "--timestamp --ingestion-time --no-group --no-stream " + "AAA DDD --color=never".split()) self.assertEqual( mock_stdout.getvalue(), @@ -630,3 +630,14 @@ def test_boto3_client_creation(self, mock_core_session): awslogs = AWSLogs() self.assertEqual(client, awslogs.client) + + @patch('botocore.session.get_session') + def test_boto3_client_invalid_region(self, mock_core_session): + client = Mock() + boto_session = Mock() + mock_core_session.return_value = boto_session + boto_session.create_client.return_value = client + boto_session.aws_region.return_value = "Frankfurt" + + awslogs = AWSLogs() + self.assertEqual(client, awslogs.client)