2017-04-14 1 views
0

Ich habe eine Lambda-Funktion geschaffen, die eine Verbindung mit Dynamo DB durch die Alexa Skills Kit for Node entsprechend der Dokumentation zu machen versucht, alles was Sie brauchen, um die Datenbank zu verbinden istWie verbinde ich meine Alexa App mit dynamo db mit dem Alexa Node SDK?

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

Aus irgendeinem Grund habe ich die folgende Fehlermeldung erhalten

Die seltsame Sache ist, dass ich neue Rolle namens lambda_full_access und änderte es für die Fähigkeit, aber es nimmt immer noch eine weitere Rolle. Was mache ich falsch.

enter image description here

Antwort

0

Ich weiß nicht, ob Sie es schon herausgefunden, aber Sie würden die Erlaubnis JSON selbst bearbeiten müssen. Also, wenn Ihr eine neue IAM Rolle erstellen, öffnen Sie die „Erweiterte Einstellungen“ und ändern Sie den Inhalt des 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": "*" 
     } 
    ] 
} 

Above bietet einen vollständigen Zugang zu DynamoDB. JSON für andere Berechtigungen ist auch in AWS verfügbar.

0

Dies ist eindeutig Genehmigungsproblem. Sie haben eine Rolle "lambda_full_access" ausgewählt. Wenn Sie diese Rolle erstellt haben, überprüfen Sie, ob Sie dynamoDB GetItem die Berechtigung für diese Rolle erteilt haben. Wenn Sie eine der Standardrolle ausgewählt haben, dann können Sie entweder können Sie diese Rolle bearbeiten und eine benutzerdefinierte Richtlinie anhängen mit unter Politik,

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

Es bedeutet jetzt Ihre Rolle voll Lambda-Zugang haben und dynamoDB Zugriff nur für "GetItem" und "Scan". Wenn Sie mehr Berechtigungen wie "PutItem" usw. möchten, können Sie es hinzufügen.

Alternativ können Sie eine benutzerdefinierte Rolle erstellen und Richtlinien für den Lambda-Zugriff anhängen und eine benutzerdefinierte Richtlinie mit den oben angegebenen Einstellungen erstellen.

Verwandte Themen