相关疑难解决方法(0)

如何使用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')
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功能可以执行相同的任务?

python boto amazon-web-services boto3

114
推荐指数
6
解决办法
12万
查看次数

使用boto3从S3存储桶中读取文件内容

我这样读了我的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().什么是最好的方法?

python amazon-s3 amazon-web-services boto3

35
推荐指数
5
解决办法
8万
查看次数

代码在AWS弹性beanstalk上运行时botocore.exceptions.ProfileNotFound,但在本地它没关系

我试图在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环境中的这个配置文件?

谢谢.

python amazon-web-services amazon-elastic-beanstalk boto3

8
推荐指数
2
解决办法
5198
查看次数