카테고리 없음

aws s3 cp…

jdg30621 2026. 2. 13. 13:25

터미널

 

 aws s3 cp…

 

파이썬. 

Boto3. Client

 

엑세스 키 ( 콘솔)

 

Access Key ID

Acceess Secrets

 

Was configure

 

EC2 -> S3 호출

이 때 필요한 것? IAM Role(+policy)

 

버킷에서 파일 읽어오기 -> AWS API 호출

Aws cp s3://my_bucket/index.php

 

EC2 -> RDS

Role설정 안함

대신 보안그룹에 인바운드 규칙 3306 (EC2 SG)

 

 

Import os

Import boto3

From botocore.exceptions import ClientError

 

s3_client = boto3.client(‘s3’)

 

 

Def upload_file_to _s3(file_path, bucket_name, object_key):

print(file_path)

print(bucket_name)

 

Def validate_bucket(bucket_name):

  Pass

 

Def main():

#1) 사용자가 버킷 이름과 파일 경로를 지정

Bucket_name = input(“버킷 이름을 입력하세요: “).strip()

file_path = input(“업로드할 파일의 경로를 립력하세요: “)

 

#2)존재하는 S3 버킷 파일인지 확인

If not validate_bucket(bucket_name):

Print(f”[에러] 존재하지 않는 S3버킷입니다: {bucket_name}

 

 

#2)존재하는 파일인지 확인

If not os. Path.isfile(file_path):

print(f”[에러] 존재하지 않는 파일입니다.: {file_path}”)

return

 

# 3)boto3을 이용해서 s3 버킷에 이미지 업로드

(upload_file_to_s3(file_path):

 

Elastic Beanstalk

   타켓그룹

 

IAM, S3, EC2(ASG, ELB), VPC, RDS, Lambda

 

 

Pip install “fastapi[standard]”

 

s3_client.create_bucket(Bucket="my-special-secret-bucket", CreateBucketConfiguration={"LocationConstraint": "ap-northeast-2"})

 

option_settings:

  aws:elasticbeanstalk:application:environment:

    PYTHONPATH: "/var/app/current:$PYTHONPATH"

  aws:elasticbeanstalk:container:python:

    WSGIPath: "main:app"

 

web: gunicorn main:app -w 5 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000

 

sudo dnf -y localinstall https://dev.mysql.com/get/mysql80-community-release-el9-4.noarch.rpm

sudo dnf -y install mysql mysql-community-client

 

eb terminate

 

——

 

메모의 내용이 점점 전문적으로 변하고 있네요! 이번 메모는 **AWS 리소스를 코드로 제어하는 방법(Boto3)**과 **웹 애플리케이션 배포 자동화(Elastic Beanstalk)**에 관한 핵심 내용입니다.

질문하신 코드의 의미와 사용법을 테마별로 정리해 드릴게요.

 

1. AWS를 제어하는 '파이썬 열쇠': Boto3

boto3는 파이썬 코드로 AWS의 모든 서비스(S3, EC2 등)를 조작할 수 있게 해주는 라이브러리입니다.

어떻게 사용하나요? (인증 방법)

  • 내 컴퓨터에서 쓸 때: aws configure 명령어를 터미널에 입력하고, 메모하신 Access Key IDSecret Access Key를 입력합니다. 이는 '아이디/비밀번호'를 내 컴퓨터에 저장하는 것과 같습니다.
  • EC2 서버 안에서 쓸 때: 보안상 키를 직접 넣지 않습니다. 대신 IAM Role을 EC2에 부여하면, 코드가 자동으로 권한을 얻어 S3 등을 호출합니다.

 

2. 파이썬 S3 업로드 코드 해석

적어주신 코드는 사용자가 입력한 파일을 S3 버킷으로 올리는 자동화 도구의 뼈대입니다.

  • s3_client = boto3.client('s3'): "이제부터 파이썬으로 S3를 조종하겠다"는 선언입니다.
  • create_bucket(...): 서울 리전(ap-northeast-2)에 새로운 저장소(버킷)를 만드는 코드입니다.
  • os.path.isfile(file_path): 사용자가 입력한 파일 경로가 실제로 컴퓨터에 존재하는지 확인하는 안전장치입니다.

 

3. EC2의 통신 방식 차이 (중요!)

메모에 적힌 두 가지 연결 방식의 차이를 이해하는 것이 매우 중요합니다.

대상 연결 방식 핵심 설정
EC2 → S3 API 호출 (IAM) IAM Role 통해 "파일 읽기/쓰기 권한" 부여
EC2 → RDS 네트워크 접속 (DB) **보안 그룹(Security Group)**에서 3306 포트 개방

4. Elastic Beanstalk & FastAPI (배포 설정)

작성하신 설정값들은 파이썬 웹 서비스를 AWS에 자동으로 올릴 때 필요한 '설명서'입니다.

  • option_settings: AWS 환경에서 파이썬 실행 경로(PYTHONPATH)를 설정하는 부분입니다.
  • web: gunicorn main:app ...: 서버를 실행하는 명령어입니다. uvicorn 작업자를 사용하여 속도가 빠른 FastAPI 앱을 띄우겠다는 뜻입니다.
  • eb terminate: 사용이 끝난 Elastic Beanstalk 환경(서버, 로드밸런서 등)을 모두 삭제하여 비용이 나오지 않게 하는 명령어입니다.

 

5. 데이터베이스 클라이언트 설치 (DNF)

마지막 부분의 sudo dnf install은 Amazon Linux 2023 같은 최신 서버 환경에서 MySQL 접속기를 설치하는 과정입니다. 이 프로그램이 깔려 있어야 터미널에서 mysql -h ... 명령어로 RDS에 접속할 수 있습니다.

 

💡 다음 단계로 도움을 드릴까요?

작성 중이신 S3 파일 업로드 파이썬 스크립트가 아직 미완성 상태인데(함수 호출 부분 등), 제가 실제로 작동하는 완성된 코드로 다듬어 드릴까요? 아니면 FastAPI를 Elastic Beanstalk에 올리는 절차가 궁금하신가요?

 

 

——

 

메모의 내용이 점점 전문적으로 변하고 있네요! 이번 메모는 **AWS 리소스를 코드로 제어하는 방법(Boto3)**과 **웹 애플리케이션 배포 자동화(Elastic Beanstalk)**에 관한 핵심 내용입니다.

질문하신 코드의 의미와 사용법을 테마별로 정리해 드릴게요.

 

1. AWS를 제어하는 '파이썬 열쇠': Boto3

boto3는 파이썬 코드로 AWS의 모든 서비스(S3, EC2 등)를 조작할 수 있게 해주는 라이브러리입니다.

어떻게 사용하나요? (인증 방법)

  • 내 컴퓨터에서 쓸 때: aws configure 명령어를 터미널에 입력하고, 메모하신 Access Key IDSecret Access Key를 입력합니다. 이는 '아이디/비밀번호'를 내 컴퓨터에 저장하는 것과 같습니다.
  • EC2 서버 안에서 쓸 때: 보안상 키를 직접 넣지 않습니다. 대신 IAM Role을 EC2에 부여하면, 코드가 자동으로 권한을 얻어 S3 등을 호출합니다.

 

2. 파이썬 S3 업로드 코드 해석

적어주신 코드는 사용자가 입력한 파일을 S3 버킷으로 올리는 자동화 도구의 뼈대입니다.

  • s3_client = boto3.client('s3'): "이제부터 파이썬으로 S3를 조종하겠다"는 선언입니다.
  • create_bucket(...): 서울 리전(ap-northeast-2)에 새로운 저장소(버킷)를 만드는 코드입니다.
  • os.path.isfile(file_path): 사용자가 입력한 파일 경로가 실제로 컴퓨터에 존재하는지 확인하는 안전장치입니다.

 

3. EC2의 통신 방식 차이 (중요!)

메모에 적힌 두 가지 연결 방식의 차이를 이해하는 것이 매우 중요합니다.

대상 연결 방식 핵심 설정
EC2 → S3 API 호출 (IAM) IAM Role 통해 "파일 읽기/쓰기 권한" 부여
EC2 → RDS 네트워크 접속 (DB) **보안 그룹(Security Group)**에서 3306 포트 개방

4. Elastic Beanstalk & FastAPI (배포 설정)

작성하신 설정값들은 파이썬 웹 서비스를 AWS에 자동으로 올릴 때 필요한 '설명서'입니다.

  • option_settings: AWS 환경에서 파이썬 실행 경로(PYTHONPATH)를 설정하는 부분입니다.
  • web: gunicorn main:app ...: 서버를 실행하는 명령어입니다. uvicorn 작업자를 사용하여 속도가 빠른 FastAPI 앱을 띄우겠다는 뜻입니다.
  • eb terminate: 사용이 끝난 Elastic Beanstalk 환경(서버, 로드밸런서 등)을 모두 삭제하여 비용이 나오지 않게 하는 명령어입니다.

 

5. 데이터베이스 클라이언트 설치 (DNF)

마지막 부분의 sudo dnf install은 Amazon Linux 2023 같은 최신 서버 환경에서 MySQL 접속기를 설치하는 과정입니다. 이 프로그램이 깔려 있어야 터미널에서 mysql -h ... 명령어로 RDS에 접속할 수 있습니다.

 

💡 다음 단계로 도움을 드릴까요?

작성 중이신 S3 파일 업로드 파이썬 스크립트 아직 미완성 상태인데(함수 호출 부분 ), 제가 실제로 작동하는 완성된 코드 다듬어 드릴까요? 아니면 FastAPI Elastic Beanstalk 올리는 절차 궁금하신가요?