Created
October 22, 2020 02:47
-
-
Save visaolive/89db49c79ba5b5b2308a2a85414c3be3 to your computer and use it in GitHub Desktop.
AWSSalesforceSNS.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 = '[email protected]' | |
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