Alexander SKyzZz
Alexander SKyzZz

Reputation: 109

AWS Lambda Function not read input json

My code can not correct read JSON input.


def lambda_handler(event, context):
    WEBHOOK_URL = "https://" + os.environ['WEBHOOK_URL']

    sns        = event['Records'][0]['Sns']
    json_msg   = json.loads(sns['Message'])

    region     = sns['TopicArn'].split(':')[3]
    status     = json_msg['NewStateValue']

    message    =  'region: ' + region + '\n' + 'status: ' + status

    payload = {
        "username": "bot",
        "attachments": [
            {
                "text": str(message)
            }
        ]
    }

    r = requests.post(WEBHOOK_URL, json=payload)
    return r.status_code

I get a region, but I don't' get status. Example JSON input: https://github.com/builtinnya/aws-sns-slack-terraform/blob/51b954ca8f736e08deccd4196670a187f7b58fe5/sns-to-slack/lambda_function.py#L278

Upvotes: 0

Views: 691

Answers (1)

yogesh10
yogesh10

Reputation: 319

use below lines:-

import json

def lambda_handler(event, context):
 WEBHOOK_URL = "https://" + os.environ['WEBHOOK_URL']

    sns        = event['Records'][0]['Sns']
    json_msg   = json.loads(sns['Message'])

    region     = sns['TopicArn'].split(':')[3]
    status     = json_msg['NewStateValue']

    message    =  'region: ' + region + '\n' + 'status: ' + status

    payload = {
        "username": "bot",
        "attachments": [
            {
                "text": str(message)
            }
        ]
    }

    r = requests.post(WEBHOOK_URL, json=payload)
    response = {
            "statusCode": r.status_code,
            "body": json.dumps("Your message")
        }
    return response 

Upvotes: 1

Related Questions