AWS Lambda至DynamoDB超时

时间:2018-07-14 17:49:23

标签: python-3.x aws-lambda amazon-dynamodb

我正在尝试创建一个Lambda函数(Python 3.6),该函数将一些内容写入DynamoDB。目前,我只是想让世界变得更好。但是,无论何时我实际上尝试用发电机执行某些操作,而不仅仅是连接到桌子,我的Lambda函数都会超时。你能请教吗?

以下是一些相关信息:

  • 我已将Lambda配置为在VPC中运行(这是一项要求,因为最终它将由Alexa Skills Kit触发)
  • 我的lambda和dynamo都在US-West2(俄勒冈州)
  • 我已将AWSLambdaDynamoDBExecutionRoleAmazonDynamoDBFullAccess添加到Lambda函数使用的IAM角色中。

注意:我对AWS比较陌生,所以如果我缺少明显的东西,请原谅我。

代码如下:

import boto3

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('some_table')

table.put_item(
    Item = {
        'person_id': 1,
        'msg': 'hello world'
    }
)

在上面的代码中,import,dynamodb和table语句执行没有问题。添加table.put_item呼叫后,我收到一条Task timed out消息。上面的代码基于https://boto3.readthedocs.io/en/latest/guide/dynamodb.html#using-an-existing-table

预先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果在VPC内配置了lambda函数,则由您决定是否提供与DynamoDB AWS服务的连接。

对于DynamoDB,最简单的方法是为DynamoDB创建VPC端点

  1. 这将为您的VPC创建与DynamoDB通信的专用路径
  2. 它还将自动在主路由表中添加自定义路由

enter image description here

程序:

aws ec2 create-vpc-endpoint --vpc-id vpc-xxxxx --service-name com.amazonaws.us-east-2.dynamodb --route-table-ids rtb-xxxxx

或者您可以执行same procedure via the AWS Console

当心:如果您删除了允许所有传出流量的安全组默认出口规则,则需要添加一个安全组出站规则,其目的地为VPC端点的引用(即:pl -43a43c1)

此后,假设Lambda函数已连接到正确的VPC,具有正确路由的子网(包括VPC端点路由)以及在有权访问VPC端点的安全组中,则Lambda函数应该能够与DynamoDB通信

在lambda函数中使用的代码示例:

import boto3

dynamodb_client = boto3.client('dynamodb', endpoint_url="http://dynamodb.us-east-2.amazonaws.com")