Client Deploy(S3)

Siwoo Pak·2021년 9월 16일
0

AWS

목록 보기
8/15

AWS S3 호스팅 과정(AWS 사이트에서)

  • 구현이 완성된 정적 웹페이지를 빌드
    • 구현이 완료된 코드를 npm run build로 빌드.
      빌드: 작성한 코드의 불필요한 데이터를 없애고, 통합 및 압축하여 배호하기 이상적인 상태로 만드는 과정.
      이 과정을 통해 데이터의 용량이 줄어들고, 웹사이트의 로딩속도가 빨라짐
      *환경변수를 담은 .env 파일 확인. 서버의 주소에 'http://'나 'https://'를 포함해야 함.
  • S3대시보드에 접속하여 버킷 생성, 생성한 버킷을 정적 웹사이트 호스팅용으로 구성
    • s3 메인화면으로 접속
    • [버킷 만들기] 버튼 클릭

      *버킷 이름은 선택한 AWS레전에서 고유해야 함
    • 화면 최하단의 [버킷 만들기] 클릭으로 버킷 생성
    • 생성된 버킷의 이름 클릭
      *아래와 같은 화면이 보임
    • 속성 메뉴 탭을 클릭
    • 여러 속성 중에 정적웹사이트 호스팅의 [편집]버튼 클릭
    • '활성화'에 체크 후 [변경 사항 저장]버튼 클릭
    • 생성된 버킷 웹사이트 엔드포인트 주소 확인
  • 빌드된 정적 웹페이지를 버킷에 업로드
    • 객체 메뉴탭 클릭
    • [업로드] 버튼 클릭
    • build 폴더 안에 폴더,파일들 드래그앤드랍으로 업로드 대기목록으로 이동시키고 [업로드]버튼 클릭하여 버킷에 담음
  • 퍼블릭 액세스차단 설정 해제, 다른 사용자의 접근 권한을 부여하는 버킷 정책 생성
    • 해당 버킷의 권한 탭으로 이동
    • 퍼블릭 액세스 차단 메뉴의 '편집' 버튼 클릭
    • 모든 퍼블릭 액세스 차단 해제 후의 변경 사항 저장
    • 권한 메뉴의 버킷 정책 부분 [편집] 버튼 클릭
    • [정책 생성기] 버튼 클릭
      • Select Type of Policy: S3 Bucket Policy 선택
      • Principal: *
        권한을 적용할 사용자를 정함. '' 모두에게 공개
      • Actions: getObject 선택
        *getObject: 버킷에 접근하는 모든 사용자 버킷 내에 저장된 객체 데이터를 읽을 수 있게 됨
      • ARN: arn:aws:s3:::[버킷명]/*
    • [Add Statement] 버튼 클릭
    • 활성화된 [Generate Policy] 버튼 클릭
    • 생성된 정책(JSON형식)을 복사한 뒤 정책에 붙여넣고 [변경사항 저장] 버튼 클릭
    • 웹사이트의 엔드포인트로 접속하면 정상적인 화면이 출력됨

AWS CLI 설치 및 확인, 제거

  • 최신 버전의 AWS CLI설치
    • Mac
      $ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
      $ sudo installer -pkg AWSCLIV2.pkg -target /
    • Linux
      $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
      $ unzip awscliv2.zip
      $ sudo ./aws/install
  • 특정 버전의 AWS CLI 설치
    • Mac
      $ curl "https://awscli.amazonaws.com/AWSCLIV2-2.0.30.pkg" -o "AWSCLIV2.pkg"
      $ sudo installer -pkg AWSCLIV2.pkg -target /
    • Linux
      $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip" -o "awscliv2.zip"
      $ unzip awscliv2.zip
      $ sudo ./aws/install
  • 설치 확인
    • Mac
     $ which aws
      $ aws --version
    • Linux
    $ aws --version
  • 제거
    • Mac, Linux 동일
    $ which aws // 심볼릭링크 들어 있는 폴더 검색
    $ ls -l /usr/local/bin/aws // 심볼릭링크가 가리키는 설치 포덤 검색
    $ sudo rm /usr/local/bin/aws // 2개의 심볼릭 링크 삭제
    $ sudo rm /usr/local/bin/aws_completer
    $ sudo rm -rf /usr/local/aws-cli // 기본 설치 폴더 삭제

AWS CLI로 호스팅

AWS IAM을 이용한 어드민 그룹 생성 및 사용자 추가

  • Identity and Access Management의 약자
  • 사용자,그룹의 권한 부여, 리소스 접근 제어
  • 제한된 권한의 계정을 생성하는 이유
    • 공용 계정 공유의 문제점
    • 전화, 메일 등의 방법은 보안에 취약
    • 로그인 추적, 관리의 어려움
  • IAM 서비스에서 Admin 그룹 생성
    • 대시보드의 사용자 그룹 클릭
    • [그룹 생성] 버튼 클릭
    • 사용자 그룹명 입력
    • 권한 정책 연결에서 'AdministratorAccess' 검색하고 체크
    • 하단의 [그룹 생성] 버튼 클릭
  • IAM 서비스에서 사용자 생성
    • 대쉬보드에서 사용자 클릭
    • [사용자 추가] 버튼 클릭
    • 사용자 이름 입력 및 자격 증명 유형 체크 후 [다음:권한] 버튼 클릭
    • 생성한 그룹에 체크하고 [다음:태그] 버튼 클릭
    • 3,4단계 패스하고 5단계로 들어가면 엑세스 키 ID와 비밀 엑세스 키 복사하여 보관(.csv파일로도 저장가능)

AWS CLI로 S3 서비스 사용하기

  • IAM에서 그룹을 만들고 사용자를 그룹에 추가한 이유는 해당 사용자의 액세스키 ID와 비밀엑세스 키를 이용해야 CLI를 사용할수 있기 때문
  • 위의 명시된 AWS CLI 내용대로 터미널에 설치함
  • AWS CLI와 IAM 사용자 연결
$ aws configure
AWS Access Key ID [None]: 발급받은 액세스키 ID 입력
AWS Secret Access Key [None]: 발급받은 비밀 엑세스키 입력
Default region name []: S3의 리전 위치 입력
Default output format []: json
  • S3 버킷 관련 명령어

    • 버킷 목록 조회 : aws s3 ls
    • 버킷 생성: aws s3 mb s3://[버킷명]
    • 버킷 삭제: aws s3 rb s3://[버킷명]
  • S3 오브젝트 관련 명령어

    • 오브젝트 업로드(동기화): aws s3 sync [로컬의 빌드경로] s3://[버킷명]
    • 오브젝트 목록 조회: aws s3 ls s3://[버킷명]
    • 오브젝트 삭제: aws s3 rm s3://[버킷명]/[파일명]
  • 정적 웹 호스팅

    • 구성
    $ aws s3 website s3://{버킷이름} —index-document index.html —error-document error.html
    • 종료
    $ aws s3api delete-bucket-website --bucket [버킷명]
  • 퍼블릭 엑스 정책 업데이트

    • 홈 디렉터리에서 bucket_policy.json 파일 생성 후
      다음 내용 입력

      $ nano ~/bucket_policy.json
      {
      "Version":"2012-10-17",
      "Statement":[{
        "Sid":"PublicReadGetObject",
        "Effect":"Allow",
        "Principal":"*",
        "Action":"s3:GetObject",
        "Resource":"arn:aws:s3:::practice-bucket-deploy/*"
      }]
      }
    • 정책 파일 버킷에 업로드

      # mac OS
      $ aws s3api put-bucket-policy  --bucket [버킷명] --policy file:///Users/[사용자명]/bucket_policy.json 
      
      # Ubuntu 
      $ aws s3api put-bucket-policy  --bucket [버킷명] --policy file:///home/[사용자명]/bucket_policy.json 

      참고: AWS CLI 설치(https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-linux.html)

profile
'하루를 참고 인내하면 열흘을 벌 수 있고 사흘을 참고 견디면 30일을, 30일을 견디면 3년을 벌 수 있다.'

0개의 댓글