Create creating function

This section will create a function to add document information stored in the DynamoDB table.

  1. Open AWS Lambda console

  2. Click Create function LambdaConsole

  3. Enter function name: upload_document

  • Select Python 3.9 for Runtime
  • Click Create function

CreateFunction

  1. Enter the following code for the lambda_function.py file:
import json
import boto3
import os
from datetime import datetime, timezone

dynamodb = boto3.resource('dynamodb')

def lambda_handler(event, context):
    table_name = os.environ['TABLE_NAME']
    now = datetime.now(tz=timezone.utc)
    dt_string = now.strftime("%d/%m/%Y %H:%M:%S")
    #doc_data = json.loads(event["body"])
    doc_data = event["body"]

    path = "protected/{}/{}".format(doc_data['identityId'], doc_data['file'])
    doc_data.update({"path": path, "modified": dt_string})
    table = dynamodb.Table(table_name)
    table.put_item(Item = doc_data)
        
    # TODO implement
    return {
        'statusCode': 200,
        'body': 'successfully upload!',
        'headers': {
            'Content-Type': 'application/json',
            "Access-Control-Allow-Headers": "Access-Control-Allow-Headers, Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method,X-Access-Token, XKey, Authorization",
            "Access-Control-Allow-Origin": "*",
            "Access-Control-Allow-Methods": "GET,PUT,POST,DELETE,OPTIONS"
        }
    }
  • Click Deploy

CreateFunction

The above code executes to get the environment variable TABLE_NAME and event data. Then add each item to the DynamoDB table.

  1. We need to add an environment variable to the function. Click the Configuration tab, then select Environment variables in the left menu. Press Edit

EnvironmentVariables

  1. Click Add environment variable
  • Enter TABLE_NAME as key
  • Enter the DynamoDB table name that you just created
  • Click Save

EnvironmentVariables

  1. Next, add permissions for function to access DynamoDB table
  • Click Permission on the left menu
  • Click on the execution role of the function

Permission

  1. Expand the AWSLambdaBasicExecutionRole… policy, then click Edit

Permission

  1. Click JSON tab. Copy the JSON below into the editor
,
        {
            "Effect": "Allow",
            "Action": "dynamoDB:PutItem",
            "Resource": "arn:aws:dynamodb:REGION:ACCOUNT_ID:table/Documents"
        }

Replace REGION and ACCOUNT_ID with the region you create the table and your account id.

  • Click Review policy

Permission

  1. Click Save changes

Permission