본문 바로가기

Dot Programming/Python

[Python] awscli, boto3를 이용하여 AWS S3 연동하기

    Python - S3연동 과정 요약  

    AWS S3

         1. S3 버킷 생성 (버킷명, 리전선택)

         2. 보안 자격증명 IAM 설정

         3. 사용자 추가 확인 → 액세스 키 ID, 비밀 액세스 키 확인

     

    Python

         4. boto3, awscli 설치

         5. awscli로 AWS계정 연결

         6. boto3를 이용하여 AWS계정의 모든 버킷 출력 가능

     

     

     

    1.  S3 버킷 생성 (버킷명, 리전선택)

     a. S3 버킷 설정

          버킷명 : 고유한 이름 마음대로,

           리전 : 아시아 태평양(서울)

     

    버킷 생성하기

     

    b. 다른 구성은 기본 설정 그대로 하고 간단한 실습을 위해 퍼블릭 액세스 차단은 모두 비활성화를 해준다.

    퍼블릭 액세스 차단

     

    c. [권한]에 들어가서 버킷 정책 JSON 설정한다.

       퍼블릭으로 하면 남들이 해당 S3에 접속이 가능하고 액션은 Put, Get을 할 수있다.

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "AddPerm",
                "Effect": "Allow",
                "Principal": "*",
                "Action": [
                    "s3:GetObject",
                    "s3:PutObject"
                ],
                "Resource": "arn:aws:s3:::{S3 버킷 이름}/*"
            }
        ]
    }

     

     

    2. 보안 자격 증명 IAM 생성 및 설정

    a. 계정을 클릭하여 [내 보안 자격 증명]을 클릭한다.

     

     

    b. [액세스 관리 - 사용자 -사용자 추가]를 하여 사용자를 생성한다.

           사용자 이름 : 마음대로,

           액세스 유형 선택 : 프로그래밍 방식 액세스

          ‣  정책 : AmazonS3FullAccess(S3에 접근할 수 있는 권한)

     

     

    기존 정책 직접 연결을 클릭하고 정책 필터에 'S3'를 입력한 후 AmazonS3FullAccess를 클릭한다.

    권한 설정

     

     

     

    3. 사용자 추가 확인 → 액세스 키 ID, 비밀 액세스 키 확인

     

    다음 설정들은 그냥 넘어가고 생성을 하면 아래와 같이 액세스 키 ID 비밀 액세스 키를 얻는다.

     

     

    이제 실제로 Python으로 AWS S3에 파일을 올리거나 다운로드를 받을 수 있다. 사용할 라이브러리는 awscli와 boto3이다.

    awscli로 AWS계정과 연결을 하고 boto3를 이용하여 AWS계정의 모든 버킷을 출력 가능하다.

     

     

     

    4. boto3, awscli 설치

    a. python에 boto3, awscli 설치

    $ (sudo) pip3 instsall boto3

     

    $ (sudo) pip3 instsall awscli

     

    b. awscli가 설치가 완료되었으므로 aws configure 명령을 이용하여 AWS 계정 연결을 수행할 수 있다.

    $ aws configure
    AWS Access Key ID [None]: {자신의 IAM Access KEY}
    AWS Secret Access Key [None]: {자신의 IAM Secret Access KEY}
    Default region name [None]: ap-northeast-2
    Default output format [None]: 

     

     

    c. boto3를 이용하여 AWS계정의 모든 버킷을 출력할 수 있다.

    import boto3
    
    s3 = boto3.resource('s3') # s3에 대한 권한 및 상태를 s3(변수)에 저장
    for bucket in s3.buckets.all():
        print(bucket)

     

    Python- AWS S3 연동 완료


    ※ 참고 사이트

    https://ndb796.tistory.com/280