使用lambda python将文件上传到s3后,用表单数据更新mysql

2024-04-24 07:51:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用一个表单上传一个文件到S3。表单中还有其他几个数据,虽然文件确实上传到bucket中,但我不明白如何将其余数据用于Lambda函数来更新RDS实例中的mysql数据库。在

这是我的表格(改编自http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html

    <form name='form10' action="http://<?= $my_bucket ?>.s3.amazonaws.com/" method="post" enctype="multipart/form-data" onsubmit="return v.exec()">
        <input type="hidden" name="key" value="videos/${filename}" />
        <input type="hidden" name="acl" value="public-read" />
        <input type="hidden" name="X-Amz-Credential" value="<?= $access_key; ?>/<?= $short_date; ?>/<?= $region; ?>/s3/aws4_request" />
        <input type="hidden" name="X-Amz-Algorithm" value="AWS4-HMAC-SHA256" />
        <input type="hidden" name="X-Amz-Date" value="<?=$iso_date ; ?>" />
        <input type="hidden" name="Policy" value="<?=base64_encode($policy); ?>" />
        <input type="hidden" name="X-Amz-Signature" value="<?=$signature ?>" />
        <input type="hidden" name="success_action_redirect" value="<?= $success_redirect ?>" /> 

        <table summary="Playlist de Campa&ntilde;a" align=center border="1">
            <tr><td colspan="2" align="center">Agregar Videos a Playlist</td></tr>
            <tr><td>Selecciona tu Archivo:</td><td><input type="file" name="file" /></td></tr>
            <tr><td>Descripci&oacute;n del Video</td><td><input type="text" name="desc_video" value="" size="50"/></td></tr>
            <tr><td>Fecha Inicio:
                <input type=text name=start_date value="<?PHP echo $fecha_inicio; ?>"><a href="javascript:show_calendar('form10.start_date');" ><img src="images/show-calendar.gif" width="24" height="22" border="0" alt=""></a>
                </td><td>Fecha Terminaci&oacute;n
                <input type=text name=end_date value="<?PHP echo $fecha_termina;?>"><a href="javascript:show_calendar('form10.end_date');" ><img src="images/show-calendar.gif" width="24" height="22" border="0" alt=""></a>
                </td></tr>
            <tr><td>Hora Inicio:
                    <select name="hora_inicio">
                        <?PHP 
                        for ($hr = 0; $hr < 24; $hr++){
                            echo"<option value=$hr>$hr</option>";
                        } 
                        ?>
                            </select>:
                    <select name="mins_inicio">
                        <?PHP 
                        for ($hr = 0; $hr < 60; $hr+=5){
                            echo"<option value=$hr>$hr</option>";
                        } 
                        ?>
                        <option value="59">59</option>
                    </select></td>
            <td>Hora Terminaci&oacute;n:
                    <select name="hora_final">
                        <?PHP 
                        for ($hr = 0; $hr < 24; $hr++){
                            if($hr<>23){
                               echo"<option value=$hr>$hr</option>"; 
                            } else {
                               echo"<option value=$hr selected>$hr</option>"; 
                            }

                        } 
                        ?>
                            </select>:
                    <select name="mins_final">
                        <?PHP 
                        for ($hr = 0; $hr < 60; $hr+=5){
                            echo"<option value=$hr>$hr</option>";
                        } 
                        ?>
                        <option value="59" selected>59</option>
                    </select></td>        
            </tr>
            <tr><td colspan="2" align="center"><input type="submit" value="Continuar" /></td></tr>
        </table>
        <input type="hidden" name="step" value="sube" />
        <input type="hidden" name="tipo" value="<?PHP echo $tipo; ?>" />
        <input type="hidden" name="id_campana" value="<?PHP echo $id_campana; ?>" />
        <input type="hidden" name="fecha_inicio" value="<?PHP echo $fecha_inicio; ?>" />
        <input type="hidden" name="fecha_termina" value="<?PHP echo $fecha_termina; ?>" />

    </form>   

如你所见,我有一堆变量需要保存到数据库中,但是我不知道如何在Lambda函数中调用它们。Lambda函数可以写入数据库。当S3接收到一个sql语句时,它自己就可以写一个sql语句了。 这是我使用的lambda函数,(改编自:https://www.isc.upenn.edu/accessing-mysql-databases-aws-python-lambda-function

^{pr2}$

有什么办法让我做到这一点吗?我确信这是很愚蠢的事情,但我已经尝试了好几天了,我只是不明白。在


Tags: nameechoinputdatevaluetypehrselect
1条回答
网友
1楼 · 发布于 2024-04-24 07:51:10

一旦成功地将所有内容上传到S3,就可以创建一个从S3到Lambda的触发器。该事件包含有关上载的S3对象的所有信息。在

您还可以读取S3对象,提取所需的字段并将其存储到RDS。在

下面是为Lambda创建S3触发器的文档。在

http://docs.aws.amazon.com/lambda/latest/dg/with-s3.html

您还可以根据new post、update或delete自定义触发器。在

希望这有帮助。在

相关问题 更多 >