내일배움캠프 60일차

Drumj·2022년 7월 13일
0

내일배움캠프

목록 보기
61/80

<오늘의 학습>

RDS 생성 하고 Secrets Manager 연결하고, 내 프로젝트에 적용 시키기!!!

RDS 생성

여기에서 한 번 정리 아닌 정리를 했었는디;; 내가 다시 봐도.. 처음에 살짝 이해 하기 어려워서 다시 정리해 보고자 한다.

팀장님이 똑같은 에러로 도움을 요청하셨는데 설명을 드리긴 했는데;;; 결국 해결이 안되서
내가 해결 했기 때문에 더 쉽게 정보를 전달해 보고자...!!!

우선 여기 블로그를 참고 했다!

configuration validation exception invalid option value '5.6'
이 에러를 보고 검색 하거나, 찾아왔으면 좋겠다.. ㅎㅎ

  • AWS ElasticBeanstalk CLI 설치
  • EB 기본 환경 설정
  • EB Config 수정

위 3가지만 잘 하면 끝난다.


EB CLI 설치 및 사용

설치 했다고 생각하고 진행하겠슴당.

설치 후 사용하려고 하면 제대로 진행이 안 될 수도 있는데
.ebcli-virtual-env\executables 여기 위치로 이동해서 eb init을 해야지 사용 가능 합니다!

cd .ebcli-virtual-env\executables
#이후에 이동하고나서
eb init


그러면 위와 같은 cmd 창이 나오고 본인의 region을 선택해 주면 됩니다!
저는 서울이라서 10번을 선택.

그리고 나면 사진 젤 마지막 부분처럼

select an application to use

이 부분이 나오고 1) 2) 3) 등등 EB로 생성한 어플리케이션이 나옵니다.
본인이 사용할 번호를 선택!

그 후 eb config를 하게 되면 메모장이 나오는데(저는 윈도우라 메모장이 나온것 같습니다!! 여튼 뭔가 꼬부랑 글씨가 많이 적힌 녀석이 나옵니다.)

aws:rds:dbinstance:
  HasCoupledDatabase: 'false'

처음엔 맨 밑으로 내려보면 이렇게 두 줄만 있을텐데
DBEngineVersion: '8.0'
이 한 줄만 밑에 추가하고 저장 후 메모장을 끄면
cmd 창에서 뭔가 진행되는 걸 볼 수 있습니다.

그리고 마무리가 잘 되었으면 EB로 넘어가서 새로고침을 하고!!
DB 편집으로 넘어가면 더 이상 에러가 나지 않고 DB 생성을 할 수 있게 바뀐 걸 볼 수 있습니다!!

다시 정리했는데도 잘 했는지 모르겠네요..


RDS - Secrets Manager 연결

RDS 를 만들었으니 보안을 위해서 내 프로젝트 코드에는 안보이게 하는게 좋겠죠??

우선 AWS 형님들이 제공해주는 Secrets Manager 를 사용하도록 하겠습니다.

Secrets Manager에서 새 보안 암호 저장 을 클릭!
사용자 이름과 암호는 직접 입력해 주시면 됩니다!!
그리고 밑에 DB 인스턴스에서 이전에 만든 DB를 체크!
다음으로 넘어와서 보안 암호 이름도 직접 만들어 주세요
설명에는 알아보기 쉽게 작성해주셔도 되고, 없어도 상관 없습니다!

그리고 4단계 까지 패스~ (3단계에서 교체 구성을 할 수 있는데.... 어려우니 pass;;;)

4단계까지 마무리하면! 짜잔~ RDS 보안 암호가 생성되었습니다~!~!
보안 암호 값에서 자세한 사항을 확인 할 수 있을거에요!!


프로젝트에 적용 해보기

Secrets Manager 를 만들어서 기껏 꽁꽁 숨겨뒀는데
프로젝트에서 그냥 떡하니 코드로 박아넣고 사용하면...??? 그것만큼 어리석은 짓이 없슴당...

그러면 이 녀석을 어떻게 연결 시켜야 하나???

  • 의존성 추가
    implementation 'com.amazonaws.secretsmanager:aws-secretsmanager-jdbc:1.0.8'
    이 녀석을 일단 추가합시다.

  • application.properties

spring.datasource.driver-class-name=com.amazonaws.secretsmanager.sql.AWSSecretsManagerMySQLDriver
spring.datasource.url=jdbc-secretsmanager:mysql://내 엔드포인트:3306/내 db 이름
spring.datasource.username=보안 암호 이름

