Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. def lambda_handler(event, context):
  2. principalId = 'me'
  3.  
  4. tmp = event['methodArn'].split(':')
  5. apiGatewayArnTmp = tmp[5].split('/')
  6. awsAccountId = tmp[4]
  7.  
  8. headers = event['headers']
  9. queryStringParameters = event['queryStringParameters']
  10. pathParameters = event['pathParameters']
  11. stageVariables = event['stageVariables']
  12.  
  13. region = tmp[3];
  14. restApiId = apiGatewayArnTmp[0]
  15. stage = apiGatewayArnTmp[1]
  16. method = apiGatewayArnTmp[2]
  17. resource = '/' # root resource
  18. if apiGatewayArnTmp[3]:
  19. resource += apiGatewayArnTmp[3]
  20.  
  21. authResponse = {}
  22.  
  23. if (headers['HeaderAuth1'] == "1" and queryStringParameters['QueryString1'] == "2" and stageVariables['StageVar1'] == "3"):
  24. return generateAllow(principalId, event['methodArn'])
  25. else:
  26. raise Exception("Unauthorized")
  27.  
  28. def generatePolicy(principalId, effect, resource):
  29. authResponse = {}
  30. authResponse['principalId'] = principalId
  31. if (effect and resource):
  32. policyDocument = {}
  33. policyDocument['Version'] = '2012-10-17'
  34. policyDocument['Statement'] = []
  35. statementOne = {}
  36. statementOne['Action'] = 'execute-api:Invoke';
  37. statementOne['Effect'] = effect
  38. statementOne['Resource'] = resource
  39. policyDocument['Statement'].append(statementOne)
  40. authResponse['policyDocument'] = policyDocument
  41.  
  42. context = {
  43. 'key': 'value', # $context.authorizer.key -> value
  44. 'number': 1,
  45. 'bool': True
  46. }
  47.  
  48. authResponse['context'] = context
  49. return authResponse
  50.  
  51. def generateAllow(principalId, resource):
  52. return generatePolicy(principalId, 'Allow', resource)
  53.  
  54. def generateDeny(principalId, resource):
  55. return generatePolicy(principalId, 'Deny', resource)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement