Не разрешено выполнять: Dynamodb: сканирование лямбда - PullRequest
0 голосов
/ 04 октября 2018

Мне нужно сканировать базу данных DynamodB, но я получаю эту ошибку:

"errorMessage": "Произошла ошибка (AccessDeniedException) при вызове операции сканирования: Пользователь: arn: aws: sts:: 747857903140: предполагаемая роль / test_role / TestFunction не авторизован для выполнения: динамодат: сканирование ресурса: арн: aws: динамод: us-east-1: 747857903140: таблица / HelpBot "

Это мой лямбда-код (index.py):

import json
import boto3

client = boto3.resource('dynamodb')
table = client.Table('HelpBot')

def handler(event, context):
    table.scan()
    return {
        "statusCode": 200,
        "body": json.dumps('Hello from Lambda!')
    }

Это мой шаблон SAM (template.yml):

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources:
  MyFunction:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: index.handler
      Runtime: python3.6
      Policies:
        Version: '2012-10-17'
        Statement:
        - Effect: Allow
          Action:
          - dynamodb:Scan
          Resource: arn:aws:dynamodb:us-east-1:747857903140:table/HelpBot

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Применяются ли к лямбда-роли политики DynamoDB?

Перейти к

  1. IAM Перейти к политикам
  2. Выберите политику DynamoDB (попробуйте полный доступ, а затемвернитесь назад и ограничьте свои разрешения)
  3. В действиях политики - выберите Прикрепить Прикрепите его к роли, используемой вашей лямбдой
0 голосов
/ 04 октября 2018

Попробуйте настроить клиент boto для использования вашей роли IAM непосредственно в лямбда-функции.

https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-api.html

import json
import boto3

client = boto3.resource(
    'dynamodb',
    aws_access_key_id = ACCESS_KEY,
    aws_secret_access_key = SECERT_KEY
)

table = client.Table('HelpBot')

def handler(event, context):
    table.scan()
    return {
        "statusCode": 200,
        "body": json.dumps('Hello from Lambda!')
    }
...