簡體   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