Questions tagged «boto3»

Boto 3-适用于Python的Amazon Web Services(AWS)SDK

2
资源,客户端和会话之间的boto3差异?
我在Ubuntu 16.04 LTS中使用Python 2.7.12。我正在通过以下链接学习如何使用boto3:https ://boto3.readthedocs.io/en/latest/guide/quickstart.html#using-boto-3 。我的疑问是何时使用资源,客户端或会话及其各自的功能。
215 python  boto3 

9
如何使用boto3处理错误?
我试图弄清楚如何使用boto3进行正确的错误处理。 我正在尝试创建一个IAM用户: def create_user(username, iam_conn): try: user = iam_conn.create_user(UserName=username) return user except Exception as e: return e 成功调用create_user时,我得到一个整洁的对象,其中包含API调用的http状态代码和新创建的用户的数据。 例: {'ResponseMetadata': {'HTTPStatusCode': 200, 'RequestId': 'omitted' }, u'User': {u'Arn': 'arn:aws:iam::omitted:user/omitted', u'CreateDate': datetime.datetime(2015, 10, 11, 17, 13, 5, 882000, tzinfo=tzutc()), u'Path': '/', u'UserId': 'omitted', u'UserName': 'omitted' } } 这很好。但是,如果失败(例如用户已经存在),我只会得到一个类型为botocore.exceptions.ClientError的对象,其中只有文本可以告诉我出了什么问题。 示例:ClientError('调用CreateUser操作时发生错误(EntityAlreadyExists):名称省略的用户已经存在。',) 此(AFAIK)使得错误处理变得非常困难,因为我不能仅打开结果的http状态代码(根据IAM的AWS API文档,该用户的409已经存在)。这使我认为我必须以错误的方式做某事。最佳的方法是让boto3永远不会抛出异常,但是突出部分总是返回一个反映API调用进行方式的对象。 谁能在这个问题上启发我或为我指明正确的方向?

12
列出带有boto3的存储桶的内容
如何查看S3中的存储桶中的内容boto3?(即是"ls")? 执行以下操作: import boto3 s3 = boto3.resource('s3') my_bucket = s3.Bucket('some/path/') 返回: s3.Bucket(name='some/path/') 我如何看其内容?
197 python  amazon-s3  boto  boto3 

23
使用boto3检查s3中存储桶中是否存在密钥
我想知道boto3中是否存在密钥。我可以循环存储桶中的内容并检查密钥是否匹配。 但这似乎更长,并且是一个过大的杀伤力。Boto3官方文档明确说明了如何执行此操作。 可能是我缺少明显之处。谁能指出我如何实现这一目标。
164 python  amazon-s3  boto3 



1
AWS boto和boto3有什么区别[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 3年前关闭。 改善这个问题 我是使用Python的AWS新手,并且正在尝试学习boto API,但是我注意到有两个主要的Python版本/软件包。那将是boto和boto3。 AWS boto库和boto3库之间有什么区别?

6
如何使用boto3将S3对象保存到文件
我正在尝试使用适用于AWS的新boto3客户端做一个“ hello world” 。 我的用例非常简单:从S3获取对象并将其保存到文件中。 在boto 2.XI中,它应该是这样的: import boto key = boto.connect_s3().get_bucket('foo').get_key('foo') key.get_contents_to_filename('/tmp/foo') 在boto 3中。我找不到一种干净的方法来做同样的事情,所以我手动遍历了“ Streaming”对象: import boto3 key = boto3.resource('s3').Object('fooo', 'docker/my-image.tar.gz').get() with open('/tmp/my-image.tar.gz', 'w') as f: chunk = key['Body'].read(1024*8) while chunk: f.write(chunk) chunk = key['Body'].read(1024*8) 要么 import boto3 key = boto3.resource('s3').Object('fooo', 'docker/my-image.tar.gz').get() with open('/tmp/my-image.tar.gz', 'w') as f: for chunk …

4
使用boto3连接到CloudFront时如何选择AWS配置文件
我正在使用Boto 3 python库,并想连接到AWS CloudFront。我需要指定正确的AWS Profile(AWS凭证),但是在查看官方文档时,我看不到指定它的方法。 我正在使用代码初始化客户端: client = boto3.client('cloudfront') 但是,这导致它使用默认配置文件进行连接。我找不到可以指定要使用的配置文件的方法。

10
将Dataframe保存到csv直接保存到s3 Python
我有一个要上传到新CSV文件的pandas DataFrame。问题是在将文件传输到s3之前,我不想在本地保存文件。是否有像to_csv这样的方法可以将数据帧直接写入s3?我正在使用boto3。 这是我到目前为止的内容: import boto3 s3 = boto3.client('s3', aws_access_key_id='key', aws_secret_access_key='secret_key') read_file = s3.get_object(Bucket, Key) df = pd.read_csv(read_file['Body']) # Make alterations to DataFrame # Then export DataFrame to CSV through direct transfer to s3

12
Boto3错误:botocore.exceptions.NoCredentialsError:无法找到凭据
当我简单地运行以下代码时,总是会出现此错误。 s3 = boto3.resource('s3') bucket_name = "python-sdk-sample-%s" % uuid.uuid4() print("Creating new bucket with name:", bucket_name) s3.create_bucket(Bucket=bucket_name) 我已将凭证文件保存在 C:\Users\myname\.aws\credentials,Boto应该从那里读取我的凭据。 我的设置错了吗? 这是的输出boto3.set_stream_logger('botocore', level='DEBUG')。 2015-10-24 14:22:28,761 botocore.credentials [DEBUG] Skipping environment variable credential check because profile name was explicitly set. 2015-10-24 14:22:28,761 botocore.credentials [DEBUG] Looking for credentials via: env 2015-10-24 14:22:28,773 botocore.credentials [DEBUG] Looking …
112 boto  boto3 

5
连接到boto3 S3时如何指定凭据?
在boto上,当以这种方式连接到S3时,我通常指定我的凭据: import boto from boto.s3.connection import Key, S3Connection S3 = S3Connection( settings.AWS_SERVER_PUBLIC_KEY, settings.AWS_SERVER_SECRET_KEY ) 然后,我可以使用S3执行操作(在我的情况下,从存储桶中删除对象)。 使用boto3,我发现的所有示例都是这样的: import boto3 S3 = boto3.resource( 's3' ) S3.Object( bucket_name, key_name ).delete() 我无法指定我的凭据,因此所有尝试均因InvalidAccessKeyId错误而失败。 如何使用boto3指定凭据?


7
如何在不写入磁盘的情况下将AWS S3上的文本文件导入熊猫
我有一个保存在S3上的文本文件,它是一个制表符分隔的表。我想将其加载到熊猫中,但由于我在heroku服务器上运行,因此无法先保存它。这是我到目前为止所拥有的。 import io import boto3 import os import pandas as pd os.environ["AWS_ACCESS_KEY_ID"] = "xxxxxxxx" os.environ["AWS_SECRET_ACCESS_KEY"] = "xxxxxxxx" s3_client = boto3.client('s3') response = s3_client.get_object(Bucket="my_bucket",Key="filename.txt") file = response["Body"] pd.read_csv(file, header=14, delimiter="\t", low_memory=False) 错误是 OSError: Expected file path name or file-like object, got <class 'bytes'> type 如何将响应主体转换为大熊猫可以接受的格式? pd.read_csv(io.StringIO(file), header=14, delimiter="\t", low_memory=False) returns TypeError: …

14
从boto3检索S3存储桶中的子文件夹名称
使用boto3,我可以访问我的AWS S3存储桶: s3 = boto3.resource('s3') bucket = s3.Bucket('my-bucket-name') 现在,存储桶包含文件夹first-level,例如,文件夹本身包含几个带有时间戳的子文件夹1456753904534。我需要知道这些子文件夹的名称来执行我的另一项工作,我想知道是否可以让boto3为我检索这些子文件夹。 所以我尝试了: objs = bucket.meta.client.list_objects(Bucket='my-bucket-name') 它提供了一个字典,其键“目录”为我提供了所有第三级文件,而不是第二级时间戳目录,实际上,我得到了一个包含以下内容的列表: {u'ETag':'“ etag”',u'Key':一级/ 1456753904534 / part-00014',u'LastModified':datetime.datetime(2016,2,29,13,52,24,tzinfo = tzutc()), u'所有者':{u'DisplayName':'所有者',u'ID':'id'}, u'Size':大小,u'StorageClass':'storageclass'} 您可以看到在这种情况下part-00014已检索到特定文件,而我想单独获取目录的名称。原则上,我可以从所有路径中删除目录名称,但是在第三级检索所有内容以得到第二级是很丑陋且昂贵的! 我也尝试过这里的报道: for o in bucket.objects.filter(Delimiter='/'): print(o.key) 但是我没有得到所需级别的文件夹。 有办法解决吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.