我正在尝试用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')
Run Code Online (Sandbox Code Playgroud)
在博托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)
Run Code Online (Sandbox Code Playgroud)
要么
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 in iter(lambda: key['Body'].read(4096), b''):
f.write(chunk)
Run Code Online (Sandbox Code Playgroud)
它工作正常.我想知道是否有任何"本机"boto3功能可以执行相同的任务?
我这样读了我的S3桶中的文件名
objs = boto3.client.list_objects(Bucket='my_bucket')
while 'Contents' in objs.keys():
objs_contents = objs['Contents']
for i in range(len(objs_contents)):
filename = objs_contents[i]['Key']
Run Code Online (Sandbox Code Playgroud)
现在,我需要获取文件的实际内容,类似于open(filename).readlines().什么是最好的方法?
我试图在Elastic Beanstalk上运行一个python应用程序,它需要拥有SQS和Dynamo DB的权限.
我在〜/ .aws/config文件下创建了一个配置文件,如下所示:
[profile yolo]
aws_access_key_id = some-key
aws_secret_access_key = some-secret
region = some-region
Run Code Online (Sandbox Code Playgroud)
并开始弹性豆茎像:
eb init --profile yolo
Run Code Online (Sandbox Code Playgroud)
但是当我在线查看日志时,它说明:
botocore.exceptions.ProfileNotFound: The config profile (yolo) could not be found
Run Code Online (Sandbox Code Playgroud)
如何让boto3知道弹性beanstalk环境中的这个配置文件?
谢谢.