리눅스/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값은 따로 저장하거나 복사 해둬야 한다.
- 발급되는 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
- 1. unzip 패키지 설치
- 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]: (엔터)
- aws configure
- 액세스 키 : AWS 자원에 접근하거나, API를 호출할 때 사용 된다.
- 모든 설정 완료 후 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 접속하여 확인
- aws s3 cp /home/ubuntu/test1.txt s3://mytest-test01
- 보안자격증명 -> 액세스 키 만들기 (하단 내리면 있음) -> 사용사례 CLI 선택 후 확인
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