Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用boto3(python)将文件从s3下载到本地计算机_Python_Amazon S3_Amazon Ec2_Boto3 - Fatal编程技术网

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

使用boto3(python)将文件从s3下载到本地计算机,python,amazon-s3,amazon-ec2,boto3,Python,Amazon S3,Amazon Ec2,Boto3,我正在尝试使用python脚本将文件从AWS s3自动下载到本地机器。python脚本本身托管在ubuntu(AWSEC2实例)上,因此它无法识别本地机器上的目录 这是我的密码: 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_NAM

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

这是我的密码:

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

脚本必须在本地Windows计算机上运行,而不是在EC2实例上运行

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


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

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

您有两个选择:

  • 直接在本地计算机上运行此脚本。 在这种情况下,您必须在本地计算机上运行此脚本,并确保您有权访问此bucket

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


  • 您可以在本地计算机中安装SCP服务器,但问题是您的本地计算机可能没有专用IP,因此每次更改本地IP时,您都必须更新脚本。也许你应该考虑直接在EC2实例上处理这个文件,或者如果这是一个真正的手动操作,通过电子邮件发送,也许?

    当你试图使用EC2实例下载文件时,这台机器不知道你的本地路径
    /Users/Documents/my_file.json

    您有两个选择:

  • 直接在本地计算机上运行此脚本。 在这种情况下,您必须在本地计算机上运行此脚本,并确保您有权访问此bucket

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



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

    你是否在你的本地机器上运行这个代码,路径是
    /Users/Documents
    ?我不确定我是否理解你的评论。你是说代码应该是:s3.Bucket(Bucket_NAME)。下载_文件(KEY),/Users/Documents/?在哪里运行整个python脚本?如果它与
    /home/ubuntu
    一起工作,则意味着是一台linux机器,但不存在的路径是Windows onecorrect-我正在使用ubuntu(linux)运行它编辑的问题反映了这一点。您是否在具有路径
    /Users/Documents
    的本地计算机上运行此代码?我不确定是否理解您的评论。您是说代码应该是:s3.Bucket(Bucket\u NAME)。下载\u文件(键,'/Users/Documents/?那么您在哪里运行整个python脚本?如果它与
    /home/ubuntu
    一起工作,则意味着是一台linux机器,但不存在的路径是Windows onecorrect-我使用ubuntu(linux)运行它)编辑的问题反映了这一点。iTech-谢谢,但我已经将所有这些都设置为从EC2实例运行python代码,然后使用crontab调度作业。我希望能够在托管在EC2实例上的python脚本中完成这一操作。看起来您已经在上面的命令行中提供了一个解决方案,您有一个可以运行的解决方案吗n来自EC2实例上的python脚本?脚本和命令都会有相同的结果,在EC2实例上运行它们会将文件下载到EC2实例。如果您希望您的文件在本地计算机上,请从EC2实例复制它或在本地Windows机上运行命令/脚本。没有其他解决方案。我需要我们吗e boto3从EC2实例复制它?我在哪里可以找到关于这个的文档?如果您有
    ssh
    访问权限,可以使用
    scp
    从本地机器复制到EC2实例。老实说,最简单的方法是直接在本地机器上运行命令或脚本。iTech-谢谢,但我已经将所有这些设置为运行python cod然后使用crontab计划作业。我希望能够在托管在EC2实例上的python脚本中实现这一点。看起来您已经在上面的命令行中提供了一个解决方案,您是否有一个可以在EC2实例上从python脚本运行的解决方案?脚本和命令都具有相同的功能结果,在EC2实例上运行它们会将文件下载到EC2实例。如果您想在本地计算机上复制文件,请从EC2实例复制文件或在本地Windows计算机上运行命令/脚本。不可能有其他解决方案。我是否使用boto3从EC2实例复制文件?我在哪里可以找到有关此的文档?您可以使用c如果您有从本地机器到EC2实例的
    ssh
    访问权限,请使用
    scp
    进行opy。老实说,最简单的方法是直接在本地机器上运行命令或脚本。Erik-谢谢。这里的全部目标是能够从云运行所有内容;我正在EC2实例上使用此python脚本,并对其进行调度使用crontab每天运行一次。理想情况下,我希望找到某种方法将文件从s3输出到本地machi