본문 바로가기
5.1 대외활동/2023데이터청년캠퍼스

[대외/데청캠 2023] AWS간단하게 사용해보기 (cloud9 + lambda) +재정리중

by Dohi._. 2023. 7. 12.
728x90

-간단하게 이야기-

aws를 배우면서 On-premiss와 cloud 차이점에 대한 거에 대해서 배웠지만

on-premiss : 직접 서버를 구축하는 방식 
cloud : 서버구축한것을 대여받는 방식 이라고 생각하면 될듯하다

 

사실 내가 생각하기엔

on-premiss와 cloud의 장단점이 너무 명확하다는 점이다 

간단하게 영리하게 사용하면 cloud가 저렴하지만

그렇다고 아무생각없이 편하다고 사용하기엔 cloud는 비싸다정도로 생각하면 될듯하다

(= 사용자의 능력에 따라 금액이 다르기때문에 잘못하면 오히려 on-premiss가 더 나을수도있다.)

 

aws에서 제공하는 (당연 유료다) 클라우드 서비스중에서 2가지를 연습해봤다

실습에 대한 제한된 시간 관계상 디테일한 것은 정리를 못했다. 

 

 

1.cloud9

 서버기반으로 운영되는 cloud9은 서버를 선택하고 서버기반으로 동작하는 cloud서비스로써

일정하게 금액이 나가는 서비스다 


2. lambda

lambda같은경우는 함수기반의 서비스인데 
서버기반은 서버가 켜져있는 동안 금액이 나가는 반면에 lambda는 함수가 작동되는 횟수만큼 금액이 나가는 방식이다

서버를 직접 관리 하지않는 장점이 있지만 그것이 단점인 이유는 UI를 직접 만들지 못하고 
UI를 제공하는 곳에서 연결하여 사용 한다는 단점이 있다.

 

간단하게 직접 해보면서 경험해보는게 더 좋을 것 같아서 간단하게 연습을 좀 해봤다.

 

 

실제로 한번 돌려보기 ( cloud9-> lambda )

 

1. cloud 9

 

검색 창에 Cloud9를 검색한후에 환경 생성을 눌러줍니다:)

환경 생성을 누르시면 아래에 보이는 창으로 이동합니다

 

이름과 설명은 사용하실 이름과 제작하고있는 환경에 대한 설명을 적는 칸입니다

환경유형같은경우는 지금 저는 새우른 인스턴스를 제작할 예정이라 새로운 EC2인스턴스를 만들예정인데
만약 기존에 EC2로 제작한 인스턴스가 있다면 기존 컴퓨팅으로 하시면 됩니다

새로운 인스턴스를 보면 
인스턴스 유형이 있는데 간단하게 스펙입니다

인스턴스유형 종류



플랫폼은 amazon Linux 2로 시작하는데 그이유는 검색하면 잘나오기도 하고 확장성이 좋습니다

 

쭉내려서 완료를하면 
아래와같이 새로운 환경이 만들어진 것을 볼 수 있습니다

 

cloud9 IDE에 열림을 누르면 Cloud9으로 들어가실수 있습니다

들어가시면 맨아래에 터미널이 있습니다 (teamRole은 사용자 이름이니 무시하셔도 될듯 합니다)

기본적으로 Python은 깔려있습니다 버전은 3.7.16이네요 

웹 프레임워크 Flask를 저는 사용할 예정이기 때문에 설치를 합니다(Python library 설치 가능)

pip install flask

 

설치가 잘됨

그후 잘 설치가 되었는지 확인을 위해  직접 제작을 해볼예정입니다 

 

왼쪽에 home폴더에서 New File -> main.py를 제작하고 
간단하게 Flask를 사용해서 웹을 돌려보도록 합니다 

코드를 입력하시고 (코드는 간단하게 Chat gpt를 이용해서)

돌아가는 것을 확인 해보려고 합니다 

참고

저장이 안된 상태에서 보라색 체크표시가 뜹니다

저장을 하기 위해서는 컨트롤 S(mac -> 커맨드 S)를 눌러서

저장을 해야 런을 돌렸을때도 수정한 코드가 돌아갑니다

 

app.run()부분에 코드를 바꿔줄 예정인데 포트를 저정하여서 8080포트쪽으로 열리게 할예정입니다

(이 코드는 제가 만든게 아니라 코드블럭제공을 하지 않습니다..)

