本文整理汇总了Python中botocore.exceptions.UnknownServiceError方法的典型用法代码示例。如果您正苦于以下问题:Python exceptions.UnknownServiceError方法的具体用法?Python exceptions.UnknownServiceError怎么用?Python exceptions.UnknownServiceError使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类botocore.exceptions
的用法示例。
在下文中一共展示了exceptions.UnknownServiceError方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _get_polly_client
# 需要导入模块: from botocore import exceptions [as 别名]
# 或者: from botocore.exceptions import UnknownServiceError [as 别名]
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
示例2: get_available_regions
# 需要导入模块: from botocore import exceptions [as 别名]
# 或者: from botocore.exceptions import UnknownServiceError [as 别名]
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
示例3: get_available_regions
# 需要导入模块: from botocore import exceptions [as 别名]
# 或者: from botocore.exceptions import UnknownServiceError [as 别名]
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
示例4: retrieve_sub_resources
# 需要导入模块: from botocore import exceptions [as 别名]
# 或者: from botocore.exceptions import UnknownServiceError [as 别名]
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))
示例5: load_service_model
# 需要导入模块: from botocore import exceptions [as 别名]
# 或者: from botocore.exceptions import UnknownServiceError [as 别名]
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
示例6: connect
# 需要导入模块: from botocore import exceptions [as 别名]
# 或者: from botocore.exceptions import UnknownServiceError [as 别名]
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
示例7: resource
# 需要导入模块: from botocore import exceptions [as 别名]
# 或者: from botocore.exceptions import UnknownServiceError [as 别名]
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)
示例8: get_recommended_server_instance_types
# 需要导入模块: from botocore import exceptions [as 别名]
# 或者: from botocore.exceptions import UnknownServiceError [as 别名]
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