Я создал лямбду в Python (используя Serverless), которая будет вызываться сообщением SQS.
handler.py
s3 = boto3.resource('s3')
def process(event, context):
response = None
# for record in event['Records']:
record = event['Records'][0]
message = dict()
try:
message = json.loads(record['body'])
s3.meta.client.download_file(const.bucket_name, 'class/raw/photo/' + message['photo_name'], const.raw_filepath + message['photo_name'])
...
response = {
"statusCode": 200,
"body": json.dumps(event)
}
except Exception as ex:
error_msg = 'JOB_MSG: {}, EXCEPTION: {}'.format(message, ex)
logging.error(error_msg)
response = {
"statusCode": 500,
"body": json.dumps(ex)
}
return response
const.py
bucket_name = 'test'
raw_filepath = '/var/task/raw/'
Я создал папку «raw», того же уровня, что и файл handler.py, а затем развернул серверную лямбду.
Я получил сообщение об ошибке (из CloudWatch) при запуске лямбды.
No such file or directory: u'/var/task/raw/Student001.JPG.94BBBAce'
Как я понимаю, папка lambda недоступна или папка не может быть создана в lambda.
На всякий случай я разделяю цели лямбды:
- скачать файл S3 raw
- изменить размер файла и загрузить новый файл в другую корзину S3
Любое предложение приветствуется.