Python botocore.exceptions.UnknownServiceError() Examples
The following are 21
code examples of botocore.exceptions.UnknownServiceError().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
botocore.exceptions
, or try the search function
.
Example #1
Source File: session.py From faces with GNU General Public License v2.0 | 5 votes |
def get_available_regions(self, service_name, partition_name='aws', allow_non_regional=False): """Lists the region and endpoint names of a particular partition. :type service_name: string :param service_name: Name of a service to list endpoint for (e.g., s3). This parameter accepts a service name (e.g., "elb") or endpoint prefix (e.g., "elasticloadbalancing"). :type partition_name: string :param partition_name: Name of the partition to limit endpoints to. (e.g., aws for the public AWS endpoints, aws-cn for AWS China endpoints, aws-us-gov for AWS GovCloud (US) Endpoints, etc. :type allow_non_regional: bool :param allow_non_regional: Set to True to include endpoints that are not regional endpoints (e.g., s3-external-1, fips-us-gov-west-1, etc). :return: Returns a list of endpoint names (e.g., ["us-east-1"]). """ resolver = self.get_component('endpoint_resolver') results = [] try: service_data = self.get_service_data(service_name) endpoint_prefix = service_data['metadata'].get( 'endpointPrefix', service_name) results = resolver.get_available_endpoints( endpoint_prefix, partition_name, allow_non_regional) except UnknownServiceError: pass return results
Example #2
Source File: session.py From aws-builders-fair-projects with Apache License 2.0 | 5 votes |
def get_available_regions(self, service_name, partition_name='aws', allow_non_regional=False): """Lists the region and endpoint names of a particular partition. :type service_name: string :param service_name: Name of a service to list endpoint for (e.g., s3). This parameter accepts a service name (e.g., "elb") or endpoint prefix (e.g., "elasticloadbalancing"). :type partition_name: string :param partition_name: Name of the partition to limit endpoints to. (e.g., aws for the public AWS endpoints, aws-cn for AWS China endpoints, aws-us-gov for AWS GovCloud (US) Endpoints, etc. :type allow_non_regional: bool :param allow_non_regional: Set to True to include endpoints that are not regional endpoints (e.g., s3-external-1, fips-us-gov-west-1, etc). :return: Returns a list of endpoint names (e.g., ["us-east-1"]). """ resolver = self._get_internal_component('endpoint_resolver') results = [] try: service_data = self.get_service_data(service_name) endpoint_prefix = service_data['metadata'].get( 'endpointPrefix', service_name) results = resolver.get_available_endpoints( endpoint_prefix, partition_name, allow_non_regional) except UnknownServiceError: pass return results
Example #3
Source File: parsers.py From boto3_type_annotations with MIT License | 5 votes |
def retrieve_sub_resources(session, resource) -> Generator[Boto3ServiceResource, None, None]: loader = session._session.get_component('data_loader') json_resource_model = loader.load_service_model( resource.meta.service_name, 'resources-1' ) service_model = resource.meta.client.meta.service_model try: service_waiter_model = session._session.get_waiter_model(service_model.service_name) except UnknownServiceError: service_waiter_model = None for name in json_resource_model['resources']: resource_model = json_resource_model['resources'][name] cls = session.resource_factory.load_from_definition( resource_name=name, single_resource_json_definition=resource_model, service_context=ServiceContext( service_name=resource.meta.service_name, resource_json_definitions=json_resource_model['resources'], service_model=service_model, service_waiter_model=service_waiter_model ) ) identifiers = cls.meta.resource_model.identifiers args = [] for _ in identifiers: args.append('foo') yield cls(*args, client=boto3.client(resource.meta.service_name))
Example #4
Source File: session.py From aws-extender with MIT License | 5 votes |
def get_available_regions(self, service_name, partition_name='aws', allow_non_regional=False): """Lists the region and endpoint names of a particular partition. :type service_name: string :param service_name: Name of a service to list endpoint for (e.g., s3). This parameter accepts a service name (e.g., "elb") or endpoint prefix (e.g., "elasticloadbalancing"). :type partition_name: string :param partition_name: Name of the partition to limit endpoints to. (e.g., aws for the public AWS endpoints, aws-cn for AWS China endpoints, aws-us-gov for AWS GovCloud (US) Endpoints, etc. :type allow_non_regional: bool :param allow_non_regional: Set to True to include endpoints that are not regional endpoints (e.g., s3-external-1, fips-us-gov-west-1, etc). :return: Returns a list of endpoint names (e.g., ["us-east-1"]). """ resolver = self.get_component('endpoint_resolver') results = [] try: service_data = self.get_service_data(service_name) endpoint_prefix = service_data['metadata'].get( 'endpointPrefix', service_name) results = resolver.get_available_endpoints( endpoint_prefix, partition_name, allow_non_regional) except UnknownServiceError: pass return results
Example #5
Source File: session.py From AWS-Transit-Gateway-Demo-MultiAccount with MIT License | 5 votes |
def get_available_regions(self, service_name, partition_name='aws', allow_non_regional=False): """Lists the region and endpoint names of a particular partition. :type service_name: string :param service_name: Name of a service to list endpoint for (e.g., s3). This parameter accepts a service name (e.g., "elb") or endpoint prefix (e.g., "elasticloadbalancing"). :type partition_name: string :param partition_name: Name of the partition to limit endpoints to. (e.g., aws for the public AWS endpoints, aws-cn for AWS China endpoints, aws-us-gov for AWS GovCloud (US) Endpoints, etc. :type allow_non_regional: bool :param allow_non_regional: Set to True to include endpoints that are not regional endpoints (e.g., s3-external-1, fips-us-gov-west-1, etc). :return: Returns a list of endpoint names (e.g., ["us-east-1"]). """ resolver = self._get_internal_component('endpoint_resolver') results = [] try: service_data = self.get_service_data(service_name) endpoint_prefix = service_data['metadata'].get( 'endpointPrefix', service_name) results = resolver.get_available_endpoints( endpoint_prefix, partition_name, allow_non_regional) except UnknownServiceError: pass return results
Example #6
Source File: session.py From AWS-Transit-Gateway-Demo-MultiAccount with MIT License | 5 votes |
def get_available_regions(self, service_name, partition_name='aws', allow_non_regional=False): """Lists the region and endpoint names of a particular partition. :type service_name: string :param service_name: Name of a service to list endpoint for (e.g., s3). This parameter accepts a service name (e.g., "elb") or endpoint prefix (e.g., "elasticloadbalancing"). :type partition_name: string :param partition_name: Name of the partition to limit endpoints to. (e.g., aws for the public AWS endpoints, aws-cn for AWS China endpoints, aws-us-gov for AWS GovCloud (US) Endpoints, etc. :type allow_non_regional: bool :param allow_non_regional: Set to True to include endpoints that are not regional endpoints (e.g., s3-external-1, fips-us-gov-west-1, etc). :return: Returns a list of endpoint names (e.g., ["us-east-1"]). """ resolver = self._get_internal_component('endpoint_resolver') results = [] try: service_data = self.get_service_data(service_name) endpoint_prefix = service_data['metadata'].get( 'endpointPrefix', service_name) results = resolver.get_available_endpoints( endpoint_prefix, partition_name, allow_non_regional) except UnknownServiceError: pass return results
Example #7
Source File: session.py From bash-lambda-layer with MIT License | 5 votes |
def get_available_regions(self, service_name, partition_name='aws', allow_non_regional=False): """Lists the region and endpoint names of a particular partition. :type service_name: string :param service_name: Name of a service to list endpoint for (e.g., s3). This parameter accepts a service name (e.g., "elb") or endpoint prefix (e.g., "elasticloadbalancing"). :type partition_name: string :param partition_name: Name of the partition to limit endpoints to. (e.g., aws for the public AWS endpoints, aws-cn for AWS China endpoints, aws-us-gov for AWS GovCloud (US) Endpoints, etc. :type allow_non_regional: bool :param allow_non_regional: Set to True to include endpoints that are not regional endpoints (e.g., s3-external-1, fips-us-gov-west-1, etc). :return: Returns a list of endpoint names (e.g., ["us-east-1"]). """ resolver = self._get_internal_component('endpoint_resolver') results = [] try: service_data = self.get_service_data(service_name) endpoint_prefix = service_data['metadata'].get( 'endpointPrefix', service_name) results = resolver.get_available_endpoints( endpoint_prefix, partition_name, allow_non_regional) except UnknownServiceError: pass return results
Example #8
Source File: session.py From deepWordBug with Apache License 2.0 | 5 votes |
def get_available_regions(self, service_name, partition_name='aws', allow_non_regional=False): """Lists the region and endpoint names of a particular partition. :type service_name: string :param service_name: Name of a service to list endpoint for (e.g., s3). This parameter accepts a service name (e.g., "elb") or endpoint prefix (e.g., "elasticloadbalancing"). :type partition_name: string :param partition_name: Name of the partition to limit endpoints to. (e.g., aws for the public AWS endpoints, aws-cn for AWS China endpoints, aws-us-gov for AWS GovCloud (US) Endpoints, etc. :type allow_non_regional: bool :param allow_non_regional: Set to True to include endpoints that are not regional endpoints (e.g., s3-external-1, fips-us-gov-west-1, etc). :return: Returns a list of endpoint names (e.g., ["us-east-1"]). """ resolver = self._get_internal_component('endpoint_resolver') results = [] try: service_data = self.get_service_data(service_name) endpoint_prefix = service_data['metadata'].get( 'endpointPrefix', service_name) results = resolver.get_available_endpoints( endpoint_prefix, partition_name, allow_non_regional) except UnknownServiceError: pass return results
Example #9
Source File: session.py From faces with GNU General Public License v2.0 | 5 votes |
def get_available_regions(self, service_name, partition_name='aws', allow_non_regional=False): """Lists the region and endpoint names of a particular partition. :type service_name: string :param service_name: Name of a service to list endpoint for (e.g., s3). This parameter accepts a service name (e.g., "elb") or endpoint prefix (e.g., "elasticloadbalancing"). :type partition_name: string :param partition_name: Name of the partition to limit endpoints to. (e.g., aws for the public AWS endpoints, aws-cn for AWS China endpoints, aws-us-gov for AWS GovCloud (US) Endpoints, etc. :type allow_non_regional: bool :param allow_non_regional: Set to True to include endpoints that are not regional endpoints (e.g., s3-external-1, fips-us-gov-west-1, etc). :return: Returns a list of endpoint names (e.g., ["us-east-1"]). """ resolver = self.get_component('endpoint_resolver') results = [] try: service_data = self.get_service_data(service_name) endpoint_prefix = service_data['metadata'].get( 'endpointPrefix', service_name) results = resolver.get_available_endpoints( endpoint_prefix, partition_name, allow_non_regional) except UnknownServiceError: pass return results
Example #10
Source File: amazonpolly.py From tts-ros1 with Apache License 2.0 | 5 votes |
def _get_polly_client(self, aws_access_key_id=None, aws_secret_access_key=None, aws_session_token=None, region_name=None, with_service_model_patch=False): """Note we get a new botocore session each time this function is called. This is to avoid potential problems caused by inner state of the session. """ botocore_session = get_session() if with_service_model_patch: # Older versions of botocore don't have polly. We can possibly fix it by appending # extra path with polly service model files to the search path. current_dir = os.path.dirname(os.path.abspath(__file__)) service_model_path = os.path.join(current_dir, 'data', 'models') botocore_session.set_config_variable('data_path', service_model_path) rospy.loginfo('patching service model data path: {}'.format(service_model_path)) botocore_session.get_component('credential_provider').insert_after('boto-config', AwsIotCredentialProvider()) botocore_session.user_agent_extra = self._generate_user_agent_suffix() session = Session(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, botocore_session=botocore_session) try: return session.client("polly") except UnknownServiceError: # the first time we reach here, we try to fix the problem if not with_service_model_patch: return self._get_polly_client(aws_access_key_id, aws_secret_access_key, aws_session_token, region_name, with_service_model_patch=True) else: # we have tried our best, time to panic rospy.logerr('Amazon Polly is not available. Please install the latest boto3.') raise
Example #11
Source File: loaders.py From deepWordBug with Apache License 2.0 | 4 votes |
def load_service_model(self, service_name, type_name, api_version=None): """Load a botocore service model This is the main method for loading botocore models (e.g. a service model, pagination configs, waiter configs, etc.). :type service_name: str :param service_name: The name of the service (e.g ``ec2``, ``s3``). :type type_name: str :param type_name: The model type. Valid types include, but are not limited to: ``service-2``, ``paginators-1``, ``waiters-2``. :type api_version: str :param api_version: The API version to load. If this is not provided, then the latest API version will be used. :type load_extras: bool :param load_extras: Whether or not to load the tool extras which contain additional data to be added to the model. :raises: UnknownServiceError if there is no known service with the provided service_name. :raises: DataNotFoundError if no data could be found for the service_name/type_name/api_version. :return: The loaded data, as a python type (e.g. dict, list, etc). """ # Wrapper around the load_data. This will calculate the path # to call load_data with. known_services = self.list_available_services(type_name) if service_name not in known_services: raise UnknownServiceError( service_name=service_name, known_service_names=', '.join(sorted(known_services))) if api_version is None: api_version = self.determine_latest_version( service_name, type_name) full_path = os.path.join(service_name, api_version, type_name) model = self.load_data(full_path) # Load in all the extras extras_data = self._find_extras(service_name, type_name, api_version) self._extras_processor.process(model, extras_data) return model
Example #12
Source File: loaders.py From bash-lambda-layer with MIT License | 4 votes |
def load_service_model(self, service_name, type_name, api_version=None): """Load a botocore service model This is the main method for loading botocore models (e.g. a service model, pagination configs, waiter configs, etc.). :type service_name: str :param service_name: The name of the service (e.g ``ec2``, ``s3``). :type type_name: str :param type_name: The model type. Valid types include, but are not limited to: ``service-2``, ``paginators-1``, ``waiters-2``. :type api_version: str :param api_version: The API version to load. If this is not provided, then the latest API version will be used. :type load_extras: bool :param load_extras: Whether or not to load the tool extras which contain additional data to be added to the model. :raises: UnknownServiceError if there is no known service with the provided service_name. :raises: DataNotFoundError if no data could be found for the service_name/type_name/api_version. :return: The loaded data, as a python type (e.g. dict, list, etc). """ # Wrapper around the load_data. This will calculate the path # to call load_data with. known_services = self.list_available_services(type_name) if service_name not in known_services: raise UnknownServiceError( service_name=service_name, known_service_names=', '.join(sorted(known_services))) if api_version is None: api_version = self.determine_latest_version( service_name, type_name) full_path = os.path.join(service_name, api_version, type_name) model = self.load_data(full_path) # Load in all the extras extras_data = self._find_extras(service_name, type_name, api_version) self._extras_processor.process(model, extras_data) return model
Example #13
Source File: __init__.py From flask-boto3 with MIT License | 4 votes |
def connect(self): """Iterate through the application configuration and instantiate the services. """ requested_services = set( svc.lower() for svc in current_app.config.get('BOTO3_SERVICES', []) ) region = current_app.config.get('BOTO3_REGION') sess_params = { 'aws_access_key_id': current_app.config.get('BOTO3_ACCESS_KEY'), 'aws_secret_access_key': current_app.config.get('BOTO3_SECRET_KEY'), 'profile_name': current_app.config.get('BOTO3_PROFILE'), 'region_name': region } sess = boto3.session.Session(**sess_params) try: cns = {} for svc in requested_services: # Check for optional parameters params = current_app.config.get( 'BOTO3_OPTIONAL_PARAMS', {} ).get(svc, {}) # Get session params and override them with kwargs # `profile_name` cannot be passed to clients and resources kwargs = sess_params.copy() kwargs.update(params.get('kwargs', {})) del kwargs['profile_name'] # Override the region if one is defined as an argument args = params.get('args', []) if len(args) >= 1: del kwargs['region_name'] if not(isinstance(args, list) or isinstance(args, tuple)): args = [args] # Create resource or client if svc in sess.get_available_resources(): cns.update({svc: sess.resource(svc, *args, **kwargs)}) else: cns.update({svc: sess.client(svc, *args, **kwargs)}) except UnknownServiceError: raise return cns
Example #14
Source File: loaders.py From AWS-Transit-Gateway-Demo-MultiAccount with MIT License | 4 votes |
def load_service_model(self, service_name, type_name, api_version=None): """Load a botocore service model This is the main method for loading botocore models (e.g. a service model, pagination configs, waiter configs, etc.). :type service_name: str :param service_name: The name of the service (e.g ``ec2``, ``s3``). :type type_name: str :param type_name: The model type. Valid types include, but are not limited to: ``service-2``, ``paginators-1``, ``waiters-2``. :type api_version: str :param api_version: The API version to load. If this is not provided, then the latest API version will be used. :type load_extras: bool :param load_extras: Whether or not to load the tool extras which contain additional data to be added to the model. :raises: UnknownServiceError if there is no known service with the provided service_name. :raises: DataNotFoundError if no data could be found for the service_name/type_name/api_version. :return: The loaded data, as a python type (e.g. dict, list, etc). """ # Wrapper around the load_data. This will calculate the path # to call load_data with. known_services = self.list_available_services(type_name) if service_name not in known_services: raise UnknownServiceError( service_name=service_name, known_service_names=', '.join(sorted(known_services))) if api_version is None: api_version = self.determine_latest_version( service_name, type_name) full_path = os.path.join(service_name, api_version, type_name) model = self.load_data(full_path) # Load in all the extras extras_data = self._find_extras(service_name, type_name, api_version) self._extras_processor.process(model, extras_data) return model
Example #15
Source File: loaders.py From faces with GNU General Public License v2.0 | 4 votes |
def load_service_model(self, service_name, type_name, api_version=None): """Load a botocore service model This is the main method for loading botocore models (e.g. a service model, pagination configs, waiter configs, etc.). :type service_name: str :param service_name: The name of the service (e.g ``ec2``, ``s3``). :type type_name: str :param type_name: The model type. Valid types include, but are not limited to: ``service-2``, ``paginators-1``, ``waiters-2``. :type api_version: str :param api_version: The API version to load. If this is not provided, then the latest API version will be used. :type load_extras: bool :param load_extras: Whether or not to load the tool extras which contain additional data to be added to the model. :raises: UnknownServiceError if there is no known service with the provided service_name. :raises: DataNotFoundError if no data could be found for the service_name/type_name/api_version. :return: The loaded data, as a python type (e.g. dict, list, etc). """ # Wrapper around the load_data. This will calculate the path # to call load_data with. known_services = self.list_available_services(type_name) if service_name not in known_services: raise UnknownServiceError( service_name=service_name, known_service_names=', '.join(sorted(known_services))) if api_version is None: api_version = self.determine_latest_version( service_name, type_name) full_path = os.path.join(service_name, api_version, type_name) model = self.load_data(full_path) # Load in all the extras extras_data = self._find_extras(service_name, type_name, api_version) self._extras_processor.process(model, extras_data) return model
Example #16
Source File: loaders.py From AWS-Transit-Gateway-Demo-MultiAccount with MIT License | 4 votes |
def load_service_model(self, service_name, type_name, api_version=None): """Load a botocore service model This is the main method for loading botocore models (e.g. a service model, pagination configs, waiter configs, etc.). :type service_name: str :param service_name: The name of the service (e.g ``ec2``, ``s3``). :type type_name: str :param type_name: The model type. Valid types include, but are not limited to: ``service-2``, ``paginators-1``, ``waiters-2``. :type api_version: str :param api_version: The API version to load. If this is not provided, then the latest API version will be used. :type load_extras: bool :param load_extras: Whether or not to load the tool extras which contain additional data to be added to the model. :raises: UnknownServiceError if there is no known service with the provided service_name. :raises: DataNotFoundError if no data could be found for the service_name/type_name/api_version. :return: The loaded data, as a python type (e.g. dict, list, etc). """ # Wrapper around the load_data. This will calculate the path # to call load_data with. known_services = self.list_available_services(type_name) if service_name not in known_services: raise UnknownServiceError( service_name=service_name, known_service_names=', '.join(sorted(known_services))) if api_version is None: api_version = self.determine_latest_version( service_name, type_name) full_path = os.path.join(service_name, api_version, type_name) model = self.load_data(full_path) # Load in all the extras extras_data = self._find_extras(service_name, type_name, api_version) self._extras_processor.process(model, extras_data) return model
Example #17
Source File: loaders.py From aws-extender with MIT License | 4 votes |
def load_service_model(self, service_name, type_name, api_version=None): """Load a botocore service model This is the main method for loading botocore models (e.g. a service model, pagination configs, waiter configs, etc.). :type service_name: str :param service_name: The name of the service (e.g ``ec2``, ``s3``). :type type_name: str :param type_name: The model type. Valid types include, but are not limited to: ``service-2``, ``paginators-1``, ``waiters-2``. :type api_version: str :param api_version: The API version to load. If this is not provided, then the latest API version will be used. :type load_extras: bool :param load_extras: Whether or not to load the tool extras which contain additional data to be added to the model. :raises: UnknownServiceError if there is no known service with the provided service_name. :raises: DataNotFoundError if no data could be found for the service_name/type_name/api_version. :return: The loaded data, as a python type (e.g. dict, list, etc). """ # Wrapper around the load_data. This will calculate the path # to call load_data with. known_services = self.list_available_services(type_name) if service_name not in known_services: raise UnknownServiceError( service_name=service_name, known_service_names=', '.join(sorted(known_services))) if api_version is None: api_version = self.determine_latest_version( service_name, type_name) full_path = os.path.join(service_name, api_version, type_name) model = self.load_data(full_path) # Load in all the extras extras_data = self._find_extras(service_name, type_name, api_version) self._extras_processor.process(model, extras_data) return model
Example #18
Source File: loaders.py From faces with GNU General Public License v2.0 | 4 votes |
def load_service_model(self, service_name, type_name, api_version=None): """Load a botocore service model This is the main method for loading botocore models (e.g. a service model, pagination configs, waiter configs, etc.). :type service_name: str :param service_name: The name of the service (e.g ``ec2``, ``s3``). :type type_name: str :param type_name: The model type. Valid types include, but are not limited to: ``service-2``, ``paginators-1``, ``waiters-2``. :type api_version: str :param api_version: The API version to load. If this is not provided, then the latest API version will be used. :type load_extras: bool :param load_extras: Whether or not to load the tool extras which contain additional data to be added to the model. :raises: UnknownServiceError if there is no known service with the provided service_name. :raises: DataNotFoundError if no data could be found for the service_name/type_name/api_version. :return: The loaded data, as a python type (e.g. dict, list, etc). """ # Wrapper around the load_data. This will calculate the path # to call load_data with. known_services = self.list_available_services(type_name) if service_name not in known_services: raise UnknownServiceError( service_name=service_name, known_service_names=', '.join(sorted(known_services))) if api_version is None: api_version = self.determine_latest_version( service_name, type_name) full_path = os.path.join(service_name, api_version, type_name) model = self.load_data(full_path) # Load in all the extras extras_data = self._find_extras(service_name, type_name, api_version) self._extras_processor.process(model, extras_data) return model
Example #19
Source File: session.py From aioboto3 with Apache License 2.0 | 4 votes |
def resource(self, service_name, region_name=None, api_version=None, use_ssl=True, verify=None, endpoint_url=None, aws_access_key_id=None, aws_secret_access_key=None, aws_session_token=None, config=None): try: resource_model = self._loader.load_service_model( service_name, 'resources-1', api_version) except UnknownServiceError: available = self.get_available_resources() has_low_level_client = ( service_name in self.get_available_services()) raise ResourceNotExistsError(service_name, available, has_low_level_client) except DataNotFoundError: # This is because we've provided an invalid API version. available_api_versions = self._loader.list_api_versions( service_name, 'resources-1') raise UnknownAPIVersionError( service_name, api_version, ', '.join(available_api_versions)) if api_version is None: # Even though botocore's load_service_model() can handle # using the latest api_version if not provided, we need # to track this api_version in boto3 in order to ensure # we're pairing a resource model with a client model # of the same API version. It's possible for the latest # API version of a resource model in boto3 to not be # the same API version as a service model in botocore. # So we need to look up the api_version if one is not # provided to ensure we load the same API version of the # client. # # Note: This is relying on the fact that # loader.load_service_model(..., api_version=None) # and loader.determine_latest_version(..., 'resources-1') # both load the same api version of the file. api_version = self._loader.determine_latest_version( service_name, 'resources-1') # Creating a new resource instance requires the low-level client # and service model, the resource version and resource JSON data. # We pass these to the factory and get back a class, which is # instantiated on top of the low-level client. if config is not None: if config.user_agent_extra is None: config = copy.deepcopy(config) config.user_agent_extra = 'Resource' else: config = AioConfig(user_agent_extra='Resource') # client = blah part has been moved into a dodgy context class return ResourceCreaterContext(self, service_name, region_name, api_version, use_ssl, verify, endpoint_url, aws_access_key_id, aws_secret_access_key, aws_session_token, config, resource_model)
Example #20
Source File: loaders.py From aws-builders-fair-projects with Apache License 2.0 | 4 votes |
def load_service_model(self, service_name, type_name, api_version=None): """Load a botocore service model This is the main method for loading botocore models (e.g. a service model, pagination configs, waiter configs, etc.). :type service_name: str :param service_name: The name of the service (e.g ``ec2``, ``s3``). :type type_name: str :param type_name: The model type. Valid types include, but are not limited to: ``service-2``, ``paginators-1``, ``waiters-2``. :type api_version: str :param api_version: The API version to load. If this is not provided, then the latest API version will be used. :type load_extras: bool :param load_extras: Whether or not to load the tool extras which contain additional data to be added to the model. :raises: UnknownServiceError if there is no known service with the provided service_name. :raises: DataNotFoundError if no data could be found for the service_name/type_name/api_version. :return: The loaded data, as a python type (e.g. dict, list, etc). """ # Wrapper around the load_data. This will calculate the path # to call load_data with. known_services = self.list_available_services(type_name) if service_name not in known_services: raise UnknownServiceError( service_name=service_name, known_service_names=', '.join(sorted(known_services))) if api_version is None: api_version = self.determine_latest_version( service_name, type_name) full_path = os.path.join(service_name, api_version, type_name) model = self.load_data(full_path) # Load in all the extras extras_data = self._find_extras(service_name, type_name, api_version) self._extras_processor.process(model, extras_data) return model
Example #21
Source File: views.py From cloudbolt-forge with Apache License 2.0 | 4 votes |
def get_recommended_server_instance_types(handler: AWSHandler): """ Connect to the boto3 CostExplorer client and get recommended instance sizes for all ec2 instances on this account with info about potential cost savings. """ wrapper = handler.get_api_wrapper() recommendations_by_instance = dict() total_savings = 0 client = wrapper.get_boto3_client( 'ce', handler.serviceaccount, handler.servicepasswd, 'us-east-1' # Connecting to any region should return recommendations for all regions. ) try: response = client.get_rightsizing_recommendation(Service='AmazonEC2') except (AttributeError, UnknownServiceError): # This will happen if the version of boto3 pre-dates the existence # of either this CostExplorer method that is being called, or the CostExplorer # Service all together. If this happens, then let the # user know what version of CloudBolt they need to be on for this to work. raise CloudBoltException( 'This version of CloudBolt does not support ' 'this UI-extension. Please upgrade to version 9.0.1 or ' 'greater to get recommendations. ' ) summary_data = response.get('Summary') total_recommendations = int(summary_data.get('TotalRecommendationCount')) if total_recommendations > 0: recommendations_list = response.get('RightsizingRecommendations') # Save all the recommendations for this region. for raw_dict in recommendations_list: recommendation_dict = get_recommendation_dict(raw_dict) instance_id = recommendation_dict.get('current_instance').get('id') recommendations_by_instance[instance_id] = recommendation_dict total_savings += float(recommendation_dict.get('recommendations').get('savings')) currency = summary_data.get('SavingsCurrencyCode') summary = dict( total_recommendations=total_recommendations, total_savings=total_savings, currency=currency ) return recommendations_by_instance, summary