반응형
해당 게시글에서는 지도 화면이 아닌 JSON 데이터를 받는 방법입니다!
이번에는 lambda 함수를 먼저 작성하고 테스트 해보자

 

이전에는 Flutter + rest api 통신 문제로 인해 통신하지 못했지만, javascript에서는 가능했다. 때문에 AWS Web Service를 활용하여 서버에 코드를 등록하고 호출하는 방식을 사용해보고자 한다. 

 


 

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

필요한 만큼 이용할 수 있는 것은 물론 필요에 따라 몇 분 만에 확장 또는 축소할 수 있습니다. 자세히 알아보세요.

aws.amazon.com

 

우리가 사용할 것은 코드를 등록하여 사용할 Lambda, Flutter와 통신할 매개체인 API GateWay다.
각각 월 100만건 무료로 그 이상 호출 시 사용한만큼에 따라 가입한 정책에 따라 요금이 부과된다.

 

 

때문에 가입 후 카드 등록이 필수다. 카드 등록시 1$를 결제한 후 바로 취소해 준다고 써져 있다.

( 카드 결제 정보가 맞는지 확인차 하는 것으로 보이며 저는 100원 결제되었다가 바로 취소되었습니다. )

가입 후 카드정보를 다음과 같이 입력하면 된다.

 



1. 가입이 완료되었다면 콘솔로 이동해 주자

2. 콘솔 상단의 검색에 lambda를 검색 후 이동해 주자

 

3. lambda 함수를 생성 해주자

 

4. 사용할 함수명과 함께 함수를 만들어 주자

 

코드를 등록하기 때문에 내장함수가 아니면 라이브러리를 다운받아서 같이 올려줘야 한다.

때문에 Node.js 가 익숙하다면 Node.js를 사용하고 나는 Python으로 진행하였다.

런타임에서 Node.js 가 아닌 Python을 선택하면 된다.

( 저는 Test(함수 이름), Python 3.12 version(런 타임 환경) 을 사용했습니다. )

 

생성 후 다음과 같은 화면을 볼 수 있는데

코드 작성 후 Deploy(배포)를 통해 저장한다고 생각하면 되고 Test를 통해 코드 테스트를 해 볼 수 있다.

다른 언어의 main함수와 같이 lambda_function 이름을 가진 코드를 실행하기 때문에 이름 변경에 주의하자.

 


이제 코드를 작성하자.

기존의 DartNode.js에서 작성했던 코드를 Python으로 변환하고

x, y를 매개변수로 받는 함수로 작성해보자

 

 

 

1. 먼저 원하는 위치에 빈디렉토리 생성 후 lambda_fuction.py 파일을 만들어 주자.

 

2. Aws lambda에 쓸 카카오와 Rest API 통신하는 코드를 작성한다.

import json
import requests

def make_api_call(x, y):
   
    params = {
        'query': '카카오 프렌즈',
        'y': y,
        'x': x,
        'radius': '20000'
    }

    headers = {
        'Authorization': 'KakaoAK 발급받은_Rest_API_KEY'
    }

    response = requests.get(url, params=params, headers=headers)
    response_data = response.json()
   
    return response_data

def lambda_handler(event, context):
    x = event['x']
    y = event['y']
   
    try:
        data = make_api_call(x, y)
        return {
            'statusCode': 200,
            'body': json.dumps(data)
        }
    except Exception as e:
        return {
            'statusCode': 500,
            'body': json.dumps({'error': str(e)})
        }

 

3. 해당 파일 경로에 이동하여 requests 라이브러리를 추가해주자.

cmd 창에 다음과 같이 입력한다.

3-1. >cd ~파일경로/Test

3-2. >pip install requests -t

 

4. 해당 Test 파일을 압축 후 업로드 한다.

 

업로드 후 저장해 준다.

 

여기서 주의할 점이 lambda 함수 페이지에서 root 하위 파일들로 위치해 있어야 한다.

 

5. 이제 Test 해보자

 

Test 버튼 클릭 후 이름과 임의의 경도와 위도 값을 넣으면 된다.

다시 테스트 버튼을 클릭하면 다음과 같은 결과를 얻을 수 있다.

 

 

마치며...
메모리 사용량 시간 등을 알려주며 한글은 변환되어 \\uc11c\\uc6b8(서울)로 표현된다.
다음은 API GATEWAY를 사용하여 lambda와 연결하고
Flutter에서 URL에 POST 요청을 통해 처리할 수 있도록 하겠다 

 

반응형
반응형

변수

변수는 값을 담는 상자이다.

 

A라는 상자가 존재 할 때 내가 원하는 형태의 값을 담을 수 있다

 

A = 5 

 

5라는 값을 A의 상자의 공간에 넣어준다고 해석할 수 있다. 

 

수학의 개념 A = 5

'A는 5다' 라는 개념과 다른 개념이다. 

 

숫자형

정수형 - 0, 1, 2, -3

a = -3	 #a에 -3을 넣는다
print(a) #값 출력
print(type(a)) #a의 자료형 타입 int(integer) 정수형을 의미

실수형 - 0.123, -4.567, 3.9e10

(컴퓨터 지수 표현 방식 e,E 어느 것을 사용해도 무방 e10 = 10^10 -e10 = 10^-10)

