본문 바로가기
IT/Python

aws s3 upload image using boto3, 이미지 올리기

by Jang HyunWoong 2019. 4. 20.

1. AWS S3에서 버킷을 생성한다.

2. 버킷 이름을 정한다.

3. 버킷의 권한을 Public으로 변경한다. (테스트 용이므로 퍼블릭 엑세스 가능하도록 변경)

4. IAM 키를 만든다. 자세한 사항은 검색해서 하도록 한다. 여기서는 있다고 가정한다.

5. 액세스 관리자에 S3에 관한 권한이 있어야 한다. 정책을 추가하도록 한다.

6. 보안 자격 증며에서 액세스 키를 만든다. 액세스 키를 누르면 처음 한번만 창이 뜨는데, 그 후에는 안뜬다.

csv파일을 받을 수 있는데, 거기에 secret key가 있으니 받도록 한다.

7. 위에서 받은 키를 가지고 아래 정보를 입력한 파일을 만든다.

아래는 아마존에서 설명한 설명이다. 참고할 것.

But, 나는 그냥 파일을 하나 만들고 거기에 저장했다. 아래 사진 처럼

 

AWS 자격 증명 설정

AWS SDK for Java에 사용할 자격 증명은 여러 가지 방법으로 설정할 수 있지만, 권장 방법은 다음과 같습니다.

로컬 시스템의 다음 위치에 있는 AWS 자격 증명 프로필 파일에서 자격 증명을 설정합니다.

Linux, macOS, or Unix의 ~/.aws/credentials

Windows의 경우 C:\Users\USERNAME\.aws\credentials

이 파일에는 다음 형식의 행이 포함되어야 합니다.

[default]

aws_access_key_id = your_access_key_id

aws_secret_access_key = your_secret_access_key

your_access_key_idyour_secret_access_key 값을 자신의 고유 AWS 자격 증명 값으로 대체합니다.

AWS_ACCESS_KEY_ID 및 AWS_SECRET_ACCESS_KEY 환경 변수를 설정합니다.

Linux, macOS, or Unix에서 이러한 변수를 설정하려면 export를 사용합니다.

export AWS_ACCESS_KEY_ID=your_access_key_id

export AWS_SECRET_ACCESS_KEY=your_secret_access_key

Windows에서 이러한 변수를 설정하려면 set을 사용합니다.

set AWS_ACCESS_KEY_ID=your_access_key_id

set AWS_SECRET_ACCESS_KEY=your_secret_access_key

EC2 인스턴스의 경우 IAM 역할을 지정하고 나서 해당 역할에 EC2 인스턴스 액세스 권한을 부여합니다. 이 작업이 이루어지는 과정에 대한 자세한 내용은 Amazon EC2 User Guide for Linux InstancesAmazon EC2의 IAM 역할 을 참조하십시오.

이러한 방법 중 하나를 사용하여 AWS 자격 증명을 설정하고 나면 기본 자격 증명 공급자 체인을 사용하여 이러한 자격 증명이 AWS SDK for Java에서 자동으로 로드됩니다. Java 애플리케이션에서 AWS 자격 증명으로 작업하는 방법에 대한 자세한 내용은 Working with AWS Credentials 단원을 참조하십시오.

 

개발을 위한 AWS 자격 증명 및 리전 설정 - Java용 AWS SDK

AWS 설명서 » AWS SDK for Java » 개발자 가이드 » 시작 » 개발을 위한 AWS 자격 증명 및 리전 설정 EC2 인스턴스를 사용하려면 IAM 역할을 사용하여 Amazon EC2의 AWS 리소스에 대한 액세스 권한 부여 에서처럼 IAM 역할을 생성한 다음 해당 역할에 EC2 인스턴스 액세스 권한을 부여합니다. AWS Toolkit for Eclipse 를 사용하여 Eclipse 내에서 AWS 자격 증명을 설정합니다. 자세한 내용은 AWS Toolkit for Eclipse 사용 설명서 의 AWS 자격 증명 설정 을 ...

docs.aws.amazon.com

그냥 파일을 하나 만들고 저장했다.

 

8. 먼저 pip install boto3 로 boto3를 설치하자.

s3_resource 변수에 리소스를 만든다.

open()으로 이미지데이터를 불러온다.

put_object() 함수로 데이터를 저장한다.

(저장 후 S3에 가서 잘 들어왔는지 확인)

이미지의 url을 확인할 수 있다.

# pip install boto3 

import boto3 

s3_resource = boto3.resource( 
				's3', 
                aws_access_key_id=aws_access_key_id, 
                aws_secret_access_key=aws_secret_access_key, 
                region_name=region, 
) 

# get image file 
data = open(image_path, 'rb') 

# save image to S3 bucket as public 
s3_resource.Bucket(bucket_name).put_object(Body=data, Key=image_name, ACL='public-read') 

# get public image url 
url = "https://s3-%s.amazonaws.com/%s/%s" % (region, bucket_name, image_name)

 

반응형

'IT > Python' 카테고리의 다른 글

pynecone get started - pc run error  (0) 2023.01.16
python re sub remove special characters  (0) 2022.11.17
dataframe, head(), show all columns  (0) 2019.04.18
tensorflow Keras - not_equal, cast Test  (0) 2019.03.13
keras Masking Test  (0) 2019.03.13