[AWS] AWS CLI 설정하기 (Access Key, Secret Key) + AWS S3 이미지 파일 업로드

Yuri Lee·2022년 8월 16일
0

Intro

회사 프로젝트에서 S3를 이용한 파일 업로드 기능을 사용하고 있었다. AWS S3 인증 과정에서 소스코드에 직접 Id와 key를 넣어 활용하고 있었는데, 이 방법은 보안에 취약하다. 따라서 인증키를 제거하고, IAM 역할이 부여된 AWS EC2 인스턴스의 자격증명을 사용하기로 결정했다.

Terms

  • AWS S3(Simple Storage Service) : 파일 서버의 역할을 하는 서비스
  • AWS CLI : AWS CLI는 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구

How to do

기존 AWS 관련 지식이 없어서 한참 해맸었다. aws 공식 pdf에 나와있는 여러 메소드를 활용해봤지만, 계속 credential 오류가 발생했다. 🤕 🤕 상사분께 sos를 보냈고, 우선 local에서 aws config를 생성하여 테스트를 해봐야 한다고 말씀해주셨다.

1. aws cli 설치하기

➜  ~ brew install awscli

나의 경우 homebrew를 이용하여 설치하였다.

➜  ~ aws --version
aws-cli/2.7.23 Python/3.10.6 Darwin/21.6.0 source/x86_64 prompt/off

설치가 잘 된 것을 확인할 수 있다.

2. aws configure 정보 등록

Access Key 및 Secret Key는 IAM 사용자를 생성할 때 받아두었던 Key를 사용한다

➜  ~ aws configure
AWS Access Key ID [None]: ************
AWS Secret Access Key [None]: ************************
Default region name [None]:  ap-northeast-2 // 서울
Default output format [None]:

3. aws configure 확인

➜  ~ aws configure list
➜  ~/.aws/credentials
[default]
aws_access_key_id = ************
aws_secret_access_key = ************************

위 명령어를 활용하여 등록한 aws configure 목록을 볼 수 있다.

4. 소스에 있는 인증 키 부분 삭제

각자 프로젝트 소스에 있는 키 부분을 삭제해준다. 소스코드에 키가 그대로 적용되어 있으면 보안에 취약해진다!

5. 테스트

local에서 ~/.aws/credentials 생성 이후, 테스트 결과 자동 적용 되어 키를 제거했음에도 불구하고, 업로드 기능이 잘 동작했다.

cycle

AWSJavaSDK 의 cycle 관련 내용이니 참고해보길 바란다.

You can use DefaultAwsCredentialsProviderChain(), which according to the documentation, looks for credentials in this order:

  1. Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY (recommended since they are recognized by all AWS SDKs and CLI except for .NET), or AWS_ACCESS_KEY and AWS_SECRET_KEY (only recognized by the Java SDK)
  2. Java System Properties - aws.accessKeyId and aws.secretAccessKey
  3. Credential profiles file at the default location (~/.aws/credentials) shared by all AWS SDKs and the AWS CLI
  4. Instance profile credentials delivered through the Amazon EC2 metadata service

TIL

기존 코드에 적용되었던 인증 키 부분을 삭제 후 aws configure 설정과 테스트를 해보는 과정을 통해 aws 자격 증명 정보를 얻어오는 프로세스에 대해 이해할 수 있었다. 그 과정이 순탄치는 않았지만..ㅎ 😂
특정 키 파일이 없을 경우에는 최종적으로 EC2 인스턴스의 IAM role 설정에 접근할 수 있다는 것을 기억하자! 🤟


https://potato-yong.tistory.com/94
https://formulae.brew.sh/formula/awscli
https://stackoverflow.com/questions/61456782/download-and-upload-file-using-iam-role-instead-of-secret-and-access-key
https://www.opentutorials.org/course/2717/11344
https://xlffm3.github.io/spring%20&%20spring%20boot/s3-cloud-front/

profile
Step by step goes a long way ✨

0개의 댓글