저는 mysql을 사용하고 있기 때문에 class-name에
com.amazonaws.secretsmanager.sql.AWSSecretsManagerMySQLDriver 를 넣어줬습니다!!
mysql 을 사용하신다면 그냥 붙여넣기 하시면 됩니다.

그리고 내 엔드포인트 부분에는 보안 암호 값에서 host 부분을
내 db 이름 부분에는 마찬가지로 보안 암호 값에서 dbname 부분을
보안 암호 이름은 아까 위에서 만들었던 보안 암호 이름을 넣으면 됩니다~!

이렇게만 하면 프로퍼티스에 DB username 과 password 를 작성하지 않아도 되서 보안상으로 더 안전하다는 것 같아요. (태클은 언제나 환영입니다. 하지만 코린이에게 심각한 백태클은 참아주세요.)

프로젝트를 진행하면서 쓰고 있어서 한참전에 했던거라... 중간에 놓친게 있을 수도 있을것 같습니다.
(아마... 잘 될겁니다!! ㅎㅎ)


그 외 오늘의 뻘짓

S3 버킷은 내 계정에서 사용하고, 그 외에 것들은 팀장님 계정에서 사용 중이었는데
다른 팀에서 S3 버킷에 삭제를 하고 싶은데 안된다고 질문을 하러 오셨다...

오잉...???? 이거.. 코드를 다른 분이 짜셔서... 제대로 설명을 못해드렸다...

그리고 급하게 우리도 그런거 아닐까? 하고 돌려보니.. 왐마~ 우리도 같은 에러가 나네 이거;;

그래서 오후에 거의 2시간 가까이 여러 문서 뒤져보고 버킷 정책도 만들어보고 별 짓을 다해보다가
마지막에.. 아.. 이게 설마... 계정을 2개 쓰고 있어서...? 란 생각이 들었고
설마설마 아닐거야~ 하고 튜터님에게 직행.

튜터님도 어라?? 이게 왜 이러지?? 설정은 잘 되어있는뎅?????

나 : 아... 혹시.... 그.... 계정을 따로 사용해가지고 그런 걸까요...???
튜터님 : ??????????????
나 : 그게 그러니까 ...(설명)...
튜터님 : 아 그러면 당연히 안되죸ㅋㅋㅋㅋㅋ
나 : ㅎㅎ;;;; 바로 버킷 옮기고 해보겠습니다!!!! ㅎㅎ!!!!

쪼로록 돌아와서 팀원들한테 설명하고 하나의 계정으로 다 옮겼다;;;
ㄹㅇ 거짓말처럼 잘 돌아가서 진짜 뻘쭘;; (설마가 사람잡는다고 진짜 설마설마했었는데..)

그리고 다른 팀에게도 우리는 이러이러해서 에러가 났었다고 바로 전보를 쳤다.
프로젝트로 바쁜지 답은 안 돌아왔지만 잘 해결되셨길...💫


프로필 변경

악! 게시글 삭제, 수정 할때는 원래 저장되어있던 사진들이 잘 삭제가 되었는데
프로필 사진을 변경할 때는 이전 사진이 그대로 남아있다..!!!

그렇다면?? 게시글 삭제하는 코드 호로록 들고와서 좀 바꿔서 쓰면 되징~~

String[] spliturl = findPostImgs.get(0).getImg_url().split("여긴 비밀");
            s3Service.delete(spliturl[1]);

위에 코드는 postService 에 있던 코드! 이걸 활용해서 프로필 사진도 삭제 해보자!!

if (user.getProfilePic() != null){
	String[] spliturl = user.getProfilePic().split("여기도 비~밀");
	s3Service.delete(spliturl[1]);
}

이렇게 변경!! 왜 if 를 넣었나면, 여기 바로 밑에 코드가 프로필 사진을 저장하는 코드인데 그 전에
프로필 사진이 있다면 지워줘~~~ 하고 코드를 남겼다!!

사실 처음에는

if (!user.getProfilePic().isEmpty())

이렇게 남겼는데 null 값은 비어있다고 판단을 안하는 건지 아예 프로필 사진이 없을때는 에러가 나길래
오잉... 어떻게 해야하지... 하다가 완성 코드 처럼 !=null 로 바꿔줬다!!

ps. 알아보니까 null 이 들어있을때 .isEmpty()를 사용하면 NullPointerException 이 발생 한다고 한다... (여기를 참고해 보세용)

아주 잘~ 작동된다!!!


-오늘의 한 줄-

ㅋㅋㅋㅋㅋ 아... 계정 두 개 될 줄 알았지...

0개의 댓글