app.run(host="0.0.0.0",port="8080")

해당 파일을 실행하기 위해 터미널에서 python main.py를 해줍니다

python main.py

자 8080포트로 AWS에서 들어갈수 있게 허락을 해줘야 하는데요 

Network 설정(inbound port 설정) 을 해봅시다

EC2 에서 인스턴스를 들어갑니다.

 

cloud9으로 제작된 경우 name에 cloud9-설정한이름으로 되어있으므로 찾기 쉬울 거에요:)

해당 인스턴스의 체크박스를 체크하면 하단에 아래사진이 나올텐데요 

보안 -> 보안그룹을 눌러줍니다

 

그후 인바운드 규칙 (어떤 포트를 열까라고 생각하면 편하다) -> 인바운드 규칙 편집  -> 규칙추가

포트범위 (현재는 8080) ,소스(Anywhere-IPv4) 설정 

 

인스턴스 체크후 세부정보에서 퍼블릭 IPv4 주소를 복사하고 새로운 창을 키고 
퍼블릭 IPv4:8080 하면 cloud9에서 한 파이썬이 보일 것 입니다. 

짜잔

 

2. lambda

간단하게 lambda는 코딩 -> 배포 끝 이라고 생각하면 편할 듯 하다 

 

Lambda를 검색하고 열어준 후에 함수 생성을 눌러줍니다

 

새로작성 / 블루프린트 -> 샘플코드가있는거 /  컨테이너는 패스!   저는 새로작성을 할 예정입니다

함수생성

함수 이름 / 런타임 ( 돌아갈 언어 선택 ) 등등 선택을 하고 생성을 해줍니다

 

생성된 모습

  • 이벤트 공유 설정 : 공유 가능 으로만 바꿔주세요 

람다같은 경우는 Cloud9과 다르게 직접 테스트를 해보고 바로바로 수정이 가능하다는 점이다 
test를 그냥 간단하게 돌려봅니다

결과물..

body에 "Hello from Lambda!" 뜨는 것으로 잘돌아가는걸 볼 수 있습니다:)!

 

이제 진짜 사이트로 들어가보록 하겠습니다 

 

구성 -> 함수 URL  -> 함수 URL생성

 

 

AWS_IAM IAM사용자및 허용된사람  NONE 아무나

우리는 NONE를 선택할 예정입니다.

생성을 하면  함수개요에 함수 URL생성되었을 것입니다!

이대로 돌리기 아쉬워서 좀 설정을 더해서 

코드를 위처럼 바꿔줄 예정인데요
ctrl+s 로 저장후 (mac은 커맨드+S)

Deploy 버튼으로 배포

그후 함수 URL을 들어가서 뒤에 /?name=아무거나 추가!하면 !

결과물

 

※추가 로그 보는법 

cloudwatch검색 -> 로그 -> 로그 그룹 -> lambda/설정한 함수이름  -> QuerString을 검색해보니 name=aws를 받았던 로그를 확인할 수 있다.

 

 

※추가2  로컬에서 만든 함수 업로드

*주의 라이브러리도 같이 올려야함 -> lambda에서는 pip과 같은 라이브러리 설치가 불가능 하니 

zip파일로 라이브러리까지 같이 올려야한다

 

(pip3 install openai -t .) 하면 현재 파일에 라이브러리 다운로드

dep;oy오른쪽에 있는   .에서 업로드 를 누르고 zip파일 업로드를 선택후 업로드 하면됩니다.

만약 람다를 돌렸는데 분명 함수는 이상없는데 lambda에서 안된다면 제한시간 문제일 수도 있다

람다의 기본 제한시간은 3초이므로 오래걸릴 함수라면 제한시간을 늘려주도록하자 (최대 15분)

 

 

끝!

 

 

 

이하 사진은 추가적으로 막 돌려본것들이라 사진 보실분들은 보셔요!

 

resize로 파일권한 부여를 하고 원하는 사이즈로 늘리기위해 만든 파일 
lambda에서는 UI를 못만들지만 cloud9에서는 가능하다 stramlit을 이용해서 만들었다
번역기를 gpt api를 이용해서 돌리도록 했다
똑같이 인바운드규칙설정

 

아래는 해당 교육과정동안의 결과물들이다 .

잘생겼다 에릭남.

 

+람다 추가 결과물

 

끝나버렸다..

 

 

728x90

댓글