我们从Python开源项目中,提取了以下31个代码示例,用于说明如何使用boto.config()。
def write_metadata(self): fp = open(os.path.expanduser(BotoConfigPath), 'w') fp.write('[Instance]\n') inst_data = get_instance_metadata() for key in inst_data: fp.write('%s = %s\n' % (key, inst_data[key])) user_data = get_instance_userdata() fp.write('\n%s\n' % user_data) fp.write('[Pyami]\n') fp.write('working_dir = %s\n' % self.working_dir) fp.close() # This file has the AWS credentials, should we lock it down? # os.chmod(BotoConfigPath, stat.S_IREAD | stat.S_IWRITE) # now that we have written the file, read it into a pyami Config object boto.config = Config() boto.init_logging()
def _get_aws_credentials_from_file(self, aws_key_file): try: config = ConfigParser.ConfigParser() config.read(aws_key_file) aws_access_key = config.get(AWS_KEYFILE_CREDENTIALS_SECTION, AWS_KEYFILE_ACCESS_KEY_FIELD) aws_secret_key = config.get(AWS_KEYFILE_CREDENTIALS_SECTION, AWS_KEYFILE_SECRET_KEY_FIELD) return aws_access_key, aws_secret_key except Exception as e: return None, None
def _set_aws_config(self, config_file): """ Parse an AWS credential file in boto (yaml) format: [Credentials] aws_access_key_id = [aws access key id] aws_secret_access_key = [aws secret key id] """ config = boto.config if os.path.isfile(config_file): config.load_credential_file(config_file)
def put_config_string(self, keyname, data): """ Put the config data into a keyname will replace . with / in the keyname so that this will happen: discovery.service.prod -> discovery/service/prod """ keyname = keyname.replace('.', '/') s3_bucket = self._get_bucket_conn() s3_key = s3_bucket.get_key(keyname) if s3_key is None: s3_key = Key(s3_bucket, keyname) try: s3_key.set_contents_from_string(data) except boto.exception.S3ResponseError, err: return err
def get_config_string(self, keyname): """ Fetch the data from an S3 config file named keyname """ keyname = keyname.replace('.', '/') s3_bucket = self._get_bucket_conn() s3_key = s3_bucket.get_key(keyname) if s3_key is not None: s3_data = s3_key.get_contents_as_string() return s3_data else: raise ValueError("404 keyname not found")
def bundle_instance(self, instance_id, s3_bucket, s3_prefix, s3_upload_policy, dry_run=False): """ Bundle Windows instance. :type instance_id: string :param instance_id: The instance id :type s3_bucket: string :param s3_bucket: The bucket in which the AMI should be stored. :type s3_prefix: string :param s3_prefix: The beginning of the file name for the AMI. :type s3_upload_policy: string :param s3_upload_policy: Base64 encoded policy that specifies condition and permissions for Amazon EC2 to upload the user's image into Amazon S3. :type dry_run: bool :param dry_run: Set to True if the operation should not actually run. """ params = {'InstanceId': instance_id, 'Storage.S3.Bucket': s3_bucket, 'Storage.S3.Prefix': s3_prefix, 'Storage.S3.UploadPolicy': s3_upload_policy} s3auth = boto.auth.get_auth_handler(None, boto.config, self.provider, ['s3']) params['Storage.S3.AWSAccessKeyId'] = self.aws_access_key_id signature = s3auth.sign_string(s3_upload_policy) params['Storage.S3.UploadPolicySignature'] = signature if dry_run: params['DryRun'] = 'true' return self.get_object('BundleInstance', params, BundleInstanceTask, verb='POST')
def load_boto(self): update = boto.config.get('Boto', 'boto_update', 'svn:HEAD') if update.startswith('svn'): if update.find(':') >= 0: method, version = update.split(':') version = '-r%s' % version else: version = '-rHEAD' location = boto.config.get('Boto', 'boto_location', '/usr/local/boto') self.run('svn update %s %s' % (version, location)) elif update.startswith('git'): location = boto.config.get('Boto', 'boto_location', '/usr/share/python-support/python-boto/boto') num_remaining_attempts = 10 while num_remaining_attempts > 0: num_remaining_attempts -= 1 try: self.run('git pull', cwd=location) num_remaining_attempts = 0 except Exception as e: boto.log.info('git pull attempt failed with the following exception. Trying again in a bit. %s', e) time.sleep(2) if update.find(':') >= 0: method, version = update.split(':') else: version = 'master' self.run('git checkout %s' % version, cwd=location) else: # first remove the symlink needed when running from subversion self.run('rm /usr/local/lib/python2.5/site-packages/boto') self.run('easy_install %s' % update)
def load_packages(self): package_str = boto.config.get('Pyami', 'packages') if package_str: packages = package_str.split(',') for package in packages: package = package.strip() if package.startswith('s3:'): package = self.fetch_s3_file(package) if package: # if the "package" is really a .py file, it doesn't have to # be installed, just being in the working dir is enough if not package.endswith('.py'): self.run('easy_install -Z %s' % package, exit_on_error=False)
def main(self): self.create_working_dir() self.load_boto() self.load_packages() self.notify('Bootstrap Completed for %s' % boto.config.get_instance('instance-id'))
def load_boto(self): update = boto.config.get('Boto', 'boto_update', 'svn:HEAD') if update.startswith('svn'): if update.find(':') >= 0: method, version = update.split(':') version = '-r%s' % version else: version = '-rHEAD' location = boto.config.get('Boto', 'boto_location', '/usr/local/boto') self.run('svn update %s %s' % (version, location)) elif update.startswith('git'): location = boto.config.get('Boto', 'boto_location', '/usr/share/python-support/python-boto/boto') num_remaining_attempts = 10 while num_remaining_attempts > 0: num_remaining_attempts -= 1 try: self.run('git pull', cwd=location) num_remaining_attempts = 0 except Exception, e: boto.log.info('git pull attempt failed with the following exception. Trying again in a bit. %s', e) time.sleep(2) if update.find(':') >= 0: method, version = update.split(':') else: version = 'master' self.run('git checkout %s' % version, cwd=location) else: # first remove the symlink needed when running from subversion self.run('rm /usr/local/lib/python2.5/site-packages/boto') self.run('easy_install %s' % update)