Skip to content

Instantly share code, notes, and snippets.

@visaolive
Created October 22, 2020 02:47
Show Gist options
  • Save visaolive/89db49c79ba5b5b2308a2a85414c3be3 to your computer and use it in GitHub Desktop.
Save visaolive/89db49c79ba5b5b2308a2a85414c3be3 to your computer and use it in GitHub Desktop.
AWSSalesforceSNS.py
from simple_salesforce import Salesforce, SalesforceLogin
from simple_salesforce import SFType
import base64
import requests
import json
import os
def lambda_handler(event, context):
print('event payload {}!'.format(event))
# for sample purposes only, update with your own object
# extra credit: consider creating an environment variable to store the object name
sftype_object = 'Case'
try:
# parse message from SNS
# extra credit: consider encrypting SNS message and decrypting for payload
message_data_raw = event['Records'][0]['Sns']['Message']
# for sample purposes only, replace single quotes with double quotes
# may not be needed if payload already contains double quotes within JSON
message_data = message_data_raw.replace("\'", "\"")
print('event payload - message_data {}!'.format(message_data))
# prepare request
request_json = json.loads(message_data)
print('event payload - request_json {}!'.format(request_json))
#retrieve salesforce session and instance reference
session_id, instance = sf_login()
record = SFType(sftype_object,session_id,instance)
#send payload to Salesforce API
record.create(request_json)
#parse response from Salesforce API
record_submit = record.describe()
print("main - record_submit: {}".format(record_submit))
return "Main Request Passed"
except Exception as error:
print('Main Error: ' + repr(error))
def sf_login():
# for sample purposes only, update with your own credentials
# extra credit: consider using secret manager for secure storage of sensitive credentials
sf_username = 'username@email.com'
sf_password = 'password'
sf_token = 'salesforceToken'
try:
session_id, instance = SalesforceLogin(
username = sf_username,
password = sf_password,
security_token = sf_token)
return session_id, instance
except Exception as error:
print('Login Error: ' + repr(error))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment