尝试在本地访问DynamoDB时超时

时间:2019-09-21 19:31:28

标签: amazon-web-services go amazon-dynamodb aws-sam-cli amazon-dynamodb-local

我可以使用我的代码访问AWS上的DynamoDB。我可以使用CLI访问本地DynamoDB。但是我不能让两个人互相交谈。

# deploying dynamodb
docker run \
    --detach \
    --tty \
    --interactive \
    --publish 8000:8000 \
    --name lokal_dynamodb amazon/dynamodb-local

# deploying Go with SAM
sam local start-api \
    --template sam/template.yaml \
    --region eu-central-1 \
    --profile default

创建会话

sess, err := session.NewSessionWithOptions(session.Options{
    // Provide SDK Config options, such as Region.
    Config: aws.Config{
        Endpoint: aws.String("http://localhost:8000/"),
        Region:   aws.String("eu-central-1"),
    },
})
if err != nil {
    logger.Println(err)
    return nil
}

返回错误

unction 'ShopFunction' timed out after 20 seconds
Function returned an invalid response (must include one of: body, headers, multiValueHeaders or statusCode in the response object). Response received: 
2019-09-21 21:22:03 127.0.0.1 - - [21/Sep/2019 21:22:03] "GET /shop/f10b7ab5-9508-4cfd-acb2-efb2299dd460 HTTP/1.1" 502 -

1 个答案:

答案 0 :(得分:0)

由于某种原因,SAM Lambda无法连接到localhost DynamoDB,因此您需要创建一个环回IP地址,以供其访问。

ifconfig lo0 alias 172.16.123.1

然后将会话配置更新为:

sess, err := session.NewSessionWithOptions(session.Options{
    // Provide SDK Config options, such as Region.
    Config: aws.Config{
        Endpoint: aws.String("http://172.16.123.1:8000/"),
        Region:   aws.String("eu-central-1"),
    },
})
if err != nil {
    logger.Println(err)
    return nil
}

https://github.com/awslabs/aws-sam-cli/issues/102#issuecomment-326177151