-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlambda_function.py
More file actions
49 lines (38 loc) · 1.37 KB
/
lambda_function.py
File metadata and controls
49 lines (38 loc) · 1.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import json
import urllib.parse
import boto3
client = boto3.client('s3')
bucket = 'test-uodu-s3'
target = 'trend'
def get_rainfall_trend(key):
response = client.get_object(Bucket=bucket, Key=key)
body = response['Body'].read().decode('utf-8')
return body
def set_response_body(status_code, body):
headers = {}
headers['Content-Type'] = 'application/json'
res_body = {}
res_body['statusCode'] = status_code
res_body['headers'] = headers
res_body['body'] = body
return res_body
def lambda_handler(event, context):
# クエリが渡されてない場合$
if (event['pathParameters'] is None):
return set_response_body(400, 'Bad Request No PathParameters')
else:
params = event['pathParameters']
# クエリパラメータが不正な場合のデフォルトを荒川に
if (set(params) >= {'country', 'prefectures', 'river'}):
country = params['country']
prefectures = params['prefectures']
river = params['river']
key = target + '/' + country + '/' + prefectures + '/' + river + '/trendWaterLevel.json'
else:
return set_response_body(400, 'Bad Request')
try:
json_str = get_rainfall_trend(key)
return set_response_body(200, json_str)
except Exception as e:
print(e)
return set_response_body(400, 'Bad Request')