【问题标题】:How do I connect my alexa app to dynamo db with the alexa node sdk?如何使用 alexa 节点 sdk 将我的 alexa 应用程序连接到 dynamo db?
【发布时间】:2018-08-10 22:27:01
【问题描述】:

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

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

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

User: arn:aws:sts::XXXXXXXXXXX:assumed-role/lambda_basic_dynamo/MyApp is not authorized to perform: dynamodb:GetItem on resource: arn:aws:dynamodb:us-east-1:XXXXXXXXX:table/McCannHealth"

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

【问题讨论】:

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


    【解决方案1】:

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

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "cloudwatch:*",
                    "cognito-identity:ListIdentityPools",
                    "cognito-sync:GetCognitoEvents",
                    "cognito-sync:SetCognitoEvents",
                    "dynamodb:*",
                    "events:*",
                    "iam:ListAttachedRolePolicies",
                    "iam:ListRolePolicies",
                    "iam:ListRoles",
                    "iam:PassRole",
                    "kinesis:DescribeStream",
                    "kinesis:ListStreams",
                    "kinesis:PutRecord",
                    "lambda:*",
                    "logs:*",
                    "s3:*",
                    "sns:ListSubscriptions",
                    "sns:ListSubscriptionsByTopic",
                    "sns:ListTopics",
                    "sns:Subscribe",
                    "sns:Unsubscribe",
                    "sns:Publish",
                    "sqs:ListQueues",
                    "sqs:SendMessage",
                    "kms:ListAliases",
                    "ec2:DescribeVpcs",
                    "ec2:DescribeSubnets",
                    "ec2:DescribeSecurityGroups",
                    "iot:GetTopicRule",
                    "iot:ListTopicRules",
                    "iot:CreateTopicRule",
                    "iot:ReplaceTopicRule",
                    "iot:AttachPrincipalPolicy",
                    "iot:AttachThingPrincipal",
                    "iot:CreateKeysAndCertificate",
                    "iot:CreatePolicy",
                    "iot:CreateThing",
                    "iot:ListPolicies",
                    "iot:ListThings",
                    "iot:DescribeEndpoint"
                ],
                "Resource": "*"
            }
        ]
    }
    

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

    【讨论】:

      【解决方案2】:

      这显然是权限问题。您选择了一个角色“lambda_full_access”。如果您已创建该角色,请检查您是否已授予该角色的 dynamoDB GetItem 权限。如果您选择了默认角色之一,那么您可以编辑该角色并使用以下策略附加自定义策略,

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

      这意味着现在您的角色将只有“GetItem”和“Scan”的完整 lambda 访问权限和 dynamoDB 访问权限。如果您想要更多权限,例如“PutItem”等,您可以添加它。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-09
        • 1970-01-01
        相关资源
        最近更新 更多