안녕하세요
저는 어제 AWS에서 진행하는
Moving to AWS Serverless 워크샵
을 다녀왔습니다.

행사 일정과 장소는
일시: 2019년 3월 12일(화) 9:30 ~ 17:30
장소 : 역삼역 GS 타워 14층 305, 306호
에서 진행됬습니다.

상세 커리큘럼 페이지 링크

우선 워크샵은 기본적인 AWS 서비스를 다룰줄 아는 분들을 대상으로
진행했습니다.
사전에  EC2, S3, VPC, lambda, auto scaling
정도에 서비스들을 잘 다루지는 못해도 각각 어떤 서비스 인지 정도 알고 가시면 좋을것 같습니다.

행사장에 도책해보니 커비도 준비되어 있었고
강의실 안에는 과자랑 물들이 준비되어 있었습니다 ㅎㅎ

그리고 작게 IoT 서비스를 체험 할 수있는 곳도 있었는데
어떻게하는지 몰라서... 못해봤네요 ㅎㅎ

그리고 왼쪽 벽에는 아이콘들을 가지고 도식화한 내용이 있었습니다 ㅎㅎ
저희도 칠판에 저렇게 해도 좋을것 같네요 ㅎㅎ


아무튼 사설은 여기까지

저는 이번 교육을 듣기 전 lambda, cognito dynamodb, ec2, s3,api gatway등 1년 가까이
서비스를 사용했었습니다.
그래서 교육 내용을 듣는데 큰 어려움이 없었고
아는 내용이라고 하더라도
 
cloud9또는 chalice같은 새로운 개발환경에 대한 내용을 배울수 있어 좋았습니다.

또한 실습중 저는 DB의 종류가 너무 많아
어느정도 규모 또는 어떤 특성에 어떤 DB 를
사용해야 하는지 평소 고민었는데
이런 내용들을 문의하면서
가이드를 받을 수 있어 수업 내용 이상에 가치를 얻었다고 생각합니다.

이런 실습 형태의 교육은 처음으로 진행 되었으며
앞으로 새로운 주제들로 지속적으로 진행한다고하니

그때마다 꼭 참석 해야할것 같습니다 ㅎㅎ


해당 수업은 스타트업 처럼 규모가 작고 적은인원으로 많은 다양한 일을 처리하면서 자문을 구하거나 가이드를 받기 어려운 분들은 정말 많은 내용들을 받아 갈 수있을 것으로 생각 됩니다.

그럼 여기까지 Moving to AWS Serverless
후기였습니다 ㅎㅎ

끝까지 읽어주셔서 감사합니다.


AWS CloudFront에서 default root object 모든 Path 적용 이슈 우회 방법



- 작업 개요

Cloud Front의 경우 Default Root Object 설정이 최상위 Directory 에서 밖에 적용이 되지 않는다.

S3에서 웹사이트 호스팅(Static website hosting)을 할때 S3에서 [Index document] 를 index.html로 설정한다면 

아래 표와 같기 Redirect를 해준다.

접속 URL 

Redirect URL 

 www.example.com/

 www.example.com/index.html

 www.example.com/test/ 

 www.example.com/test/index.html


그러나 Cloud Front 에서는 아무리  Default Root Object를 설정해도 최상위 Path를 제외하고는 오류가 발생한다.

접속 URL 

Redirect URL 

 www.example.com/

 www.example.com/index.html

 www.example.com/test/ 

ERROR(403)


따라서 Cloud Front를 적용 할 떄 최상위 path를 제외하고는 url을 전체 다 입력 해줘야한다.

해당 이슈에대한 우회 방법으로 Path와 같은 파일 명으로 html 파일을 생성고,

그 파일 S3에 업로드 할때 Header에  Content-Type을 text/html로 설정하면 해당 파일을 html로인식해서 

www.example.co.kr/test/ 로 입력해도 CloudFont 서비스가 가능해진다.



- 작업 절차

웹 서비스를 할 S3에 html 파일을 업로드하고, html 파일 명을 확장자를 제외한 Path 명으로 변경한다.

그런 다음 html 파일의 Meta data에서 Content-Type을 text/html로 변경한다. 

그리고 Cloud Front의 캐시를 초기화 시킨다.



1. S3에서 파일을 선택한다음 [Properties]-[Metadata]에서 

[Content-Type]을 [text/html]로 변경해준다.


2. 그런 다음 파일 명에서 확장자를 지운다.

3. CloudFont 에서 Invalidations 탭에 아래와 같이 edge location에 cache를 초기화 시킨다.

(이미 edge Location에 올라가있는 파일은 Metadata 값이 TTL 시간이 지나더라도 초기화 되지 않으므로 꼭 이 작업을 해주어야한다.)



해당 작업을 완료하면 CloudFont와 S3를 사용해 https 서비스를 사용하면서 모든 Root에 index 파일을 설정한것 처럼

millionairedeveloper.example.co.kr/test/

test 가 html이기 때문에 서비스가 가능해진다.




그럼 오늘도 행복한 하루 되세요.

'AWS > S3' 카테고리의 다른 글

AWS S3를 EC2 인스턴스에 s3fs를 이용한 mount 예제  (2) 2019.01.28

 

 

 

AWS EC2 Pem key 없이 ssh 접속 가능하게 설정하기


작업 개요

- EC2에서 Pem 키없이 비밀번호로 접속을 해야하는 상황에서 작업하는 방법

작업 환경 

서비스 : EC2

AMI : Amazon Linux AMI 2018.03.0

 

작업 내용 

- EC2에 설정파일을 수정해 EC2에 비밀번호를 이용해 접속 가능하도록 설정하고 ec2-user 사용자의 비밀번호를 설정한다.

 

** 해당 작업은 개발에 단순 편의를 위한 작업이므로 보안상 이슈가 발생하기 쉽습니다. 중요한 서버에는 적용하지 않는 것을 권장 드립니다.


 

작업 절차 

 

      1. ssh 설정 파일인 sshd_config 파일을 연다

          - sudo vi /etc/ssh/sshd_config

 

      2. 설정파일에서 아래 내용을 수정한다.

          -PasswordAuthentication 값을 yes로 변경해 비밀번호로 접근 가능하도록 설정한다.

 PasswordAuthentication no -> PasswordAuthentication yes

 

      3. EC2에서 Aurora Serverless에 접근 가능한지 먼저 확인한다.

          - mysql -h'[end-point]' -u[mysql - user] -p

            ex) mysql -h'test.cluster-cksasdwsxfewefd.ap-northeast-2.rds.amazonaws.com' -uuser -p

 

      4. sudo passwd 명령어를 사용해 ec2-user 비밀번호를 설정한다.

          - sudo passwd ec2-user

 

      5. ssh 서비스를 재시작 한다.

          - sudo service ssh restart

 

 

그럼 오늘도 행복한 하루 되세요.

 

AWS RDS Aurora Serverless 로컬 접속 ( local ) 개발 인스턴스 구성


작업 개요

- Aurora Serverless 의 end point는 내부 end point이기 때문에 로컬에서 접근하기위해서는 우회 방법이 필요하다.

해당 가이드는 haproxy 오픈소스 로드벨런서를 사용해 외부에서 접근 가능하도록 하기 위함이다.

작업 환경 

서비스 : EC2

AMI : Amazon Linux AMI 2018.03.0

보안그룹 : EC2에서 Aurora Serverless에 접근 가능하도록 설정한다. 

또한 EC2에 외부에서 접근 가능 하도록 설정한다.

작업 내용 

haproxy 오픈소스 로드벨런서를 EC2 안에 구성을 하고 로드벨런서에  Aurora Serverless를 연결해 로컬에서 Aurora Serverless에 접속 가능 하도록 한다.



작업 절차 


      1. ec2 생성  

          - test 인스턴스 img :  Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type


      2. haproxy 구성을 위해 필요 페키지 설치

          - sudo yum -y install haproxy mysql


      3. EC2에서 Aurora Serverless에 접근 가능한지 먼저 확인한다.

          - mysql -h'[end-point]' -u[mysql - user] -p

            ex) mysql -h'test.cluster-cksasdwsxfewefd.ap-northeast-2.rds.amazonaws.com' -uuser -p


      4. haproxy config 파일 수정 -내용을 아래 내용으로 모두 변경한다.

          - sudo vi /etc/haproxy/haproxy.cfg

---------------------------------------------------------------------------------------------------------------------------------

        // 내용

        global


            log         127.0.0.1 local2


            chroot      /var/lib/haproxy

            maxconn     4000

            pidfile     /var/run/haproxy.pid

            user        haproxy

            group       haproxy

            daemon


            stats socket /var/lib/haproxy/stats



        defaults

            log                     global

            option                  tcplog

            option                  dontlognull

            option                  redispatch

            retries                 3

            timeout queue           1m

            timeout connect         10s

            timeout client          1m

            timeout server          1m

            timeout check           10s

            maxconn                 3000


        listen mysql-cluster 0.0.0.0:3306

              mode tcp

              balance roundrobin

              option tcpka

              #server sdm-db1 [aurora serverless end-point]:3306 check

              server sdm-db1 test.cluster-cksasdwsxfewefd.ap-northeast-2.rds.amazonaws.com:3306 check

----------------------------------------------------------------------------------------------------------------------------------------

****listen mysql-cluster 0.0.0.0:3306 에서 입력한 포트를 EC2 보안 그룹에서 외부에서 접속 가능하도록 열어준다.

 만약 여러 RDS를 대상으로 해당 작업을 해야하는 경우 포트만 다르게 여러 연결을 구성하면 된다.


        listen mysql-cluster 0.0.0.0:3306

              mode tcp

              balance roundrobin

              option tcpka

              #server sdm-db1 [aurora serverless end-point]:3306 check

              server sdm-db1 test.cluster-cksasdwsxfewefd.ap-northeast-2.rds.amazonaws.com:3306 check


        listen mysql-cluster 0.0.0.0:3305

              mode tcp

              balance roundrobin

              option tcpka

              #server sdm-db1 [aurora serverless end-point]:3306 check

              server sdm-db1 test.cluster-cksasdwsxfewefd.ap-northeast-2.rds.amazonaws.com:3306 check


      5. haproxy 재시작

          - sudo /etc/init.d/haproxy restart


이상 입니다. ㅎㅎ

그럼 오늘도 행복한 하루 되세요.

AWS Certificate Manager SSL 인증서 등록


작업 개요

- AWS  Certificate Manager 서비스는 AWS 서비스에서 제공하는 무료 SSL 인증서다.

- 해당 서비스는 AWS 서비스에서만 사용 가능한 인증서이며 적용 가능한 서비스에는 Load Balancer, Cloud Front, API Gateway 등의 서비스 들이 있다.

작업 내용 

AWS  Certificate Manager 서비스에서 SSL 인증서를 생성한다.해당 가이드에서는 관리자 메일 승인 절차를 통한 인증을 진행한다.



작업 절차 


- [서비스]를 선택하고 보안, 자격 증명 및 규정 준수 탭에 [Certificate Manager]를 선택한다.

- [시작하기]를 누른다.

- [도메인 이름]을 입력한다. 추가로 도메인 인증을 하기 원하는 경우 [이 인증서에 다르 이름 추가] 버튼을 선택하고 도메인을 입력한다.(서브 도메인 전체를 추가하는 경우 *.example.com 형태로 한다. 만약 test.test2.example.com 도메인 처럼 앞에 2가지가 있는 경우에는 하나하나 추가해줘야한다.)

- [이메일 인증]을 선택하고 [다음]버튼을 누른다.

- 도메인을 확인하고 확인 및 요청을 누르면 도메인 관리자에게 확인 메일이 간다.
- 확인 메일에서 아래 버튼을 클릭한다.


- [I Approve] 버튼을 누르면 인증이 끝난다.



- 요청이 승인되면 [상태]가 발급 완료로 나온다.




그럼 오늘도 행복한 하루 되세요.

AWS S3를 EC2 인스턴스에 Mount 예제


작업 개요

- S3를 서버에서 일반 스트로리지 또는 NAS를 mount 한 형태처럼 사용하기 위해 s3fs 오픈 소스를 사용해 서버에 mount를 하는 작업이다.

작업 환경 

서비스 : EC2

AMI : Amazon Linux AMI 2018.03.0


작업 내용 

- s3fs를 설치하고 s3 버킷을 서버에 mount 한다.



작업 절차 


1. yum update

  sudo yum  -y update all


2. 필요한 페키지 설치

  sudo yum -y install automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel


3. /usr/src 이동

  cd /usr/src


4. s3fs-fuse 프로젝트 다운로드

  sudo git clone https://github.com/s3fs-fuse/s3fs-fuse.git


5. 프로젝트 소유자 변경

  sudo chown -R ec2-user:ec2-user s3fs-fuse


6. s3fs-fuse 로이동

  cd s3fs-fuse


7. autogen.sh 실행

  ./autogen.sh


8. configure 실행

  ./configure --prefix=/usr --with-openssl


9. make 실행

  make


10. make install 실행

  sudo make install


11. s3fs 위치 확인

  which s3fs


12. s3 접근 가능한 IAM 설정 파일 만들기

  sudo vi /etc/passwd-s3fs

  - 파일 내용

  Access Key ID:Secret Access Key

  ex ) AXXXXXXXXXXXXXXXXXX:ZhiZXXXXXXXXXXXXXXXXXXXXX


13. 파일 작업 권한 및 소유권 설정

  sudo chmod 600 /etc/passwd-s3fs

  sudo chown  ec2-user:root /etc/passwd-s3fs


14. mount 할 디렉토리 생성

  sudo mkdir /mys3bucket1


15. 버킷 mount

    sudo s3fs [버킷 명] [마운트 경로]

      -o use_cache=/tmp

      -o allow_other

      -o uid=[사용자 ID]

      -o gid=[사용자 그룹 ID]

      -o multireq_max=20

      -o use_path_request_style

      -o url=https://s3-[리전 id].amazonaws.com


    ex) sudo s3fs s3bucketname /mys3bucket1 -o use_cache=/tmp -o allow_other -o uid=500 -o gid=500 -o multireq_max=5 -o use_path_request_style -o url=https://s3-ap-northeast-2.amazonaws.com


    ** 참고

      -EC2 user ID 확인 :  id -u [user name]

      -EC2 user 그룹 ID 확인 :  id -g [user name]

- umount 방법 

- pkill -9 -t s3fs

그럼 오늘도 행복한 하루 되세요.


+ Recent posts