Локальный вызов AWS SAM завершается с ошибкой ImportModuleError, несмотря на успешное развертывание AWSPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Локальный вызов AWS SAM завершается с ошибкой ImportModuleError, несмотря на успешное развертывание AWS

Сообщение Anonymous »

Я работаю над бессерверным приложением, используя AWS SAM (модель бессерверного приложения) с несколькими функциями Lambda, написанными на Python 3.12. Развертывание в AWS работает безупречно, но когда я пытаюсь вызвать UploadAudioFunction локально, используя локальный вызов sam, я сталкиваюсь с ошибкой ImportModuleError. Вот подробное описание моей настройки и проблемы, с которой я столкнулся.
Конфигурация шаблона (template.yaml):

Код: Выделить всё

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
# Create Track Function
CreateTrackFunction:
Type: AWS::Serverless::Function
Properties:
Handler: tracks.create_track.lambda_handler
Runtime: python3.12
CodeUri: ./tracks
Policies:
- DynamoDBCrudPolicy:
TableName: Tracks

# Update Track Function
UpdateTrackFunction:
Type: AWS::Serverless::Function
Properties:
Handler: tracks.update_track.lambda_handler
Runtime: python3.12
CodeUri: ./tracks
Policies:
- DynamoDBCrudPolicy:
TableName: Tracks

# Delete Track Function
DeleteTrackFunction:
Type: AWS::Serverless::Function
Properties:
Handler: tracks.delete_track.lambda_handler
Runtime: python3.12
CodeUri: ./tracks
Policies:
- DynamoDBCrudPolicy:
TableName: Tracks

# List Tracks Function
ListTracksFunction:
Type: AWS::Serverless::Function
Properties:
Handler: tracks.list_tracks.lambda_handler
Runtime: python3.12
CodeUri: ./tracks
Policies:
- DynamoDBReadPolicy:
TableName: Tracks

# Upload Audio Function
UploadAudioFunction:
Type: AWS::Serverless::Function
Properties:
Handler: upload_audio.lambda_handler
Runtime: python3.12
CodeUri: ./audio
Policies:
- S3WritePolicy:
BucketName: wave-loft-audio-bucket

Описание проблемы:
Когда я пытаюсь вызвать UploadAudioFunction локально с помощью следующей команды:

Код: Выделить всё

sam local invoke UploadAudioFunction --event events/event.json --debug
Я получаю следующую ошибку:

Код: Выделить всё

[ERROR] Runtime.ImportModuleError: Unable to import module 'upload_audio': No module named 'upload_audio'
Структура проекта

Код: Выделить всё

demo-app/
├── template.yaml
├── tracks/
│   ├── create_track.py
│   ├── update_track.py
│   ├── delete_track.py
│   └── list_tracks.py
├── audio/
│   └── upload_audio.py
└── events/
└── event.json
Вопрос:
Почему функция UploadAudioFunction работает правильно при развертывании на AWS, но завершается с ошибкой ImportModuleError при локальном вызове с помощью SAM? Как устранить это несоответствие для успешной локальной отладки функции?
Журнал ошибок:

Код: Выделить всё

[ERROR] Runtime.ImportModuleError: Unable to import module 'upload_audio': No module named 'upload_audio'
Traceback (most recent call last):
14 Dec 2024 18:11:40,432 [ERROR] (rapid) Init failed InvokeID= error=Runtime exited with error: exit status 1
Кроме того, я использую Rancher Desktop и не могу использовать Docker Desktop

Подробнее здесь: https://stackoverflow.com/questions/792 ... ws-deploym
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»