使用 storbinary 将 S3 文件放到 FTP 服务器而不下载到本地临时文件

Put S3 file to FTP server using storbinary without downloading to a local temporary file

我正在尝试使用 Glue Python shell 将 S3 文件放入 FTP 服务器。下面给出的是代码。从 S3 获取文件后我被卡住了。尝试了 storbinary 的几种方法,但都是徒劳的。如果我们使用 Python 从本地尝试,这很容易,但由于这是来自 Glue/Lambda,文件处理部分有点棘手。

import ftplib
import boto3
from io import BytesIO,StringIO
ftp = ftplib.FTP()
ftp.connect('xxx',yyy)
ftp.login('uname','passwd')
ftp.cwd('path')
s3 = boto3.client('s3')
file = s3.get_object(Bucket='my_bucket',Key='myfolder/myfile.txt')
data = file['Body'].read()
with open(data,"rb") as f:
    ftp.storbinary('STOR test12.txt',f)

在行 file = s3.get_object(Bucket='my_bucket',Key='myfolder/myfile.txt') 之后,对接下来的步骤有点困惑。感谢任何有关如何完成此操作的帮助。

您将需要使用类似 BytesIO/StringIO 类文件的对象:

b = BytesIO(file['Body'].read())
ftp.storbinary('STOR test12.txt', b)

(未经测试,只是一个概念)