не в состоянии вставить данные в DynamodB с помощью Python - PullRequest
0 голосов
/ 28 октября 2019

Я новичок в бессерверной инфраструктуре и пытаюсь поместить данные в мой DynamodB с помощью Python. Но не в состоянии вставить данные. Даже я не получаю никакой ошибки.

Я перепробовал все настройки для файла .yml, но без прогресса

.yml

provider:
  name: aws
  runtime: python3.7

  environment:
    DYNAMODB_TABLE: employee
  iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
      Resource: "arn:aws:dynamodb:${opt:region, self:provider.region}:*:table/${self:provider.environment.DYNAMODB_TABLE}"

  stage: dev
  region: us-east-1


functions:
   create:
    handler: functions/create.create
    events:
     - http:
         path: employee
         method: post
         cors: true
         authorizer: aws_iam
   get:
    handler: functions/get.get
    events:
     - http:
         path: employee/{id}
         method: get
         cors: true
         authorizer: aws_iam

resources:
  Resources:
    employee:
      Type: 'AWS::DynamoDB::Table'
      DeletionPolicy: Retain
      Properties:
        AttributeDefinitions:
          - AttributeName: employeeId
            AttributeType: S
        KeySchema:
          - AttributeName: employeeId
            KeyType: HASH
        ProvisionedThroughput:
          ReadCapacityUnits: 1
          WriteCapacityUnits: 1
        TableName: ${self:provider.environment.DYNAMODB_TABLE}

.py file

import json
import os
import logging

import boto3
dynamodb = boto3.resource('dynamodb')

logger = logging.getLogger("handler_logger")
logger.setLevel(logging.DEBUG)

def create(event, context):
    data = json.loads(event['body'])

    table = dynamodb.Table(os.environ['DYNAMODB_TABLE'])
    logger.info(table)

    item = {
        'employeeId': "2",
        'employeeName': "Singhs",
    }

    # write the todo to the database
    table.put_item(Item=item)

    # create a response
    response = {
        "statusCode": 200,
        "body": json.dumps(item)
    }

    return response

1 Ответ

0 голосов
/ 29 октября 2019

Я не уверен, почему вставка не работает, код выглядит правильно. Вы можете получить больше информации, если получите ответ от put_item. Например:

    # write the todo to the database
    put_response = table.put_item(Item=item)

    # create a response
    response = {
        "statusCode": 200,
        "body": json.dumps(put_response)
    }
...