Python: [Ошибка 30] Файловая система, доступная только для чтения: ‘final_for_sure1.wav.5e3DD1F9

#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?