繁体   English   中英

使用 boto3 (python) 将文件从 s3 下载到本地机器

[英]Downloading a file from s3 to local machine using boto3 (python)

我正在尝试使用 python 脚本自动将文件从 AWS s3 下载到我的本地机器。 python 脚本本身托管在 ubuntu(AWS ec2 实例)上,因此它无法识别我本地机器上的目录。

这是我的代码:

import os
import boto3
from boto3.session import Session
print("this script downloads the file from s3 to local machine")

s3 = boto3.resource('s3')

BUCKET_NAME = 'sfbucket.myBucket'
KEY = 'sf_events.json'

s3.Bucket(BUCKET_NAME).download_file(KEY, '/Users/Documents/my_file.json')

print('end')

但是,这给了我以下错误:

FileNotFoundError: [Errno 2] No such file or directory: '/Users/Documents/my_file.json.CDC5FEf4'

谁能告诉我我做错了什么? 如果我将输出目录替换为/home/ubuntu/它工作正常,但我想要我的本地机器上的文件。 提前致谢。

该脚本必须在您的本地 Windows 机器上运行,而不是在 EC2 实例上运行。

或者,您可以简单地使用 aws cli

aws s3 cp s3://sfbucket.myBucket/sf_events.json /Users/Documents/my_file.json

当您尝试使用 EC2 实例下载文件时,此计算机不知道您的本地路径/Users/Documents/my_file.json

您有两个选择:

  1. 直接在本地机器上运行此脚本。 在这种情况下,您必须在本地计算机上运行此脚本并确保您有权访问此存储桶。

  2. 在 EC2 实例中运行此脚本并复制。 在这种情况下,您必须将文件下载到某个地方/home/ubuntu/然后在您的本地机器上从 EC2 复制一份。 你可以使用[SCP][1]

您可以在本地机器上安装 SCP 服务器,但问题是您的本地机器可能没有私有 IP,因此每次您的本地 IP 更改时,您都必须更新脚本。 也许您应该考虑直接在 EC2 实例上对这个文件做任何您需要做的事情,或者如果它是一个真正的手动操作,也许可以通过电子邮件发送?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM