Моя RDS имеет ссылку на изображение, хранящееся в s3, как преобразовать эту ссылку в изображение в функции лямбда-питона - PullRequest
0 голосов
/ 19 февраля 2019

Я новичок в бэкэнд-разработке и Python.Я вставил ссылку на изображение, хранящееся в корзине S3 в RDS, сейчас выполняю запрос к этой таблице в функции лямбда-питона, и она возвращает строку, как и ожидалось, как я могу заставить эту лямбда-функцию возвращать изображение, используя эту ссылку.Ниже моя функция лямбда

#!/usr/bin/python
import sys
import logging
import pymysql
import json

rds_host="host"    
name="name"
password="passwdord"
db_name="DB"
port = 3306

def save_events(event):
      """
       This function fetches content from mysql RDS instance
      """

    result = []
    conn = pymysql.connect(rds_host, user=name, passwd=password, db=db_name, connect_timeout=30)

    with conn.cursor() as cur:
        cur.execute("SELECT * FROM bodyPart")

        for row in cur:
            result.append(list(row))
    print ("Data from RDS...")
    print (result)

    cur.close()

    print(json.dumps({'bodyParts':result}))

def lambda_handler(event, context):
    save_events(event)

    return result

Ниже вывод этой функции:

Response:

[

  [

    1,

    "Chest",

    "s3://imagename"

  ],

  [

    2,

    "Shoulder",

    null

  ],

  [

    3,

    "Arms",

    null

  ]

]

1 Ответ

0 голосов
/ 19 февраля 2019

Поскольку ваш ответ от RDS содержит имя сегмента и имя файла, я бы просто использовал boto3 для получения файла.Вам нужно будет добавить соответствующие разрешения для вашей лямбды, чтобы получить доступ к вашему ведру.

Пример:

import boto3

s3 = boto3.client('s3')

my_bucket = <your bucket name goes here>
my_file = <your file path goes here>

image = s3.get_object(Bucket='my-bucket', Key='my_file')

Получение имени контейнера и имени файла просто потребует небольшой манипуляции со строками.

...