AWS- 8

박형준·2024년 4월 18일

*API ( Application Programming Interface )

  • API :
    • 어플리케이션 을 프로그래밍을 통해서 효과적으로 사용할 수 있도록 만들어 놓은 인터페이스
  • GateWay :
    • 내부와 외부를 연결 해주는 역할

*API Gateway 유형

  • HTTP API :
    • 프록시 기능만 되는 서비스 [ 속도가 빠름 / 저렴 ]
  • RESTful API :
    • 관리, 요청 , 응답 처리 [ 복잡 / 비쌈 ] = CRUD
    • ⇒ CREATE(생성) / READ(불러오기) / UPDATE(수정) / DELETE(삭제)
  • WebSocket API :
    • 실시간 애플리케이션 서비스에 사용
  • API GW를 이용한 배포 구성도
  • 아키텍처
  • 프록시:
    • 한번 접속하면 기억해서 다시 접속할 때 빠르게 접속하도록 해주는 기능 (cache)
  • CRUD:
    • "Create, Read, Update, Delete"의 약자로, 데이터베이스나 웹 애플리케이션에서 가장 기본적인 데이터 조작 기능을 가리킵니다.

API 구축

  1. 정책 과 역할 먼저 생성 후 진행
  • ( DynamoDB와 관련된 정책 과 역할 있으면 1 번 부터 진행 )
  • /IAM역할 생성 링크 클릭 후 역할 및 정책 생성
    • 정책생성 (DynamoDB) / 이름: -awstest-dynamodb-policy-abc / 모든 람다 권한
    • 역할생성 (람다)/ 이름 -awstest-dynamodb-role-abc / 사용사례: Lambda

1.DynamoDB 테이블 생성

  • 지역(서울) , 테이블이름(customers), 파티션키 입력(customer_id)
  • 나머지는 기본으로 두고 테이블 생성
  • dynamoDB 생성 ( 빈 테이블 )

__

2.API 생성

  • API GateWay 서비스 검색 / REST API 구축 / 새 API , 이름 입력, 지역 으로 설정하고 API생성
  • 리소스 생성 / 경로(/), 이름 입력( customer ) / 생성 , -메소드 생성 / 매소드 유형( POST )

REST API 구축

  • API gateway에서 REST API 선택
  • API GW 정보 입력 ( 지역: 서울 )
  • API GW 생성 확인

리소스 생성

  • 리소스 이름 지정
  • 리소스 생성 확인 ( 디렉터리 개념과 유사 )

3.새로 창을 열어서 Lambda함수 생성

  • 함수 생성 / 이름 입력, 런타임(파이썬)
    • 다시 람다 함수 생성 창에서 기존 역할 사용 선택 하고 awstest-dynamodb-role-abc 선택 / 함수 생성
    • 코드에 아래 내용 입력 ( 테이블 이름은 본인이 생성 한 테이블 이름으로 ) / 배포

새로 창을 열어서 lambda 함수 생성

  • lamda 함수 설정
  • 이전에 생성한 awslearner-dynamoDB-role-hj 역할로 lambda 함수 설정
  • 코드 입력 후 배포

메소드 생성

  • 메서드 유형 선택( Post: 배포 ), lamba 함수 선택하기 전에
  • 생성한 lambda 함수 선택
  • 메서드 생성 확인

  1. API 창에서 POST / 테스트 클릭 후 아래 내용 입력 후 테스트

아래와 같이 200 에 성공 메시지가 보이면 테스트 성공이고,

  1. DynamoDB에서 항목 확인시 업로드 확인( 첫번째 업로드는 시간이 걸림 )

*API / POST 테스트에서 내용 수정 후 TEST 클릭 하고, 다시 테이블에 업로드 확인

메서드 테스트

  • lambda 함수를 불러와서 테스트
  • 상태: 200, 응답 본문: successfully 확인
  • dynamoDB 표항목 탐색에서 업데이트 확인

*CI / CD

  • Continuous Integration / Continuous Deployment
  • (지속적인 통합) / (지속적인 배포)

*리포지토리( repository ) - 저장소 (코드 업로드 / 다운로드 )

  • 로컬 리포지토리 : 만들어진 코드 구현 하는곳.
  • 원격 리포지토리 : Git-Hub

*브랜치 :

  • 로컬 브랜치 : 코드개발하고 테스트 하는곳.
  • 마스터 브랜치 : 테스트된 코드를 통합하는곳.(CI)

*코드 커밋 ( CI )

  • 리포지토리 생성 / 이름 입력하고 생성
    • SSH는 지원하지 않고, HTTPS(GRC):깃허브와 연동 가능
    • 파일 생성 / 파일이름 , 작성자 이름, 이메일 주소, 커밋 메시지 입력 / 변경사항 커밋

리포지토리 생성

  • 리포지토리 이름 지정
  • SSH 지원 X, HTTPS(GRC)는 GitHub와 연동 가능
  • GitHub와 연동할 때 HTTPS(GRC)탭 3단계의 주소 복사

리포지토리 파일 생성

  • 코드 내용 입력
  • 코드 내용의 세부 설명 설정
  • 커밋 확인 (리포지토리 생성 완료)
  • 왼쪽에서 브랜치 / 브랜치 생성 /
    • 설정 후 브랜치 생성 하고 내용 확인 해보면 main 내용과 동일

