#python #amazon-web-services #amazon-s3 #aws-lambda
#python #amazon-web-services #amazon-s3 #aws-лямбда
Вопрос:
Я вижу приведенную ниже ошибку из моей лямбда-функции. Я пытаюсь развернуть скрипт python в AWS Lambda, но получаю эту ошибку. Вот мой код:
import boto3
import os
from pydub import AudioSegment
def my_handler(event,context):
s3 = boto3.client('s3')
url1 = event["url1"]
split = url1.split("https://")
split1= split[1].split(".s3.eu-central-1.amazonaws.com/")
BUCKET_NAME = split1[0]
BUCKET_FILE_NAME_1 = split1[1]
LOCAL_FILE_NAME_1 = '/tmp/final_for_sure1.wav'
s3.download_file(BUCKET_NAME, BUCKET_FILE_NAME_1, LOCAL_FILE_NAME_1)
url2 = event["url2"]
split2 = url2.split("https://")
split3= split2[1].split(".s3.eu-central-1.amazonaws.com/")
BUCKET_NAME_2 = split3[0]
BUCKET_FILE_NAME_2 = split3[1]
LOCAL_FILE_NAME_2 = '/tmp/final_for_sure2.wav'
s3.download_file(BUCKET_NAME, BUCKET_FILE_NAME_2, LOCAL_FILE_NAME_2)
left_channel = AudioSegment.from_wav(LOCAL_FILE_NAME_1)
right_channel = AudioSegment.from_wav(LOCAL_FILE_NAME_2)
size_of_first = os.stat(LOCAL_FILE_NAME_1).st_size
size_of_second = os.stat(LOCAL_FILE_NAME_2).st_size
if size_of_first > size_of_second:
stereo_sound = left_channel.overlay(right_channel)
elif size_of_first < size_of_second:
stereo_sound = right_channel.overlay(left_channel)
else:
stereo_sound = right_channel.overlay(left_channel)
stereo_sound.export("/tmp/final_final.wav", 'wav')
s3 = boto3.resource('s3')
BUCKET = os.environ.get('upload_destination')
print(BUCKET)
s3.Bucket(BUCKET).upload_file("/tmp/final_final.wav", "final_final.wav")
И это ошибка, в моем Pycharm, когда я его запускаю, все было в порядке:
Response:
{
"errorMessage": "[Errno 30] Read-only file system: 'final_for_sure1.wav.5e3DD1F9'",
"errorType": "OSError",
"stackTrace": [
" File "/var/task/hello.py", line 15, in my_handlern s3.download_file(BUCKET_NAME, BUCKET_FILE_NAME_1, LOCAL_FILE_NAME_1)n",
" File "/var/runtime/boto3/s3/inject.py", line 170, in download_filen return transfer.download_file(n",
" File "/var/runtime/boto3/s3/transfer.py", line 307, in download_filen future.result()n",
" File "/var/runtime/s3transfer/futures.py", line 106, in resultn return self._coordinator.result()n",
" File "/var/runtime/s3transfer/futures.py", line 265, in resultn raise self._exceptionn",
" File "/var/runtime/s3transfer/tasks.py", line 126, in __call__n return
]
}
*** Пожалуйста, помогите, если можете. Я буду очень признателен ***
Комментарии:
1. Добро пожаловать в SO. Из любопытства, имеет ли учетная запись доступ на запись в /tmp?