我想從電子郵件中提取附件並將其保存到我的新S3存儲桶中。到目前爲止,我已經配置了AWS Simple Email Service來攔截傳入的電子郵件。現在我有一個AWS lambda python函數,它在S3 Put上觸發。通過電子郵件(通過SES)提取並保存附件到AWS S3
直到它工作。但是我的lambda錯誤地說:「[Errno 2]沒有這樣的文件或目錄:'abc.docx':OSError」。我看到在S3的原始電子郵件中提到了名稱爲abc.docx的附件。
我假設問題出在我的upload_file中。你能幫我在這裏嗎?
請在下面找到我的代碼的相關部分。
s3 = boto3.client('s3')
s3resource = boto3.resource('s3')
waiterFlg = s3.get_waiter('object_exists')
waiterFlg.wait(Bucket=bucket, Key=key)
response = s3resource.Bucket(bucket).Object(key)
message = email.message_from_string(response.get()["Body"].read())
if len(message.get_payload()) == 2:
attachment = msg.get_payload()[1]
s3resource.meta.client.upload_file(attachment.get_filename(), outputBucket, attachment.get_filename())
else:
print("Could not see file/attachment.")
您可以嘗試將附件下載到Lambda中的/ tmp目錄,然後上載到S3。 – Ashan
事實上,我正在嘗試,現在似乎工作。非常感謝您的幫助。下面的代碼幫助解決了這個問題。('/ tmp/newFile.docx','wb')。write(attachment.get_payload(decode = True)) s3r.meta.client.upload_file('/ tmp/newFile。 docx',outputBucket,attachment.get_filename()) – user3567195