브랜치 생성

  • 기본 브랜치: 마스터 브랜치
  • 로컬 브랜치 생성
  • 로컬 브랜치 생성 확인
  • 생성된 브랜치 텍스트 확인 (마스터 브랜치와 동일)

*aws-test-branch 열어서 내용 수정

  • / 편집 / 수정 / 변경사항 커밋

브랜치 편집

  • 생성된 브랜치의 코드 내용 수정 및 커밋 메세지 수정
  • 브랜치 수정 확인
  • 내용 변경 확인

풀 요청 생성

*커밋하기전에 브랜치에서 풀 요청 생성 /

  • 풀 요청생성 클릭 후
    • 병합 클릭 / 빠른 전달 병합 선택, 병합 후 소스 브랜치~~ 체크 하고
    • 풀 요청 병합 클릭 / 이후 다시 파일을 열어 보면 두개의 파일이 커밋된것 확인.

풀 요청 생성( 내용을 합치는 작업 )

  • 풀 요청 선택 (비교 선택 후 풀요청 생성)
  • 변경 사항에서 내용 확인
  • 병합 방법 선택 (삭제 메시지 체크)
  • 풀 요청 확인

*코드 배포( CD )

  • 자동 배포 : 새로운 코드 에 대해서 수정, 업데이트 발생시 자동으로 배포하는것.
  • 롤링 배포 : 점층적 배포
  1. 코드배포에 필요한 역할 생성 . / IAM 서비스에서 생성
  • S3에 접근을 위한 역할생성
    • IAM / 역할 / 역할 생성 / AWS서비스, EC2 / 다음 / AmazonS3FullAccess 검색 후 다음 / 역할 이름
    • 입력(awstest_s3_role_abc) , 생성

S3 접근하기 위한 역할 생성

  • 서비스 선택 (EC2)
  • 연동할 정책 선택 (AmazonS3FullAccess 정책: 누구든지 접속 가능)
  • 역할 이름 지정
  • 코드 배포를 위한 역할 생성
    • IAM / 역할 / 역할 생성 /
    • AWS서비스, CodeDeploy / 다음 / + AWSCodeDeployRole 앞에 +클릭 하고 [다음]
    • 이름 입력 하고 역할 생성

코드 배포하기 위한 역할 생성

  • 서비스 선택(CodeDeploy)
  • AWSCodeDeployRole 정책 코드의 설정을 확장하여 편집 가능
  • 역할 이름 지정
  • 역할 생성 확인

  1. EC2 생성

EC2 생성

  • 인스턴스 이름 지정
  • 인바운드 보안 그룹 규칙 설정 ( ssh, http )
  • 고급 세부 정보의 인스턴스 프로파일에 생성한 역할 선택
  • ssh 접속

ssh 접속 후

  • yum update하고
  • ruby 설치
  • wget 설치

코드 배포에 필요한 파일 다운로드 (사용자로 전환)


파일을 업로드 / 배포할 S3 생성
CodeCommit / 배포 / 어플리케이션 / 어플리케이션 생성 /

코드 배포를 위한 버킷 생성

  • 버킷 이름 지정
  • 모든 퍼블릭 엑세스 차단 해제
  • 암호화 해제
  • 버킷 생성 확인

파일 다운로드 후 업로드

  • mywebapp.zip 파일을 다운받아서 업로드 확인

*배포 그룹 생성

application 생성(codecommit에서 코드 배포하기)

  • 이름 지정 후, 연동할 플랫폼 지정
  • 생성 확인

배포 그룹 생성

  • 배포 그룹 이름 지정 후 생성했던 코드 배포 역할 선택
  • 현재 위치: 롤링 배포, 블루/그린: 하나씩 배포
  • 태그 입력
  • 상황에 맞게 에이전트 설치 선택
  • 로드 밸런서 체크 해제 (EC2가 인스턴스 1개라서)

-생성이 되었다면 배포 생성 클릭

배포 생성

  • S3 zip 파일 url 붙여넣기
  • 배포 확인

배포 성공하면 EC2 퍼블릭IP로 로컬PC에서 접속해보기

배포 확인

  • EC2 퍼블릭 IP로 접속
  • /var/www/html/index.html 확인

*S3 버킷에 업로드한 zip 파일 삭제 후 index.html 파일 수정 후 다시 업로드 / 배포 / 접속 테스트


*EC2인스턴스 생성 후 SSH 접속이 안되면 아래와 같은 방법으로 접속 가능.

  • 키페어 새로 발급 / 받고 생성 / 인스턴스 선택 SSH 접속 클릭 하면 chmod 400 키페어파일
    • 현재 우리는 윈도우이기에 chmod 명령을 할 수 없음.
      • 키페어 파일을 C로 이동 후
      • cmd 창을 열고 C로 이동 dir 키페어 파일확인하고 아래 명령어 3줄 실행

이후 X-shell로 접속 해보고 그래도 안되면 Putty에 인증키 등록하고, 접속

인스턴스 생성 ( x-shell 접속이 안될 때 접속하는 방법)

  • 키 페어 생성
  • 키 페어의 권한 변경 (chmod 400)
  • 생성한 키 페어를 C:\로 이동 후 cmd창 열어서 현재 위치를 C로 이동 후 key-pair 확인(dir)
  • key-pair의 권한을 400으로 변경
  • 이후 X-shell로 접속 후 안돼면 putty로 접속

0개의 댓글