Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/boto/__init__.py @ 0:26e78fe6e8c4 draft
"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author | shellac |
---|---|
date | Sat, 02 May 2020 07:14:21 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:26e78fe6e8c4 |
---|---|
1 # Copyright (c) 2006-2012 Mitch Garnaat http://garnaat.org/ | |
2 # Copyright (c) 2010-2011, Eucalyptus Systems, Inc. | |
3 # Copyright (c) 2011, Nexenta Systems Inc. | |
4 # Copyright (c) 2012 Amazon.com, Inc. or its affiliates. | |
5 # Copyright (c) 2010, Google, Inc. | |
6 # All rights reserved. | |
7 # | |
8 # Permission is hereby granted, free of charge, to any person obtaining a | |
9 # copy of this software and associated documentation files (the | |
10 # "Software"), to deal in the Software without restriction, including | |
11 # without limitation the rights to use, copy, modify, merge, publish, dis- | |
12 # tribute, sublicense, and/or sell copies of the Software, and to permit | |
13 # persons to whom the Software is furnished to do so, subject to the fol- | |
14 # lowing conditions: | |
15 # | |
16 # The above copyright notice and this permission notice shall be included | |
17 # in all copies or substantial portions of the Software. | |
18 # | |
19 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
20 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- | |
21 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT | |
22 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |
23 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
24 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | |
25 # IN THE SOFTWARE. | |
26 # | |
27 from boto.pyami.config import Config, BotoConfigLocations | |
28 from boto.storage_uri import BucketStorageUri, FileStorageUri | |
29 import boto.plugin | |
30 import datetime | |
31 import os | |
32 import platform | |
33 import re | |
34 import sys | |
35 import logging | |
36 import logging.config | |
37 | |
38 from boto.compat import urlparse | |
39 from boto.exception import InvalidUriError | |
40 | |
41 __version__ = '2.49.0' | |
42 Version = __version__ # for backware compatibility | |
43 | |
44 # http://bugs.python.org/issue7980 | |
45 datetime.datetime.strptime('', '') | |
46 | |
47 UserAgent = 'Boto/%s Python/%s %s/%s' % ( | |
48 __version__, | |
49 platform.python_version(), | |
50 platform.system(), | |
51 platform.release() | |
52 ) | |
53 config = Config() | |
54 | |
55 # Regex to disallow buckets violating charset or not [3..255] chars total. | |
56 BUCKET_NAME_RE = re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9\._-]{1,253}[a-zA-Z0-9]$') | |
57 # Regex to disallow buckets with individual DNS labels longer than 63. | |
58 TOO_LONG_DNS_NAME_COMP = re.compile(r'[-_a-z0-9]{64}') | |
59 GENERATION_RE = re.compile(r'(?P<versionless_uri_str>.+)' | |
60 r'#(?P<generation>[0-9]+)$') | |
61 VERSION_RE = re.compile('(?P<versionless_uri_str>.+)#(?P<version_id>.+)$') | |
62 ENDPOINTS_PATH = os.path.join(os.path.dirname(__file__), 'endpoints.json') | |
63 | |
64 | |
65 def init_logging(): | |
66 for file in BotoConfigLocations: | |
67 try: | |
68 logging.config.fileConfig(os.path.expanduser(file)) | |
69 except: | |
70 pass | |
71 | |
72 | |
73 class NullHandler(logging.Handler): | |
74 def emit(self, record): | |
75 pass | |
76 | |
77 log = logging.getLogger('boto') | |
78 perflog = logging.getLogger('boto.perf') | |
79 log.addHandler(NullHandler()) | |
80 perflog.addHandler(NullHandler()) | |
81 init_logging() | |
82 | |
83 # convenience function to set logging to a particular file | |
84 | |
85 | |
86 def set_file_logger(name, filepath, level=logging.INFO, format_string=None): | |
87 global log | |
88 if not format_string: | |
89 format_string = "%(asctime)s %(name)s [%(levelname)s]:%(message)s" | |
90 logger = logging.getLogger(name) | |
91 logger.setLevel(level) | |
92 fh = logging.FileHandler(filepath) | |
93 fh.setLevel(level) | |
94 formatter = logging.Formatter(format_string) | |
95 fh.setFormatter(formatter) | |
96 logger.addHandler(fh) | |
97 log = logger | |
98 | |
99 | |
100 def set_stream_logger(name, level=logging.DEBUG, format_string=None): | |
101 global log | |
102 if not format_string: | |
103 format_string = "%(asctime)s %(name)s [%(levelname)s]:%(message)s" | |
104 logger = logging.getLogger(name) | |
105 logger.setLevel(level) | |
106 fh = logging.StreamHandler() | |
107 fh.setLevel(level) | |
108 formatter = logging.Formatter(format_string) | |
109 fh.setFormatter(formatter) | |
110 logger.addHandler(fh) | |
111 log = logger | |
112 | |
113 | |
114 def connect_sqs(aws_access_key_id=None, aws_secret_access_key=None, **kwargs): | |
115 """ | |
116 :type aws_access_key_id: string | |
117 :param aws_access_key_id: Your AWS Access Key ID | |
118 | |
119 :type aws_secret_access_key: string | |
120 :param aws_secret_access_key: Your AWS Secret Access Key | |
121 | |
122 :rtype: :class:`boto.sqs.connection.SQSConnection` | |
123 :return: A connection to Amazon's SQS | |
124 """ | |
125 from boto.sqs.connection import SQSConnection | |
126 return SQSConnection(aws_access_key_id, aws_secret_access_key, **kwargs) | |
127 | |
128 | |
129 def connect_s3(aws_access_key_id=None, aws_secret_access_key=None, **kwargs): | |
130 """ | |
131 :type aws_access_key_id: string | |
132 :param aws_access_key_id: Your AWS Access Key ID | |
133 | |
134 :type aws_secret_access_key: string | |
135 :param aws_secret_access_key: Your AWS Secret Access Key | |
136 | |
137 :rtype: :class:`boto.s3.connection.S3Connection` | |
138 :return: A connection to Amazon's S3 | |
139 """ | |
140 from boto.s3.connection import S3Connection | |
141 return S3Connection(aws_access_key_id, aws_secret_access_key, **kwargs) | |
142 | |
143 | |
144 def connect_gs(gs_access_key_id=None, gs_secret_access_key=None, **kwargs): | |
145 """ | |
146 @type gs_access_key_id: string | |
147 @param gs_access_key_id: Your Google Cloud Storage Access Key ID | |
148 | |
149 @type gs_secret_access_key: string | |
150 @param gs_secret_access_key: Your Google Cloud Storage Secret Access Key | |
151 | |
152 @rtype: L{GSConnection<boto.gs.connection.GSConnection>} | |
153 @return: A connection to Google's Storage service | |
154 """ | |
155 from boto.gs.connection import GSConnection | |
156 return GSConnection(gs_access_key_id, gs_secret_access_key, **kwargs) | |
157 | |
158 | |
159 def connect_ec2(aws_access_key_id=None, aws_secret_access_key=None, **kwargs): | |
160 """ | |
161 :type aws_access_key_id: string | |
162 :param aws_access_key_id: Your AWS Access Key ID | |
163 | |
164 :type aws_secret_access_key: string | |
165 :param aws_secret_access_key: Your AWS Secret Access Key | |
166 | |
167 :rtype: :class:`boto.ec2.connection.EC2Connection` | |
168 :return: A connection to Amazon's EC2 | |
169 """ | |
170 from boto.ec2.connection import EC2Connection | |
171 return EC2Connection(aws_access_key_id, aws_secret_access_key, **kwargs) | |
172 | |
173 | |
174 def connect_elb(aws_access_key_id=None, aws_secret_access_key=None, **kwargs): | |
175 """ | |
176 :type aws_access_key_id: string | |
177 :param aws_access_key_id: Your AWS Access Key ID | |
178 | |
179 :type aws_secret_access_key: string | |
180 :param aws_secret_access_key: Your AWS Secret Access Key | |
181 | |
182 :rtype: :class:`boto.ec2.elb.ELBConnection` | |
183 :return: A connection to Amazon's Load Balancing Service | |
184 """ | |
185 from boto.ec2.elb import ELBConnection | |
186 return ELBConnection(aws_access_key_id, aws_secret_access_key, **kwargs) | |
187 | |
188 | |
189 def connect_autoscale(aws_access_key_id=None, aws_secret_access_key=None, | |
190 **kwargs): | |
191 """ | |
192 :type aws_access_key_id: string | |
193 :param aws_access_key_id: Your AWS Access Key ID | |
194 | |
195 :type aws_secret_access_key: string | |
196 :param aws_secret_access_key: Your AWS Secret Access Key | |
197 | |
198 :rtype: :class:`boto.ec2.autoscale.AutoScaleConnection` | |
199 :return: A connection to Amazon's Auto Scaling Service | |
200 | |
201 :type use_block_device_types bool | |
202 :param use_block_device_types: Specifies whether to return described Launch Configs with block device mappings containing | |
203 block device types, or a list of old style block device mappings (deprecated). This defaults to false for compatability | |
204 with the old incorrect style. | |
205 """ | |
206 from boto.ec2.autoscale import AutoScaleConnection | |
207 return AutoScaleConnection(aws_access_key_id, aws_secret_access_key, | |
208 **kwargs) | |
209 | |
210 | |
211 def connect_cloudwatch(aws_access_key_id=None, aws_secret_access_key=None, | |
212 **kwargs): | |
213 """ | |
214 :type aws_access_key_id: string | |
215 :param aws_access_key_id: Your AWS Access Key ID | |
216 | |
217 :type aws_secret_access_key: string | |
218 :param aws_secret_access_key: Your AWS Secret Access Key | |
219 | |
220 :rtype: :class:`boto.ec2.cloudwatch.CloudWatchConnection` | |
221 :return: A connection to Amazon's EC2 Monitoring service | |
222 """ | |
223 from boto.ec2.cloudwatch import CloudWatchConnection | |
224 return CloudWatchConnection(aws_access_key_id, aws_secret_access_key, | |
225 **kwargs) | |
226 | |
227 | |
228 def connect_sdb(aws_access_key_id=None, aws_secret_access_key=None, **kwargs): | |
229 """ | |
230 :type aws_access_key_id: string | |
231 :param aws_access_key_id: Your AWS Access Key ID | |
232 | |
233 :type aws_secret_access_key: string | |
234 :param aws_secret_access_key: Your AWS Secret Access Key | |
235 | |
236 :rtype: :class:`boto.sdb.connection.SDBConnection` | |
237 :return: A connection to Amazon's SDB | |
238 """ | |
239 from boto.sdb.connection import SDBConnection | |
240 return SDBConnection(aws_access_key_id, aws_secret_access_key, **kwargs) | |
241 | |
242 | |
243 def connect_fps(aws_access_key_id=None, aws_secret_access_key=None, **kwargs): | |
244 """ | |
245 :type aws_access_key_id: string | |
246 :param aws_access_key_id: Your AWS Access Key ID | |
247 | |
248 :type aws_secret_access_key: string | |
249 :param aws_secret_access_key: Your AWS Secret Access Key | |
250 | |
251 :rtype: :class:`boto.fps.connection.FPSConnection` | |
252 :return: A connection to FPS | |
253 """ | |
254 from boto.fps.connection import FPSConnection | |
255 return FPSConnection(aws_access_key_id, aws_secret_access_key, **kwargs) | |
256 | |
257 | |
258 def connect_mturk(aws_access_key_id=None, aws_secret_access_key=None, | |
259 **kwargs): | |
260 """ | |
261 :type aws_access_key_id: string | |
262 :param aws_access_key_id: Your AWS Access Key ID | |
263 | |
264 :type aws_secret_access_key: string | |
265 :param aws_secret_access_key: Your AWS Secret Access Key | |
266 | |
267 :rtype: :class:`boto.mturk.connection.MTurkConnection` | |
268 :return: A connection to MTurk | |
269 """ | |
270 from boto.mturk.connection import MTurkConnection | |
271 return MTurkConnection(aws_access_key_id, aws_secret_access_key, **kwargs) | |
272 | |
273 | |
274 def connect_cloudfront(aws_access_key_id=None, aws_secret_access_key=None, | |
275 **kwargs): | |
276 """ | |
277 :type aws_access_key_id: string | |
278 :param aws_access_key_id: Your AWS Access Key ID | |
279 | |
280 :type aws_secret_access_key: string | |
281 :param aws_secret_access_key: Your AWS Secret Access Key | |
282 | |
283 :rtype: :class:`boto.fps.connection.FPSConnection` | |
284 :return: A connection to FPS | |
285 """ | |
286 from boto.cloudfront import CloudFrontConnection | |
287 return CloudFrontConnection(aws_access_key_id, aws_secret_access_key, | |
288 **kwargs) | |
289 | |
290 | |
291 def connect_vpc(aws_access_key_id=None, aws_secret_access_key=None, **kwargs): | |
292 """ | |
293 :type aws_access_key_id: string | |
294 :param aws_access_key_id: Your AWS Access Key ID | |
295 | |
296 :type aws_secret_access_key: string | |
297 :param aws_secret_access_key: Your AWS Secret Access Key | |
298 | |
299 :rtype: :class:`boto.vpc.VPCConnection` | |
300 :return: A connection to VPC | |
301 """ | |
302 from boto.vpc import VPCConnection | |
303 return VPCConnection(aws_access_key_id, aws_secret_access_key, **kwargs) | |
304 | |
305 | |
306 def connect_rds(aws_access_key_id=None, aws_secret_access_key=None, **kwargs): | |
307 """ | |
308 :type aws_access_key_id: string | |
309 :param aws_access_key_id: Your AWS Access Key ID | |
310 | |
311 :type aws_secret_access_key: string | |
312 :param aws_secret_access_key: Your AWS Secret Access Key | |
313 | |
314 :rtype: :class:`boto.rds.RDSConnection` | |
315 :return: A connection to RDS | |
316 """ | |
317 from boto.rds import RDSConnection | |
318 return RDSConnection(aws_access_key_id, aws_secret_access_key, **kwargs) | |
319 | |
320 | |
321 def connect_rds2(aws_access_key_id=None, aws_secret_access_key=None, **kwargs): | |
322 """ | |
323 :type aws_access_key_id: string | |
324 :param aws_access_key_id: Your AWS Access Key ID | |
325 | |
326 :type aws_secret_access_key: string | |
327 :param aws_secret_access_key: Your AWS Secret Access Key | |
328 | |
329 :rtype: :class:`boto.rds2.layer1.RDSConnection` | |
330 :return: A connection to RDS | |
331 """ | |
332 from boto.rds2.layer1 import RDSConnection | |
333 return RDSConnection( | |
334 aws_access_key_id=aws_access_key_id, | |
335 aws_secret_access_key=aws_secret_access_key, | |
336 **kwargs | |
337 ) | |
338 | |
339 | |
340 def connect_emr(aws_access_key_id=None, aws_secret_access_key=None, **kwargs): | |
341 """ | |
342 :type aws_access_key_id: string | |
343 :param aws_access_key_id: Your AWS Access Key ID | |
344 | |
345 :type aws_secret_access_key: string | |
346 :param aws_secret_access_key: Your AWS Secret Access Key | |
347 | |
348 :rtype: :class:`boto.emr.EmrConnection` | |
349 :return: A connection to Elastic mapreduce | |
350 """ | |
351 from boto.emr import EmrConnection | |
352 return EmrConnection(aws_access_key_id, aws_secret_access_key, **kwargs) | |
353 | |
354 | |
355 def connect_sns(aws_access_key_id=None, aws_secret_access_key=None, **kwargs): | |
356 """ | |
357 :type aws_access_key_id: string | |
358 :param aws_access_key_id: Your AWS Access Key ID | |
359 | |
360 :type aws_secret_access_key: string | |
361 :param aws_secret_access_key: Your AWS Secret Access Key | |
362 | |
363 :rtype: :class:`boto.sns.SNSConnection` | |
364 :return: A connection to Amazon's SNS | |
365 """ | |
366 from boto.sns import SNSConnection | |
367 return SNSConnection(aws_access_key_id, aws_secret_access_key, **kwargs) | |
368 | |
369 | |
370 def connect_iam(aws_access_key_id=None, aws_secret_access_key=None, **kwargs): | |
371 """ | |
372 :type aws_access_key_id: string | |
373 :param aws_access_key_id: Your AWS Access Key ID | |
374 | |
375 :type aws_secret_access_key: string | |
376 :param aws_secret_access_key: Your AWS Secret Access Key | |
377 | |
378 :rtype: :class:`boto.iam.IAMConnection` | |
379 :return: A connection to Amazon's IAM | |
380 """ | |
381 from boto.iam import IAMConnection | |
382 return IAMConnection(aws_access_key_id, aws_secret_access_key, **kwargs) | |
383 | |
384 | |
385 def connect_route53(aws_access_key_id=None, aws_secret_access_key=None, | |
386 **kwargs): | |
387 """ | |
388 :type aws_access_key_id: string | |
389 :param aws_access_key_id: Your AWS Access Key ID | |
390 | |
391 :type aws_secret_access_key: string | |
392 :param aws_secret_access_key: Your AWS Secret Access Key | |
393 | |
394 :rtype: :class:`boto.dns.Route53Connection` | |
395 :return: A connection to Amazon's Route53 DNS Service | |
396 """ | |
397 from boto.route53 import Route53Connection | |
398 return Route53Connection(aws_access_key_id, aws_secret_access_key, | |
399 **kwargs) | |
400 | |
401 | |
402 def connect_cloudformation(aws_access_key_id=None, aws_secret_access_key=None, | |
403 **kwargs): | |
404 """ | |
405 :type aws_access_key_id: string | |
406 :param aws_access_key_id: Your AWS Access Key ID | |
407 | |
408 :type aws_secret_access_key: string | |
409 :param aws_secret_access_key: Your AWS Secret Access Key | |
410 | |
411 :rtype: :class:`boto.cloudformation.CloudFormationConnection` | |
412 :return: A connection to Amazon's CloudFormation Service | |
413 """ | |
414 from boto.cloudformation import CloudFormationConnection | |
415 return CloudFormationConnection(aws_access_key_id, aws_secret_access_key, | |
416 **kwargs) | |
417 | |
418 | |
419 def connect_euca(host=None, aws_access_key_id=None, aws_secret_access_key=None, | |
420 port=8773, path='/services/Eucalyptus', is_secure=False, | |
421 **kwargs): | |
422 """ | |
423 Connect to a Eucalyptus service. | |
424 | |
425 :type host: string | |
426 :param host: the host name or ip address of the Eucalyptus server | |
427 | |
428 :type aws_access_key_id: string | |
429 :param aws_access_key_id: Your AWS Access Key ID | |
430 | |
431 :type aws_secret_access_key: string | |
432 :param aws_secret_access_key: Your AWS Secret Access Key | |
433 | |
434 :rtype: :class:`boto.ec2.connection.EC2Connection` | |
435 :return: A connection to Eucalyptus server | |
436 """ | |
437 from boto.ec2 import EC2Connection | |
438 from boto.ec2.regioninfo import RegionInfo | |
439 | |
440 # Check for values in boto config, if not supplied as args | |
441 if not aws_access_key_id: | |
442 aws_access_key_id = config.get('Credentials', | |
443 'euca_access_key_id', | |
444 None) | |
445 if not aws_secret_access_key: | |
446 aws_secret_access_key = config.get('Credentials', | |
447 'euca_secret_access_key', | |
448 None) | |
449 if not host: | |
450 host = config.get('Boto', 'eucalyptus_host', None) | |
451 | |
452 reg = RegionInfo(name='eucalyptus', endpoint=host) | |
453 return EC2Connection(aws_access_key_id, aws_secret_access_key, | |
454 region=reg, port=port, path=path, | |
455 is_secure=is_secure, **kwargs) | |
456 | |
457 | |
458 def connect_glacier(aws_access_key_id=None, aws_secret_access_key=None, | |
459 **kwargs): | |
460 """ | |
461 :type aws_access_key_id: string | |
462 :param aws_access_key_id: Your AWS Access Key ID | |
463 | |
464 :type aws_secret_access_key: string | |
465 :param aws_secret_access_key: Your AWS Secret Access Key | |
466 | |
467 :rtype: :class:`boto.glacier.layer2.Layer2` | |
468 :return: A connection to Amazon's Glacier Service | |
469 """ | |
470 from boto.glacier.layer2 import Layer2 | |
471 return Layer2(aws_access_key_id, aws_secret_access_key, | |
472 **kwargs) | |
473 | |
474 | |
475 def connect_ec2_endpoint(url, aws_access_key_id=None, | |
476 aws_secret_access_key=None, | |
477 **kwargs): | |
478 """ | |
479 Connect to an EC2 Api endpoint. Additional arguments are passed | |
480 through to connect_ec2. | |
481 | |
482 :type url: string | |
483 :param url: A url for the ec2 api endpoint to connect to | |
484 | |
485 :type aws_access_key_id: string | |
486 :param aws_access_key_id: Your AWS Access Key ID | |
487 | |
488 :type aws_secret_access_key: string | |
489 :param aws_secret_access_key: Your AWS Secret Access Key | |
490 | |
491 :rtype: :class:`boto.ec2.connection.EC2Connection` | |
492 :return: A connection to Eucalyptus server | |
493 """ | |
494 from boto.ec2.regioninfo import RegionInfo | |
495 | |
496 purl = urlparse(url) | |
497 kwargs['port'] = purl.port | |
498 kwargs['host'] = purl.hostname | |
499 kwargs['path'] = purl.path | |
500 if not 'is_secure' in kwargs: | |
501 kwargs['is_secure'] = (purl.scheme == "https") | |
502 | |
503 kwargs['region'] = RegionInfo(name=purl.hostname, | |
504 endpoint=purl.hostname) | |
505 kwargs['aws_access_key_id'] = aws_access_key_id | |
506 kwargs['aws_secret_access_key'] = aws_secret_access_key | |
507 | |
508 return(connect_ec2(**kwargs)) | |
509 | |
510 | |
511 def connect_walrus(host=None, aws_access_key_id=None, | |
512 aws_secret_access_key=None, | |
513 port=8773, path='/services/Walrus', is_secure=False, | |
514 **kwargs): | |
515 """ | |
516 Connect to a Walrus service. | |
517 | |
518 :type host: string | |
519 :param host: the host name or ip address of the Walrus server | |
520 | |
521 :type aws_access_key_id: string | |
522 :param aws_access_key_id: Your AWS Access Key ID | |
523 | |
524 :type aws_secret_access_key: string | |
525 :param aws_secret_access_key: Your AWS Secret Access Key | |
526 | |
527 :rtype: :class:`boto.s3.connection.S3Connection` | |
528 :return: A connection to Walrus | |
529 """ | |
530 from boto.s3.connection import S3Connection | |
531 from boto.s3.connection import OrdinaryCallingFormat | |
532 | |
533 # Check for values in boto config, if not supplied as args | |
534 if not aws_access_key_id: | |
535 aws_access_key_id = config.get('Credentials', | |
536 'euca_access_key_id', | |
537 None) | |
538 if not aws_secret_access_key: | |
539 aws_secret_access_key = config.get('Credentials', | |
540 'euca_secret_access_key', | |
541 None) | |
542 if not host: | |
543 host = config.get('Boto', 'walrus_host', None) | |
544 | |
545 return S3Connection(aws_access_key_id, aws_secret_access_key, | |
546 host=host, port=port, path=path, | |
547 calling_format=OrdinaryCallingFormat(), | |
548 is_secure=is_secure, **kwargs) | |
549 | |
550 | |
551 def connect_ses(aws_access_key_id=None, aws_secret_access_key=None, **kwargs): | |
552 """ | |
553 :type aws_access_key_id: string | |
554 :param aws_access_key_id: Your AWS Access Key ID | |
555 | |
556 :type aws_secret_access_key: string | |
557 :param aws_secret_access_key: Your AWS Secret Access Key | |
558 | |
559 :rtype: :class:`boto.ses.SESConnection` | |
560 :return: A connection to Amazon's SES | |
561 """ | |
562 from boto.ses import SESConnection | |
563 return SESConnection(aws_access_key_id, aws_secret_access_key, **kwargs) | |
564 | |
565 | |
566 def connect_sts(aws_access_key_id=None, aws_secret_access_key=None, **kwargs): | |
567 """ | |
568 :type aws_access_key_id: string | |
569 :param aws_access_key_id: Your AWS Access Key ID | |
570 | |
571 :type aws_secret_access_key: string | |
572 :param aws_secret_access_key: Your AWS Secret Access Key | |
573 | |
574 :rtype: :class:`boto.sts.STSConnection` | |
575 :return: A connection to Amazon's STS | |
576 """ | |
577 from boto.sts import STSConnection | |
578 return STSConnection(aws_access_key_id, aws_secret_access_key, **kwargs) | |
579 | |
580 | |
581 def connect_ia(ia_access_key_id=None, ia_secret_access_key=None, | |
582 is_secure=False, **kwargs): | |
583 """ | |
584 Connect to the Internet Archive via their S3-like API. | |
585 | |
586 :type ia_access_key_id: string | |
587 :param ia_access_key_id: Your IA Access Key ID. This will also look | |
588 in your boto config file for an entry in the Credentials | |
589 section called "ia_access_key_id" | |
590 | |
591 :type ia_secret_access_key: string | |
592 :param ia_secret_access_key: Your IA Secret Access Key. This will also | |
593 look in your boto config file for an entry in the Credentials | |
594 section called "ia_secret_access_key" | |
595 | |
596 :rtype: :class:`boto.s3.connection.S3Connection` | |
597 :return: A connection to the Internet Archive | |
598 """ | |
599 from boto.s3.connection import S3Connection | |
600 from boto.s3.connection import OrdinaryCallingFormat | |
601 | |
602 access_key = config.get('Credentials', 'ia_access_key_id', | |
603 ia_access_key_id) | |
604 secret_key = config.get('Credentials', 'ia_secret_access_key', | |
605 ia_secret_access_key) | |
606 | |
607 return S3Connection(access_key, secret_key, | |
608 host='s3.us.archive.org', | |
609 calling_format=OrdinaryCallingFormat(), | |
610 is_secure=is_secure, **kwargs) | |
611 | |
612 | |
613 def connect_dynamodb(aws_access_key_id=None, | |
614 aws_secret_access_key=None, | |
615 **kwargs): | |
616 """ | |
617 :type aws_access_key_id: string | |
618 :param aws_access_key_id: Your AWS Access Key ID | |
619 | |
620 :type aws_secret_access_key: string | |
621 :param aws_secret_access_key: Your AWS Secret Access Key | |
622 | |
623 :rtype: :class:`boto.dynamodb.layer2.Layer2` | |
624 :return: A connection to the Layer2 interface for DynamoDB. | |
625 """ | |
626 from boto.dynamodb.layer2 import Layer2 | |
627 return Layer2(aws_access_key_id, aws_secret_access_key, **kwargs) | |
628 | |
629 | |
630 def connect_swf(aws_access_key_id=None, | |
631 aws_secret_access_key=None, | |
632 **kwargs): | |
633 """ | |
634 :type aws_access_key_id: string | |
635 :param aws_access_key_id: Your AWS Access Key ID | |
636 | |
637 :type aws_secret_access_key: string | |
638 :param aws_secret_access_key: Your AWS Secret Access Key | |
639 | |
640 :rtype: :class:`boto.swf.layer1.Layer1` | |
641 :return: A connection to the Layer1 interface for SWF. | |
642 """ | |
643 from boto.swf.layer1 import Layer1 | |
644 return Layer1(aws_access_key_id, aws_secret_access_key, **kwargs) | |
645 | |
646 | |
647 def connect_cloudsearch(aws_access_key_id=None, | |
648 aws_secret_access_key=None, | |
649 **kwargs): | |
650 """ | |
651 :type aws_access_key_id: string | |
652 :param aws_access_key_id: Your AWS Access Key ID | |
653 | |
654 :type aws_secret_access_key: string | |
655 :param aws_secret_access_key: Your AWS Secret Access Key | |
656 | |
657 :rtype: :class:`boto.cloudsearch.layer2.Layer2` | |
658 :return: A connection to Amazon's CloudSearch service | |
659 """ | |
660 from boto.cloudsearch.layer2 import Layer2 | |
661 return Layer2(aws_access_key_id, aws_secret_access_key, | |
662 **kwargs) | |
663 | |
664 | |
665 def connect_cloudsearch2(aws_access_key_id=None, | |
666 aws_secret_access_key=None, | |
667 sign_request=False, | |
668 **kwargs): | |
669 """ | |
670 :type aws_access_key_id: string | |
671 :param aws_access_key_id: Your AWS Access Key ID | |
672 | |
673 :type aws_secret_access_key: string | |
674 :param aws_secret_access_key: Your AWS Secret Access Key | |
675 | |
676 :type sign_request: bool | |
677 :param sign_request: whether or not to sign search and | |
678 upload requests | |
679 | |
680 :rtype: :class:`boto.cloudsearch2.layer2.Layer2` | |
681 :return: A connection to Amazon's CloudSearch2 service | |
682 """ | |
683 from boto.cloudsearch2.layer2 import Layer2 | |
684 return Layer2(aws_access_key_id, aws_secret_access_key, | |
685 sign_request=sign_request, | |
686 **kwargs) | |
687 | |
688 | |
689 def connect_cloudsearchdomain(aws_access_key_id=None, | |
690 aws_secret_access_key=None, | |
691 **kwargs): | |
692 """ | |
693 :type aws_access_key_id: string | |
694 :param aws_access_key_id: Your AWS Access Key ID | |
695 | |
696 :type aws_secret_access_key: string | |
697 :param aws_secret_access_key: Your AWS Secret Access Key | |
698 | |
699 :rtype: :class:`boto.cloudsearchdomain.layer1.CloudSearchDomainConnection` | |
700 :return: A connection to Amazon's CloudSearch Domain service | |
701 """ | |
702 from boto.cloudsearchdomain.layer1 import CloudSearchDomainConnection | |
703 return CloudSearchDomainConnection(aws_access_key_id, | |
704 aws_secret_access_key, **kwargs) | |
705 | |
706 | |
707 def connect_beanstalk(aws_access_key_id=None, | |
708 aws_secret_access_key=None, | |
709 **kwargs): | |
710 """ | |
711 :type aws_access_key_id: string | |
712 :param aws_access_key_id: Your AWS Access Key ID | |
713 | |
714 :type aws_secret_access_key: string | |
715 :param aws_secret_access_key: Your AWS Secret Access Key | |
716 | |
717 :rtype: :class:`boto.beanstalk.layer1.Layer1` | |
718 :return: A connection to Amazon's Elastic Beanstalk service | |
719 """ | |
720 from boto.beanstalk.layer1 import Layer1 | |
721 return Layer1(aws_access_key_id, aws_secret_access_key, **kwargs) | |
722 | |
723 | |
724 def connect_elastictranscoder(aws_access_key_id=None, | |
725 aws_secret_access_key=None, | |
726 **kwargs): | |
727 """ | |
728 :type aws_access_key_id: string | |
729 :param aws_access_key_id: Your AWS Access Key ID | |
730 | |
731 :type aws_secret_access_key: string | |
732 :param aws_secret_access_key: Your AWS Secret Access Key | |
733 | |
734 :rtype: :class:`boto.ets.layer1.ElasticTranscoderConnection` | |
735 :return: A connection to Amazon's Elastic Transcoder service | |
736 """ | |
737 from boto.elastictranscoder.layer1 import ElasticTranscoderConnection | |
738 return ElasticTranscoderConnection( | |
739 aws_access_key_id=aws_access_key_id, | |
740 aws_secret_access_key=aws_secret_access_key, | |
741 **kwargs) | |
742 | |
743 | |
744 def connect_opsworks(aws_access_key_id=None, | |
745 aws_secret_access_key=None, | |
746 **kwargs): | |
747 from boto.opsworks.layer1 import OpsWorksConnection | |
748 return OpsWorksConnection( | |
749 aws_access_key_id=aws_access_key_id, | |
750 aws_secret_access_key=aws_secret_access_key, | |
751 **kwargs) | |
752 | |
753 | |
754 def connect_redshift(aws_access_key_id=None, | |
755 aws_secret_access_key=None, | |
756 **kwargs): | |
757 """ | |
758 :type aws_access_key_id: string | |
759 :param aws_access_key_id: Your AWS Access Key ID | |
760 | |
761 :type aws_secret_access_key: string | |
762 :param aws_secret_access_key: Your AWS Secret Access Key | |
763 | |
764 :rtype: :class:`boto.redshift.layer1.RedshiftConnection` | |
765 :return: A connection to Amazon's Redshift service | |
766 """ | |
767 from boto.redshift.layer1 import RedshiftConnection | |
768 return RedshiftConnection( | |
769 aws_access_key_id=aws_access_key_id, | |
770 aws_secret_access_key=aws_secret_access_key, | |
771 **kwargs | |
772 ) | |
773 | |
774 | |
775 def connect_support(aws_access_key_id=None, | |
776 aws_secret_access_key=None, | |
777 **kwargs): | |
778 """ | |
779 :type aws_access_key_id: string | |
780 :param aws_access_key_id: Your AWS Access Key ID | |
781 | |
782 :type aws_secret_access_key: string | |
783 :param aws_secret_access_key: Your AWS Secret Access Key | |
784 | |
785 :rtype: :class:`boto.support.layer1.SupportConnection` | |
786 :return: A connection to Amazon's Support service | |
787 """ | |
788 from boto.support.layer1 import SupportConnection | |
789 return SupportConnection( | |
790 aws_access_key_id=aws_access_key_id, | |
791 aws_secret_access_key=aws_secret_access_key, | |
792 **kwargs | |
793 ) | |
794 | |
795 | |
796 def connect_cloudtrail(aws_access_key_id=None, | |
797 aws_secret_access_key=None, | |
798 **kwargs): | |
799 """ | |
800 Connect to AWS CloudTrail | |
801 | |
802 :type aws_access_key_id: string | |
803 :param aws_access_key_id: Your AWS Access Key ID | |
804 | |
805 :type aws_secret_access_key: string | |
806 :param aws_secret_access_key: Your AWS Secret Access Key | |
807 | |
808 :rtype: :class:`boto.cloudtrail.layer1.CloudtrailConnection` | |
809 :return: A connection to the AWS Cloudtrail service | |
810 """ | |
811 from boto.cloudtrail.layer1 import CloudTrailConnection | |
812 return CloudTrailConnection( | |
813 aws_access_key_id=aws_access_key_id, | |
814 aws_secret_access_key=aws_secret_access_key, | |
815 **kwargs | |
816 ) | |
817 | |
818 | |
819 def connect_directconnect(aws_access_key_id=None, | |
820 aws_secret_access_key=None, | |
821 **kwargs): | |
822 """ | |
823 Connect to AWS DirectConnect | |
824 | |
825 :type aws_access_key_id: string | |
826 :param aws_access_key_id: Your AWS Access Key ID | |
827 | |
828 :type aws_secret_access_key: string | |
829 :param aws_secret_access_key: Your AWS Secret Access Key | |
830 | |
831 :rtype: :class:`boto.directconnect.layer1.DirectConnectConnection` | |
832 :return: A connection to the AWS DirectConnect service | |
833 """ | |
834 from boto.directconnect.layer1 import DirectConnectConnection | |
835 return DirectConnectConnection( | |
836 aws_access_key_id=aws_access_key_id, | |
837 aws_secret_access_key=aws_secret_access_key, | |
838 **kwargs | |
839 ) | |
840 | |
841 def connect_kinesis(aws_access_key_id=None, | |
842 aws_secret_access_key=None, | |
843 **kwargs): | |
844 """ | |
845 Connect to Amazon Kinesis | |
846 | |
847 :type aws_access_key_id: string | |
848 :param aws_access_key_id: Your AWS Access Key ID | |
849 | |
850 :type aws_secret_access_key: string | |
851 :param aws_secret_access_key: Your AWS Secret Access Key | |
852 | |
853 rtype: :class:`boto.kinesis.layer1.KinesisConnection` | |
854 :return: A connection to the Amazon Kinesis service | |
855 """ | |
856 from boto.kinesis.layer1 import KinesisConnection | |
857 return KinesisConnection( | |
858 aws_access_key_id=aws_access_key_id, | |
859 aws_secret_access_key=aws_secret_access_key, | |
860 **kwargs | |
861 ) | |
862 | |
863 def connect_logs(aws_access_key_id=None, | |
864 aws_secret_access_key=None, | |
865 **kwargs): | |
866 """ | |
867 Connect to Amazon CloudWatch Logs | |
868 | |
869 :type aws_access_key_id: string | |
870 :param aws_access_key_id: Your AWS Access Key ID | |
871 | |
872 :type aws_secret_access_key: string | |
873 :param aws_secret_access_key: Your AWS Secret Access Key | |
874 | |
875 rtype: :class:`boto.kinesis.layer1.CloudWatchLogsConnection` | |
876 :return: A connection to the Amazon CloudWatch Logs service | |
877 """ | |
878 from boto.logs.layer1 import CloudWatchLogsConnection | |
879 return CloudWatchLogsConnection( | |
880 aws_access_key_id=aws_access_key_id, | |
881 aws_secret_access_key=aws_secret_access_key, | |
882 **kwargs | |
883 ) | |
884 | |
885 | |
886 def connect_route53domains(aws_access_key_id=None, | |
887 aws_secret_access_key=None, | |
888 **kwargs): | |
889 """ | |
890 Connect to Amazon Route 53 Domains | |
891 | |
892 :type aws_access_key_id: string | |
893 :param aws_access_key_id: Your AWS Access Key ID | |
894 | |
895 :type aws_secret_access_key: string | |
896 :param aws_secret_access_key: Your AWS Secret Access Key | |
897 | |
898 rtype: :class:`boto.route53.domains.layer1.Route53DomainsConnection` | |
899 :return: A connection to the Amazon Route 53 Domains service | |
900 """ | |
901 from boto.route53.domains.layer1 import Route53DomainsConnection | |
902 return Route53DomainsConnection( | |
903 aws_access_key_id=aws_access_key_id, | |
904 aws_secret_access_key=aws_secret_access_key, | |
905 **kwargs | |
906 ) | |
907 | |
908 | |
909 def connect_cognito_identity(aws_access_key_id=None, | |
910 aws_secret_access_key=None, | |
911 **kwargs): | |
912 """ | |
913 Connect to Amazon Cognito Identity | |
914 | |
915 :type aws_access_key_id: string | |
916 :param aws_access_key_id: Your AWS Access Key ID | |
917 | |
918 :type aws_secret_access_key: string | |
919 :param aws_secret_access_key: Your AWS Secret Access Key | |
920 | |
921 rtype: :class:`boto.cognito.identity.layer1.CognitoIdentityConnection` | |
922 :return: A connection to the Amazon Cognito Identity service | |
923 """ | |
924 from boto.cognito.identity.layer1 import CognitoIdentityConnection | |
925 return CognitoIdentityConnection( | |
926 aws_access_key_id=aws_access_key_id, | |
927 aws_secret_access_key=aws_secret_access_key, | |
928 **kwargs | |
929 ) | |
930 | |
931 | |
932 def connect_cognito_sync(aws_access_key_id=None, | |
933 aws_secret_access_key=None, | |
934 **kwargs): | |
935 """ | |
936 Connect to Amazon Cognito Sync | |
937 | |
938 :type aws_access_key_id: string | |
939 :param aws_access_key_id: Your AWS Access Key ID | |
940 | |
941 :type aws_secret_access_key: string | |
942 :param aws_secret_access_key: Your AWS Secret Access Key | |
943 | |
944 rtype: :class:`boto.cognito.sync.layer1.CognitoSyncConnection` | |
945 :return: A connection to the Amazon Cognito Sync service | |
946 """ | |
947 from boto.cognito.sync.layer1 import CognitoSyncConnection | |
948 return CognitoSyncConnection( | |
949 aws_access_key_id=aws_access_key_id, | |
950 aws_secret_access_key=aws_secret_access_key, | |
951 **kwargs | |
952 ) | |
953 | |
954 | |
955 def connect_kms(aws_access_key_id=None, | |
956 aws_secret_access_key=None, | |
957 **kwargs): | |
958 """ | |
959 Connect to AWS Key Management Service | |
960 | |
961 :type aws_access_key_id: string | |
962 :param aws_access_key_id: Your AWS Access Key ID | |
963 | |
964 :type aws_secret_access_key: string | |
965 :param aws_secret_access_key: Your AWS Secret Access Key | |
966 | |
967 rtype: :class:`boto.kms.layer1.KMSConnection` | |
968 :return: A connection to the AWS Key Management Service | |
969 """ | |
970 from boto.kms.layer1 import KMSConnection | |
971 return KMSConnection( | |
972 aws_access_key_id=aws_access_key_id, | |
973 aws_secret_access_key=aws_secret_access_key, | |
974 **kwargs | |
975 ) | |
976 | |
977 | |
978 def connect_awslambda(aws_access_key_id=None, | |
979 aws_secret_access_key=None, | |
980 **kwargs): | |
981 """ | |
982 Connect to AWS Lambda | |
983 | |
984 :type aws_access_key_id: string | |
985 :param aws_access_key_id: Your AWS Access Key ID | |
986 | |
987 :type aws_secret_access_key: string | |
988 :param aws_secret_access_key: Your AWS Secret Access Key | |
989 | |
990 rtype: :class:`boto.awslambda.layer1.AWSLambdaConnection` | |
991 :return: A connection to the AWS Lambda service | |
992 """ | |
993 from boto.awslambda.layer1 import AWSLambdaConnection | |
994 return AWSLambdaConnection( | |
995 aws_access_key_id=aws_access_key_id, | |
996 aws_secret_access_key=aws_secret_access_key, | |
997 **kwargs | |
998 ) | |
999 | |
1000 | |
1001 def connect_codedeploy(aws_access_key_id=None, | |
1002 aws_secret_access_key=None, | |
1003 **kwargs): | |
1004 """ | |
1005 Connect to AWS CodeDeploy | |
1006 | |
1007 :type aws_access_key_id: string | |
1008 :param aws_access_key_id: Your AWS Access Key ID | |
1009 | |
1010 :type aws_secret_access_key: string | |
1011 :param aws_secret_access_key: Your AWS Secret Access Key | |
1012 | |
1013 rtype: :class:`boto.cognito.sync.layer1.CodeDeployConnection` | |
1014 :return: A connection to the AWS CodeDeploy service | |
1015 """ | |
1016 from boto.codedeploy.layer1 import CodeDeployConnection | |
1017 return CodeDeployConnection( | |
1018 aws_access_key_id=aws_access_key_id, | |
1019 aws_secret_access_key=aws_secret_access_key, | |
1020 **kwargs | |
1021 ) | |
1022 | |
1023 | |
1024 def connect_configservice(aws_access_key_id=None, | |
1025 aws_secret_access_key=None, | |
1026 **kwargs): | |
1027 """ | |
1028 Connect to AWS Config | |
1029 | |
1030 :type aws_access_key_id: string | |
1031 :param aws_access_key_id: Your AWS Access Key ID | |
1032 | |
1033 :type aws_secret_access_key: string | |
1034 :param aws_secret_access_key: Your AWS Secret Access Key | |
1035 | |
1036 rtype: :class:`boto.kms.layer1.ConfigServiceConnection` | |
1037 :return: A connection to the AWS Config service | |
1038 """ | |
1039 from boto.configservice.layer1 import ConfigServiceConnection | |
1040 return ConfigServiceConnection( | |
1041 aws_access_key_id=aws_access_key_id, | |
1042 aws_secret_access_key=aws_secret_access_key, | |
1043 **kwargs | |
1044 ) | |
1045 | |
1046 | |
1047 def connect_cloudhsm(aws_access_key_id=None, | |
1048 aws_secret_access_key=None, | |
1049 **kwargs): | |
1050 """ | |
1051 Connect to AWS CloudHSM | |
1052 | |
1053 :type aws_access_key_id: string | |
1054 :param aws_access_key_id: Your AWS Access Key ID | |
1055 | |
1056 :type aws_secret_access_key: string | |
1057 :param aws_secret_access_key: Your AWS Secret Access Key | |
1058 | |
1059 rtype: :class:`boto.cloudhsm.layer1.CloudHSMConnection` | |
1060 :return: A connection to the AWS CloudHSM service | |
1061 """ | |
1062 from boto.cloudhsm.layer1 import CloudHSMConnection | |
1063 return CloudHSMConnection( | |
1064 aws_access_key_id=aws_access_key_id, | |
1065 aws_secret_access_key=aws_secret_access_key, | |
1066 **kwargs | |
1067 ) | |
1068 | |
1069 | |
1070 def connect_ec2containerservice(aws_access_key_id=None, | |
1071 aws_secret_access_key=None, | |
1072 **kwargs): | |
1073 """ | |
1074 Connect to Amazon EC2 Container Service | |
1075 rtype: :class:`boto.ec2containerservice.layer1.EC2ContainerServiceConnection` | |
1076 :return: A connection to the Amazon EC2 Container Service | |
1077 """ | |
1078 from boto.ec2containerservice.layer1 import EC2ContainerServiceConnection | |
1079 return EC2ContainerServiceConnection( | |
1080 aws_access_key_id=aws_access_key_id, | |
1081 aws_secret_access_key=aws_secret_access_key, | |
1082 **kwargs | |
1083 ) | |
1084 | |
1085 | |
1086 def connect_machinelearning(aws_access_key_id=None, | |
1087 aws_secret_access_key=None, | |
1088 **kwargs): | |
1089 """ | |
1090 Connect to Amazon Machine Learning service | |
1091 rtype: :class:`boto.machinelearning.layer1.MachineLearningConnection` | |
1092 :return: A connection to the Amazon Machine Learning service | |
1093 """ | |
1094 from boto.machinelearning.layer1 import MachineLearningConnection | |
1095 return MachineLearningConnection( | |
1096 aws_access_key_id=aws_access_key_id, | |
1097 aws_secret_access_key=aws_secret_access_key, | |
1098 **kwargs | |
1099 ) | |
1100 | |
1101 | |
1102 def storage_uri(uri_str, default_scheme='file', debug=0, validate=True, | |
1103 bucket_storage_uri_class=BucketStorageUri, | |
1104 suppress_consec_slashes=True, is_latest=False): | |
1105 """ | |
1106 Instantiate a StorageUri from a URI string. | |
1107 | |
1108 :type uri_str: string | |
1109 :param uri_str: URI naming bucket + optional object. | |
1110 :type default_scheme: string | |
1111 :param default_scheme: default scheme for scheme-less URIs. | |
1112 :type debug: int | |
1113 :param debug: debug level to pass in to boto connection (range 0..2). | |
1114 :type validate: bool | |
1115 :param validate: whether to check for bucket name validity. | |
1116 :type bucket_storage_uri_class: BucketStorageUri interface. | |
1117 :param bucket_storage_uri_class: Allows mocking for unit tests. | |
1118 :param suppress_consec_slashes: If provided, controls whether | |
1119 consecutive slashes will be suppressed in key paths. | |
1120 :type is_latest: bool | |
1121 :param is_latest: whether this versioned object represents the | |
1122 current version. | |
1123 | |
1124 We allow validate to be disabled to allow caller | |
1125 to implement bucket-level wildcarding (outside the boto library; | |
1126 see gsutil). | |
1127 | |
1128 :rtype: :class:`boto.StorageUri` subclass | |
1129 :return: StorageUri subclass for given URI. | |
1130 | |
1131 ``uri_str`` must be one of the following formats: | |
1132 | |
1133 * gs://bucket/name | |
1134 * gs://bucket/name#ver | |
1135 * s3://bucket/name | |
1136 * gs://bucket | |
1137 * s3://bucket | |
1138 * filename (which could be a Unix path like /a/b/c or a Windows path like | |
1139 C:\a\b\c) | |
1140 | |
1141 The last example uses the default scheme ('file', unless overridden). | |
1142 """ | |
1143 version_id = None | |
1144 generation = None | |
1145 | |
1146 # Manually parse URI components instead of using urlparse because | |
1147 # what we're calling URIs don't really fit the standard syntax for URIs | |
1148 # (the latter includes an optional host/net location part). | |
1149 end_scheme_idx = uri_str.find('://') | |
1150 if end_scheme_idx == -1: | |
1151 scheme = default_scheme.lower() | |
1152 path = uri_str | |
1153 else: | |
1154 scheme = uri_str[0:end_scheme_idx].lower() | |
1155 path = uri_str[end_scheme_idx + 3:] | |
1156 | |
1157 if scheme not in ['file', 's3', 'gs']: | |
1158 raise InvalidUriError('Unrecognized scheme "%s"' % scheme) | |
1159 if scheme == 'file': | |
1160 # For file URIs we have no bucket name, and use the complete path | |
1161 # (minus 'file://') as the object name. | |
1162 is_stream = False | |
1163 if path == '-': | |
1164 is_stream = True | |
1165 return FileStorageUri(path, debug, is_stream) | |
1166 else: | |
1167 path_parts = path.split('/', 1) | |
1168 bucket_name = path_parts[0] | |
1169 object_name = '' | |
1170 # If validate enabled, ensure the bucket name is valid, to avoid | |
1171 # possibly confusing other parts of the code. (For example if we didn't | |
1172 # catch bucket names containing ':', when a user tried to connect to | |
1173 # the server with that name they might get a confusing error about | |
1174 # non-integer port numbers.) | |
1175 if (validate and bucket_name and | |
1176 (not BUCKET_NAME_RE.match(bucket_name) | |
1177 or TOO_LONG_DNS_NAME_COMP.search(bucket_name))): | |
1178 raise InvalidUriError('Invalid bucket name in URI "%s"' % uri_str) | |
1179 if scheme == 'gs': | |
1180 match = GENERATION_RE.search(path) | |
1181 if match: | |
1182 md = match.groupdict() | |
1183 versionless_uri_str = md['versionless_uri_str'] | |
1184 path_parts = versionless_uri_str.split('/', 1) | |
1185 generation = int(md['generation']) | |
1186 elif scheme == 's3': | |
1187 match = VERSION_RE.search(path) | |
1188 if match: | |
1189 md = match.groupdict() | |
1190 versionless_uri_str = md['versionless_uri_str'] | |
1191 path_parts = versionless_uri_str.split('/', 1) | |
1192 version_id = md['version_id'] | |
1193 else: | |
1194 raise InvalidUriError('Unrecognized scheme "%s"' % scheme) | |
1195 if len(path_parts) > 1: | |
1196 object_name = path_parts[1] | |
1197 return bucket_storage_uri_class( | |
1198 scheme, bucket_name, object_name, debug, | |
1199 suppress_consec_slashes=suppress_consec_slashes, | |
1200 version_id=version_id, generation=generation, is_latest=is_latest) | |
1201 | |
1202 | |
1203 def storage_uri_for_key(key): | |
1204 """Returns a StorageUri for the given key. | |
1205 | |
1206 :type key: :class:`boto.s3.key.Key` or subclass | |
1207 :param key: URI naming bucket + optional object. | |
1208 """ | |
1209 if not isinstance(key, boto.s3.key.Key): | |
1210 raise InvalidUriError('Requested key (%s) is not a subclass of ' | |
1211 'boto.s3.key.Key' % str(type(key))) | |
1212 prov_name = key.bucket.connection.provider.get_provider_name() | |
1213 uri_str = '%s://%s/%s' % (prov_name, key.bucket.name, key.name) | |
1214 return storage_uri(uri_str) | |
1215 | |
1216 boto.plugin.load_plugins(config) |