AWS를 사용하여 자동화된 개인 재무 대시보드 생성 - 2부(람다 요청)
이 게시물에서는 첫 번째 장애물인 새로운 사용자 프로비저닝 람다를 다룰 것입니다.
이제 이 두 개의 람다는 각 사용 사례에 대해 별도의 기능이 있는 단일 람다로 패키징할 수 있지만 단순성을 위해 이들을 분리할 예정이며 향후에는 어떤 방식으로든 함께 끝날 것입니다.
람다 개요:
행동 계획
충분히 간단하게 들리나요?
그것으로 균열하자.
AWS에서 람다 함수 생성
import json
import os
import requests
api_token = os.getenv('api_token')
api_url_base = 'https://api.up.com.au/api/v1/'
headers = {'Authorization': 'Bearer {}'.format(api_token)}
def create_list(api_url):
response = requests.get(api_url, headers=headers)
if response.status_code == 200:
data = []
data.append(response.json().get('data'))
if response.json().get('links').get('next'):
token = response.json().get('links').get('next')
while token:
response = requests.get(token, headers=headers)
data.append(response.json().get('data'))
token = response.json().get('links').get('next')
if token:
print("Processing token: {}".format(token))
else:
print("Finished processing tokens")
return data
else:
print(response.status_code)
def create_csvDictionary():
api_url = api_url_base + 'transactions'
data = create_list(api_url)
csvDictionary = {'id' : [], 'description' : [], 'value' : [], 'category' : [], 'parentCategory' : [], 'createdAt' : []}
for array in data:
for transaction in array:
if 'Transfer' in transaction.get('attributes').get('description'):
continue
if 'transfer' in transaction.get('attributes').get('description'):
continue
if 'Cover' in transaction.get('attributes').get('description'):
continue
if 'Round Up' in transaction.get('attributes').get('description'):
continue
if float(transaction.get('attributes').get('amount').get('value')) > 0:
continue
else:
csvDictionary['id'].append(transaction.get('id'))
csvDictionary['description'].append(transaction.get('attributes').get('description'))
csvDictionary['value'].append(transaction.get('attributes').get('amount').get('value')[1:])
if transaction.get('relationships').get('category').get('data'):
csvDictionary['category'].append(transaction.get('relationships').get('category').get('data').get('id'))
else:
csvDictionary['category'].append('Uncategorized')
if transaction.get('relationships').get('parentCategory').get('data'):
csvDictionary['parentCategory'].append(transaction.get('relationships').get('parentCategory').get('data').get('id'))
else:
csvDictionary['parentCategory'].append('Uncategorized')
csvDictionary['createdAt'].append(transaction.get('attributes').get('createdAt'))
print(csvDictionary)
return csvDictionary
def lambda_handler(event, context):
create_csvDictionary()
우리의 첫 번째 장애물! 우리 람다에는 요청 라이브러리가 없습니다. 이 라이브러리를 어떻게 정렬할까요?
이 문제를 해결하는 방법에는 몇 가지가 있습니다. 제가 가장 좋아하는 방법은 람다 계층을 생성하는 것입니다. 그러면 AWS 계정에서 다른 기능과 함께 재사용할 수 있기 때문입니다.
람다 레이어 생성
pip3 install requests --target .\requests --no-user
굉장합니다 - Up API 끝점에 도달하고 토큰을 처리하고 있습니다!
Not Awesome - 람다는 너무 많은 데이터가 있기 때문에 초기에 시간 초과되었습니다(2년 분량의 트랜잭션).
요약해서 말하자면
다음번
다음 게시물에서는 Webhook(이벤트 기반) 람다 함수와 필요한 해당 API 게이트웨이 및 엔드포인트를 다룰 것입니다. 기다릴 수 없어!
Reference
이 문제에 관하여(AWS를 사용하여 자동화된 개인 재무 대시보드 생성 - 2부(람다 요청)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bradenrichardson/creating-an-automated-personal-finances-dashboard-with-aws-part-2-request-lambda-1chi텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)