phn-founation.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. import json
  2. import pymysql
  3. def insert_data(mykey,myvalue):
  4. # 打开数据库连接
  5. db = pymysql.connect("myinstance.cfeisxz72aaf.rds.cn-northwest-1.amazonaws.com.cn", "cstor", "12345678", "mydb")
  6. # 使用cursor()方法获取操作游标
  7. cursor = db.cursor()
  8. # SQL 插入语句
  9. sql = "INSERT INTO kv(mykey, myvalue) VALUES ('%s', '%s')" % (mykey, myvalue)
  10. try:
  11. # 执行sql语句
  12. cursor.execute(sql)
  13. # 执行sql语句
  14. db.commit()
  15. except:
  16. # 发生错误时回滚
  17. db.rollback()
  18. # 关闭数据库连接
  19. db.close()
  20. def handle_order(s):
  21. arr = s.split(" ")
  22. dict = {}
  23. for i in arr:
  24. temp = i.split(":")
  25. if temp[1] == "0":
  26. dict["0"] = temp[0]
  27. elif temp[1] == "1":
  28. dict["1"] = temp[0]
  29. elif temp[1] == "2":
  30. dict["2"] = temp[0]
  31. #根据key 排序
  32. a = sorted(dict.items(),key= lambda d :d[0])
  33. return a
  34. def lambda_handler(event, context):
  35. # TODO implement
  36. for rec in event["Records"]:
  37. # TODO: write code...
  38. if rec["eventName"] != "MODIFY":
  39. continue
  40. new_image = rec["dynamodb"]["NewImage"]
  41. #获取 key value
  42. sqs = new_image.get("SQS")
  43. https = new_image.get("HTTPS")
  44. lmd = new_image.get("LAMBDA")
  45. order = new_image.get("order")
  46. mykey = new_image.get("mykey").get("S")
  47. #不是最后一次更新
  48. if sqs==None or https==None or lmd==None or order==None:
  49. continue
  50. #更新一下值,上面的值不全的话,可能会是None,就不能直接get
  51. sqs = sqs.get("S")
  52. https = https.get("S")
  53. lmd = lmd.get("S")
  54. order = order.get("S")
  55. #处理order
  56. arr = handle_order(order)
  57. # arr = [('0', 'HTTPS'), ('1', 'SQS'), ('2', 'LAMBDA')]
  58. #拼接字符串
  59. myvalue = ""
  60. for item in arr:
  61. # TODO: write code...
  62. if item[1]=="SQS":
  63. myvalue += sqs
  64. elif item[1] == "HTTPS":
  65. myvalue += https
  66. elif item[1] == "LAMBDA":
  67. myvalue += lmd
  68. print(mykey,myvalue)
  69. #插入数据库
  70. insert_data(mykey,myvalue)
  71. return {
  72. 'statusCode': 200,
  73. 'body': json.dumps('Hello from Lambda!')
  74. }
  75. # 2、sqs
  76. import json
  77. import boto3
  78. table_name = "mydynamodb"
  79. zujian = "SQS"
  80. def insert_data(mykey,order,msg):
  81. client = boto3.client('dynamodb')
  82. response = client.get_item(TableName=table_name,Key={"mykey":{"S":mykey}})
  83. item = response.get("Item")
  84. print(item)
  85. response = client.update_item(
  86. TableName=table_name,
  87. Key={"mykey":{"S":mykey}},
  88. AttributeUpdates={
  89. "order":{"Value":{"S":order}},
  90. zujian:{"Value":{"S":msg}}
  91. })
  92. def lambda_handler(event, context):
  93. # TODO implement
  94. for rec in event["Records"]:
  95. body = rec["body"]
  96. body = json.loads(body)
  97. msg = body["Message"]
  98. attr = body["MessageAttributes"]
  99. #获取 mykey order
  100. mykey = attr["mykey"]["Value"]
  101. order = attr["order"]["Value"]
  102. print(msg)
  103. print(mykey,order)
  104. #将 mykey order msg 插入数据库
  105. insert_data(mykey,order,msg)
  106. return {
  107. 'statusCode': 200,
  108. 'body': json.dumps('Hello from Lambda!')
  109. }
  110. # 3、 Lambda
  111. import json
  112. import boto3
  113. table_name = "mydynamodb"
  114. zujian = "LAMBDA"
  115. def insert_data(mykey,order,msg):
  116. client = boto3.client('dynamodb')
  117. response = client.get_item(TableName=table_name,Key={"mykey":{"S":mykey}})
  118. item = response.get("Item")
  119. print(item)
  120. response = client.update_item(
  121. TableName=table_name,
  122. Key={"mykey":{"S":mykey}},
  123. AttributeUpdates={
  124. "order":{"Value":{"S":order}},
  125. zujian:{"Value":{"S":msg}}
  126. })
  127. def lambda_handler(event, context):
  128. # TODO implement
  129. for rec in event["Records"]:
  130. sns = rec["Sns"]
  131. subject = sns["Subject"]
  132. msg = sns["Message"]
  133. attr = sns["MessageAttributes"]
  134. #获取 mykey order
  135. mykey = attr["mykey"]["Value"]
  136. order = attr["order"]["Value"]
  137. print(msg)
  138. print(mykey,order)
  139. #将 mykey order msg 插入数据库
  140. insert_data(mykey,order,msg)
  141. return {
  142. 'statusCode': 200,
  143. 'body': json.dumps('Hello from Lambda!')
  144. }
  145. # 4、 https
  146. import json
  147. import boto3
  148. table_name = "mydynamodb"
  149. zujian = "HTTPS"
  150. def insert_data(mykey,order,msg):
  151. client = boto3.client('dynamodb')
  152. response = client.get_item(TableName=table_name,Key={"mykey":{"S":mykey}})
  153. item = response.get("Item")
  154. print(item)
  155. response = client.update_item(
  156. TableName=table_name,
  157. Key={"mykey":{"S":mykey}},
  158. AttributeUpdates={
  159. "order":{"Value":{"S":order}},
  160. zujian:{"Value":{"S":msg}}
  161. })
  162. def lambda_handler(event, context):
  163. # TODO implement
  164. if event["httpMethod"] == "POST":
  165. body = json.loads(event["body"])
  166. msg = body["Message"]
  167. attr = body["MessageAttributes"]
  168. #获取 mykey order
  169. mykey = attr["mykey"]["Value"]
  170. order = attr["order"]["Value"]
  171. print(msg)
  172. print(mykey,order)
  173. #将 mykey order msg 插入 dynamodb
  174. insert_data(mykey,order,msg)
  175. return {
  176. 'statusCode': 200,
  177. 'body': json.dumps('Hello from Lambda!')
  178. }