리눅스/Bash Script

[Bash Script] Bash Script 프로젝트 : CloudUploader(AWS CLI, S3) 설정

jetblack1 2023. 11. 12. 16:50

1. 설정 및 인증

  • Ubuntu Version : 22.04.3 LTS, AWS S3로 진행한다.
  • AWS 콘솔 -> S3 버킷 만들기 : 버킷 이름 및 리전 만 설정 후 나머진 기본값으로 설정
    • 버킷이름 : mytest-test01 (버킷 이름은 유니크 해야 하기 때문에 중복되면 안됨.)
    • AWS 리전 : 아시아(서울)
    • ACL 비활성화(권장)
    • 이 버킷의 퍼블릭 액세스 차단 설정 : 모든 퍼블릭 액세스 차단
    • 버킷 버전 관리 : 비활성화
    • 기본 암호화 : Amazon S3 관리형 키(SSE-S3)를 사용한 서버 측 암호화
    • 버킷 키 : 활성화

  • AWS CLI
    1. 액세스 키 발급
    • 보안자격증명 -> 액세스 키 만들기 (하단 내리면 있음) -> 사용사례 CLI 선택 후 확인
      • 발급되는 key값은 따로 저장하거나 복사 해둬야 한다.

    • AWS CLI 설치(AWS CLI v2)
      • 1. unzip 패키지 설치
        sudo apt-get install -y unzip
      • 2. AWS CLI v2 패키지 다운로드
        curl -s "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
      • 3. 패키지 압축해제
        unzip awscliv2.zip
      • 4. AWS CLI 설치
        sudo ./aws/install
      • 5. AWS CLI 버전 확인
        /usr/local/bin/aws --version
        aws-cli/2.13.34 Python/3.11.6 Linux/6.2.0-1012-aws exe/x86_64.ubuntu.22 prompt/off

    • AWS Configure 설정
      • 액세스 키 : AWS 자원에 접근하거나, API를 호출할 때 사용 된다.
        • aws configure
          • AWS Access Key ID [None]: <액세스키>
          • AWS Secret Access Key [None]: <비밀 액세스 키>
          • Default region name [None]: ap-northeast-2
          • Default output format [None]: (엔터)
    • 모든 설정 완료 후 Ubuntu에서 S3 버킷으로 파일이 정상적으로 업로드 되는지 확인
      •  aws s3 cp /home/ubuntu/test1.txt s3://mytest-test01
        • 업로드 정상 메시지 : upload: ./test1.txt to s3://mytest-test01/test1.txt
      • S3 버킷 정상 업로드 확인
        • 1.  aws s3 ls s3://mytest-test01
        • 2. AWS 콘솔에서 S3 접속하여 확인


2. CLI 인수 구문 분석 및 파일 업로드

#!/bin/bash

# 2.CLI 인수구문분석===========================

# Check if the file path is provided
# 스크립트 실행 시 파일 경로가 비어있다면 스크립트 올바른 사용법을 터미널에 출력한다.
if [ -z "$1" ]; then 
    echo "Usage: $0 /path/to/file.txt [optional arguments]"
    exit 1
fi

# Set the file path
# $1 파라미터 값을 FILE_PATH 변수에 할당한다.
FILE_PATH=$1

# 3.파일확인및 업로드===========================

# Check if the file exists
# $1에 파일이 존재하지 않으면 오류 메세지를 출력하고 스크립트를 종료한다.
if [ ! -f "$FILE_PATH" ]; then
    echo "Error: File not found at $FILE_PATH"
    exit 1
fi

# Upload the file to AWS S3
# aws s3 cp 명령어를 이용하여 $1의 파일을 S3버킷에 복사한다.
aws s3 cp "$FILE_PATH" s3://mytest-test01

#pv를 사용하여 파일을 업로드하면서 진행률을 표시
#pv "$FILE_PATH" | aws s3 cp - s3://mytest-test01/$(basename "$FILE_PATH")

# Check the exit code of the aws command for success or failure
# aws s3 cp 명령의 종료코드가 0이면 성공적으로 실행되었다고 판단하고 성공 메세지를 출력한다.
# 그렇지 않다면 오류메세지를 출력한다.
if [ $? -eq 0 ]; then
    echo "File uploaded successfully to S3!"
else
    echo "Error uploading file to S3. Check the error message above."
fi