如何使用alexa节点sdk将我的alexa应用程序连接到dynamo db?

时间:2017-04-14 19:43:36

标签: node.js aws-lambda alexa alexa-skills-kit

我创建了一个lambda函数,根据连接到数据库所需的文档,尝试通过Alexa Skills Kit for Node与Dynamo DB建立连接

r

出于某种原因,我收到以下错误

alexa.dynamoDBTableName = 'YourTableName'; // That's it!

奇怪的是,我创建了一个名为lambda_full_access的新卷并为技能改变了它,但它仍然假设另一个卷。我做错了什么。

enter image description here

2 个答案:

答案 0 :(得分:0)

我不知道你是否已经弄清楚了,但你必须自己编辑JSON权限。因此,当您创建新的IAM角色时,请打开“高级设置”并将JSON的内容更改为:

<form action="/jadmin/updatebulkexpirationdate" method="post">
        @foreach ($users as $user)
            <tr>
                <td id="name" value="{{$user->domain}}">{{ $user->domain}}</td>
                <input type="hidden" name="domain" value="{{$user->domain}}">
                <td>{{ $user->where('plan_expiration', $user->plan_expiration)->where('domain', $user->domain)->count()}}</td>
                <td id="oldDate>{{ $user->plan_expiration }}</td>
                <input type="hidden" name="oldDate" value="{{$user->plan_expiration}}">
                <td><button class="btn btn-default" id="newBulkExpiratioDateUpdate" type="submit">Set New Expiration Date</button></td>
            </tr>
        @endforeach
        </form>

Above提供对DynamoDB的完全访问权限。 AWS上也提供了其他权限的JSON。

答案 1 :(得分:0)

这显然是许可问题。您已选择角色&#34; lambda_full_access&#34;。如果您已创建该角色,请检查您是否已为该角色授予dynamoDB GetItem权限。如果您选择了其中一个默认角色,则可以编辑该角色并使用以下策略附加自定义策略,

&#13;
&#13;
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "YouID",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:Scan"
            ],
            "Resource": [
                "YOUR DYNAMODB ARN HERE"
            ]
        }
    ]
}
&#13;
&#13;
&#13;

这意味着现在您的角色将只有&#34; GetItem&#34;具有完整的lambda访问权限和dynamoDB访问权限。和&#34;扫描&#34;。如果你想要更多的权限,比如&#34; PutItem&#34;等你可以添加它。

或者,您可以创建自定义角色,并可以为Lambda访问附加策略,并可以使用上述设置创建自定义策略。