从S3将文件下载到本地设备时出错

时间:2019-01-04 15:30:27

标签: python amazon-web-services amazon-s3

我正在尝试使用以下代码将文件从Amazon S3存储桶下载到我的本地设备,但出现错误消息“无法找到凭证”

以下是我编写的代码:

    import boto3
    import botocore

    BUCKET_NAME = 'my-bucket' 
    KEY = 'my_image_in_s3.jpg' 

    s3 = boto3.resource('s3')

    try:
        s3.Bucket(BUCKET_NAME).download_file(KEY, 'my_local_image.jpg')
    except botocore.exceptions.ClientError as e:
        if e.response['Error']['Code'] == "404":
            print("The object does not exist.")
        else:
            raise

有人可以帮我吗?预先感谢。

2 个答案:

答案 0 :(得分:2)

AWS通过这种方式将共享凭证系统用于AWS CLI和所有其他AWS开发工具包,不存在将AWS凭证泄漏到某些代码存储库的风险,AWS安全实践建议使用通常位于linux上的共享凭证文件。 / p>

~/.aws/credentials 

此文件包含一个访问密钥和秘密密钥,所有sdk和aws都使用cli,该文件可以使用此命令手动创建或自动创建

aws configure

它将询问一些问题并为您创建凭据文件,请注意,在访问AWS资源之前,您需要创建一个具有适当权限的用户。

有关更多信息,请单击下面的链接-:

AWS cli configuration

答案 1 :(得分:1)

您没有使用创建的会话下载文件,而是使用了s3客户端。如果要使用客户端,则需要指定凭据。

your_bucket.download_file('k.png', '/Users/username/Desktop/k.png')

s3 = boto3.client('s3', aws_access_key_id=... , aws_secret_access_key=...)
s3.download_file('your_bucket','k.png','/Users/username/Desktop/k.png')