我正在尝试使用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/
,则可以正常工作,但是我希望文件在本地计算机上。预先感谢。
答案 0 :(得分:1)
该脚本必须在您的本地Windows计算机上运行,而不是在EC2实例上。
或者,您可以简单地使用aws cli
aws s3 cp s3://sfbucket.myBucket/sf_events.json /Users/Documents/my_file.json
答案 1 :(得分:1)
当您尝试使用EC2实例下载文件时,本机不知道您的本地路径/Users/Documents/my_file.json
您有两个选择:
直接在本地计算机上运行此脚本。 在这种情况下,您必须在本地计算机上运行此脚本,并确保您有权访问此存储桶。
在EC2实例中运行此脚本并复制。
在这种情况下,您必须将文件下载到/home/ubuntu/
的某个位置,然后在本地计算机中从EC2复制。
您可以使用[SCP] [1]
您可以在本地计算机上安装SCP服务器,但问题是您的本地计算机可能没有私有IP,因此每次更改本地IP时都必须更新脚本。也许您应该考虑直接在EC2实例上对该文件执行任何操作,或者如果它是真正的手动操作,也许通过电子邮件发送?