【发布时间】:2021-06-03 19:43:21
【问题描述】:
我尝试使用不同的库作为 s3fs 并编写了一个新代码,它也返回了相同的错误。这段代码在我的笔记本电脑上运行良好,我可以在 S3 存储桶中看到来自 FTP 服务器的文件,但在 lambda 上运行没有运气。处理程序名称已在 lambda 中更新。尝试下载文件本身时似乎出了点问题。 我是编码新手,尤其是 Python。欢迎任何帮助或见解。 lambda 执行时的错误是: 下载:on_dth2_tv_sources_v22_20210602.xml.gz [错误] OSError:[Errno 30] 只读文件系统:'on_dth2_tv_sources_v22_20210602.xml.gz' Traceback(最近一次调用最后一次):
代码是:
import boto3
import os
import ftplib
#FTP HOST AND CREDENTIALS
FTP_HOST = "*******"
FTP_USER = "*****"
FTP_PASS = "*****"
#AWS Bucket
s3 = boto3.resource('s3')
bucket = "*******"
def lambda_handler(event, context):
Epg_Ftp = ftplib.FTP(FTP_HOST) #Connecting to FTP server
Epg_Ftp.login(FTP_USER, FTP_PASS) #logging in to FTP
print(Epg_Ftp.pwd())
path = "*****" #epg directory
Epg_Ftp.cwd(path) #moving to epg directory
print(Epg_Ftp.pwd())
filenames = Epg_Ftp.nlst() # get filenames within the directory
# print(filenames)
for file in filenames:
print(f"\nDownloading : {file}")
with open(file, "wb") as bfile:
Epg_Ftp.retrbinary(f"RETR {file}", bfile.write)
s3.meta.client.upload_file( + file, bucket, file) #uploading to S3
print(f"File {file} uploaded to S3")
Epg_Ftp.quit
【问题讨论】:
标签: python amazon-web-services amazon-s3 aws-lambda ftp