我试图编写一个相当简单的AWS lambda函数,该函数在S3存储桶上接收创建事件,对数据库交叉引用该文件,如果发现该文件属于某种类型,则复制它到另一个桶。通过配置我的VPC并为lambda函数中使用的角色分配适当的权限,我可以轻松导出包含pymysql
的部署文件,并允许我与数据库通信。我真正挂断的地方就是与S3沟通。在超时之前,以下代码将一直运行直到打印"base s3 connection successful"
。它超时我是否将超时阈值设置为30秒或5分钟。
我尝试过手动创建连接,以及依赖lambda环境提供的环境变量并获得相同的结果。我的问题与使用boto
而不是boto3
有关吗?
我该如何解决这个问题?
干杯,
亚伦
from __future__ import print_function
import os
import json
import urllib
import boto3
import boto
from boto.s3.key import Key
import pymysql
print(os.environ)
import credentials
CRM_HOST = credentials.CRM_HOST
CRM_USER = credentials.CRM_USER
CRM_PASS = credentials.CRM_PASS
AWS_ACCESS_KEY_ID = credentials.AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY = credentials.AWS_SECRET_ACCESS_KEY
try:
conn = pymysql.connect(host=CRM_HOST, user=CRM_USER,\
passwd=CRM_PASS, db='oro_crm')
print('SQL connection successful')
except Exception, e:
print('SQL connection failed')
print(str(e))
try:
# s3 = boto.connect_s3(aws_access_key_id=AWS_ACCESS_KEY_ID,\
# aws_secret_access_key=AWS_SECRET_ACCESS_KEY)
s3 = boto.connect_s3()
print('base S3 connection successful')
src = s3.get_bucket('s3-crm-dev')
print('got ocr source bucket')
dst = s3.get_bucket('s3-crm-input')
print('got ocr input bucket')
out_dst = s3.get_bucket('s3-crm-output')
print('got ocr output bucket')