f = 0.123	   
print(f)	   
print(type(f)) #float => 실수자료형

 

8진수 - 0o123

 

16진수 - 0x6F

 

사칙연산

x = 3
y = 4
print(x+y)  #더하기
print(x-y)  #빼기
print(x*y)  #곱하기
print(x**y) #제곱
print(x/y)  #나누기
print(x//y) #나누기 : 몫
print(x%y)  #나머지

 

문자열

문자열은 따옴표를 이용해 표현할 수 있으며 그 방법은 4가지 이다.

'파이썬의 세계에 오신걸 환영합니다.'
"파이썬의 세계에 오신걸 환영합니다."
'''파이썬의 세계에 오신걸 환영합니다.'''
"""파이썬의 세계에 오신걸 환영합니다."""
a = "Hello Python" #문자열도 마찬가지로 변수에 담을 수 있다.
print(type(a))     #str 문자열의 자료형을 뜻하는 string의 약자 str을 쓴다.

여러개의 따옴표를 쓰는 이유는 문자열 안에 ' 과 "을 표현하기 위해서이다.

x = 'I say "I love python.".'    #따옴표 안에 따옴표
y = "I say \" I love python.\"." #백슬래시 \ 이용

이스케이프 코드

파이썬은 한줄씩 처리하기 때문에 줄 바꿈이나 탭 등 여러가지 형식으로 만들어주거나 기능이나 문자를 넣을 수 있는 코드이다.

#\n	줄을 바꿀 때 사용
#\t	간격을 줄 때 사용
#\\	문자 \를 표현할 때 사용
#\'	작은따옴표(')를 표현할 때 사용
#\"	큰따옴표(")를 표현할 때 사용
#\r	캐리지 리턴(줄 바꿈 문자, 현재 커서를 가장 앞으로 이동)
#\f	폼 피드(줄 바꿈 문자, 현재 커서를 다음 줄로 이동)
#\a	벨 소리(PC 스피커에서 '삑' 소리가 난다)
#\b	백 스페이스
#\000 널 문자

 

문자열 연산

#문자열 연결
a = "Hello"
b = " Python"
a+b #Hello Python

#문자열 곱셈
a = "Python"
a * 3 #문자열 a인 Python을 3번 반복하여 출력한다.

#문자열 길이
a = "Hello Python"
len(a) #12

 

문자열 인덱싱과 슬라이싱

인덱싱 - 하나의 값을 가리킨다

슬라이싱 - 여러개의 값을 잘라낸다.

#인덱싱
a = "Hello Python"
a[0]
# H
a[3]
#l
#문자열의 시작번호는 0번째부터 시작이다.
a[-1]
#n #거꾸로 간다

#슬라이싱
b = a[0]+a[6]
#HP
a[0:4] # => a[:4] 
#Hello
#값을 넣지않으면 끝부분까지라고 생각하면된다. a[4:] => 4번째부터 끝까지

a[0:5:2] #세번째 자리는 간격만큼 건너 출력한다.
#Hlo

 

문자열 포매팅

a = "I want %d oranges." %5 
#여러가지 자료형의 삽입이 가능하다 ex)%d - 5 => %s - five
#변수에 초기화 후 변수 삽입도 가능하다
number = 5
a = "I want %d oranges." % number
a
#I want 5 oranges

#문자열 포맷 코드
#%s	문자열
#%c	문자 1개
#%d	정수
#%f	부동소수
#%o	8진수
#%x	16진수
#%%	Literal % (문자 % 자체)

 

문자열 관련 함수

 

문자열 세기(count)

a = "Hello Python"
a.count('2')
#2 l의 개수

 

문자 위치 탐색1(find)

a = "Hello Python"
a.find('o')
#4 숫자를 0부터 세고 가장 먼저 나온 위치를 반환하기 때문에 Hello의 4번째의 o를 반환한다.
a.find('f')
#-1 존재하지 않으면 -1을 반환한다.

 

문자 위치 탐색2(index)

a = "Hello Python"
a.index('o')
#4 find와 동일하다 하지만 존재하지 않는다면 오류가 발생한다.

 

문자열 삽입(join)

",".join("Hello")
#문자열 Hello 가각 사이에 ','를 삽입한다.

 

소문자->대문자(upper)

a = "Hello Python"
a.upper()
#"hello python"

 

대문자->소문자(lower)

a = "Hello Python"
a.lower()
#"HELLO PYTHON"

 

공백 지우기(strip, rstrip, lstrip)

a = '  hello  '
a.rstrip() #오른쪽 공백 지우기 '  hello'
a.lstrip() #왼쪽 공백 지우기   'hello'
a = '  hello  '
a.strip()  #공백 지우기 'hello'

 

문자열 바꾸기(replace)

a = "Hello Python"
a.replace("Python","C++")
#"Hello C++"

 

문자열 나누기(split)

a = "Hello Python"
a.split() #()공간에 아무것도 쓰지 않으면 공백기준
#['Hello','Python']

#그 외에 기준을 두고 싶으면 '?' ?에 다른 값을 넣어주면 된다
a = "H:i" 
a.split(':')
#['H','i']

 

반응형

+ Recent posts