通过 AWS Glue 下载 FTP 文件到 S3,无法识别 S3 路径

Download FTP file to S3 through AWS Glue, S3 path is not recognized

在 AWS Glue 作业中,我使用 ftplib 下载文件并将它们存储到 S3,代码如下:

from ftplib import FTP
ftp = FTP()
ftp.connect("ftp.ser.ver", 21)
ftp.login("user", "password")
remotefile='filename.txt'
download='s3://bucket/folder/filename.txt'
with open(download,'wb') as file:
    ftp.retrbinary('RETR %s' % remotefile, file.write)

我收到如下错误:

FileNotFoundError: [Errno 2] No such file or directory

运行 相同的代码通过本地并将下载路径更改为本地路径并且代码有效。我是 S3 和 Glue 的新手,不确定在哪里可以找到正确的文档。非常感谢任何见解和建议。

您无法下载 FTP 文件并将其直接保存到 S3。在将其上传到 S3 之前,您必须使用 memory-based 或 file-based 流将其保存在粘合环境中。

from boto3.session import Session
import boto3
from ftplib import FTP
ftp = FTP()
ftp.connect("ftp.ser.ver", 21)
ftp.login("user", "password")

with open("/tmp/filename.txt",'wb') as file:
    ftp.retrbinary("filename.txt", file.write)

s3 = boto3.client('s3')
with open("/tmp/filename.txt", "rb") as f:
    s3.upload_fileobj(f, "BUCKET_NAME", "OBJECT_NAME")