AWS Secrets & ECS SpringBoot 설정 (2): ECS 연동

2023. 11. 3. 17:49·AWS/ECS, ECR
반응형

저번 포스트에서는 AWS의 Secret을 만들었으니 이번에는 이것을 ECS에 연결해 보도록 하는 작업을 진행할 텐데 IAM정책부터 ECS의 태스크 정의까지 해보도록 한다.

 


 

1. IAM 역할 설정하기


먼저, ECS 태스크가 Secrets Manager에 접근할 수 있도록 ecsTaskExecutionRole IAM 역할에 권한을 부여해야 한다. 이 역할은 ECS 태스크가 다른 AWS 서비스와 상호 작용할 때 필요한 권한을 제공하는 역할이다.



1-1. IAM 콘솔 접속

  • AWS 관리 콘솔에 로그인한 후, IAM 서비스 페이지로 이동한다.

IAM 대시보드
IAM 대시보드

 

1-2. 역할 선택

  • 대시보드 페이지 좌측의 메뉴에서 '역할' 섹션을 클릭해서 들어간다.

역할 선택
역할 선택

 

  • 아래와 같은 페이지가 나올 텐데 여기서 ecsTaskExecutionRole을 검색한다.

역할 검색
역할 검색

 

1-3. 정책 연결 또는 인라인 정책 추가

  • 검색해서 나온 ecsTaskExecutionRole역할의 이름을 클릭해서 요약으로 들어가면 하단과 같은 페이지가 나온다.

ecsTaskExecutionRole 요약

 

1-4. Secrets Manager 권한 부여

  • 하단의 "권한 정책"에서 우측의 "권한 추가" 버튼을 누른다.

권한 정책 목록
권한 정책 목록

 

  • "권한 추가"를 눌렀다면 아래와 같이 보일 텐데 여기서 "정책 연결"을 클릭한다.

정책 연결하기
정책 연결하기

 

1-5. SecretsManagerReadWrite 정책 추가하기

  • 아래와 같은 페이지가 나올 텐데 여기서 "SecretsManagerReadWrite"를 검색하도록 하자

정책 검색하기
정책 검색하기

 

  • 검색된 SecretsManagerReadWrite 정책을 선택하고 하단의 "권한 추가"를 클릭한다.

정책 검색완료
정책 검색완료

 

1-6. 정책 연결 완료

  • 위에서 "권한 추가" 버튼을 클릭했다면 하단의 페이지로 이동하면서 추가된 권한을 확인할 수가 있을 것이다.

정책 연결 완료
정책 연결 완료

 


 

2. ECS 태스크 정의 생성하기


IAM 역할에 권한을 설정한 후, ECS 태스크 정의에서 Secrets Manager의 시크릿을 환경변수로 사용할 수 있다.


2-1. ECS 콘솔 접속

  • ECS 서비스 페이지로 이동한다.

ECS 클러스터로 이동
ECS 클러스터로 이동

 

2-2. 태스크 정의 생성 또는 수정

  • 좌측 메뉴바의 "태스크 정의" 를 클릭해서 하단의 페이지로 들어온 다음 우측의"새 태스크 정의" 버튼을 클릭한다.

태스크 정의
태스크 정의

 

  • 태스크 정의에 대한 방법은 하단의 포스트를 확인하자

2023.10.28 - [AWS] - AWS - ALB(로드 밸런서) 없이 ECS 생성하기

 

AWS - ALB(로드 밸런서)없이 ECS 생성하기

이번 포스트에서는 ALB(로드 밸런서)를 사용하지 않고 AWS의 ECS를 생성하고 SpringBoot의 jar 파일를 dockerfile로 이미지 변환하고 배포해 보도록 하자 이 글을 따라하기 전에 ECR을 먼저 만들고 오는것

curiousjinan.tistory.com

 

 

2-3. 시크릿 추가

  • '컨테이너 정의' 섹션에서 "컨테이너 추가"를 클릭해서 들어가 준다.

ECS 태스크 정의 > 컨테이너 정의
ECS 태스크 정의 > 컨테이너 정의

 

 

  • 컨테이너 추가 화면에서 아래로 스크롤해서 '환경' 부분을 찾아서 하단의 "환경 변수" 부분에 key, value를 추가한다.

환경 > 시크릿 추가
환경 > 시크릿 추가

 

2-4. 시크릿 키와 값 설정

  • Secret을 만들 때 적었던 url, username, password를 key로 적는다. value에는 arn을 적어준다. 이때 중간에는 꼭 ValueForm을 선택해 주도록 하자 (여기서 문제가 발생한다. 다음 포스트를 확인하면 문제 해결에 대해서 확인할 수 있다. 이대로 따라 하면 추후 tomcat이 동작하지 않을 것이다.)

환경 변수 입력하기
환경 변수 입력하기

 

2-5. 태스크 정의 생성하기

  • 생성하려니까 이런 에러가 발생했다. 
  • When you are specifying container secrets, you must also specify a value for 'executionRoleArn'.

작업 정의 생성오류
작업 정의 생성오류

 

2-6. 에러 해석 및 해결

  • AWS ECS에서 태스크 정의에 비밀(Secrets)을 환경변수로 추가할 때는 해당 태스크가 AWS Secrets Manager에 접근할 수 있도록 executionRoleArn을 지정해야 한다. 이 역할은 ECS 태스크가 AWS 리소스에 접근할 때 사용하는 IAM 역할이다. 에러 메시지는 ECS 태스크가 비밀을 가져올 때 사용할 IAM 실행 역할(Execution Role)이 정의되지 않았다는 것을 나타낸다.
  • "태스크 정의"를 생성할 때 내가 "작업 실행 IAM역할"을 선택하지 않았던 것이 문제였다. 얼른 다시 찾아가서 "ecsTaskExecutionRole"을 선택해 줬다.

작업 실행 역할 정의하기
작업 실행 역할 정의하기

 

  • 다시 생성해 봤더니 생성에 성공했다.

태스크 정의 생성 완료
태스크 정의 생성 완료

 

 

이번 포스트에서는 ecsTaskExecutionRole에 Secret에 접근할 수 있는 IAM 정책을 생성해 줬고 이 정책을 적용시켜서 태스크 정의까지 생성해 봤다.
다음 포스트에서는 이 태스크 정의를 사용하여 ECS 서비스를 만들어보도록 하자




 

 

2023.11.03 - [AWS] - AWS Secrets & ECS SpringBoot 설정 (3-1): ECS배포와 오류 분석

 

AWS Secrets & ECS SpringBoot 설정 (3-1): ECS배포와 오류 분석

지난번에는 ECS의 태스크 정의를 생성했다. 이번에는 이 태스크를 사용해서 ECS의 서비스를 만들어 보도록 하자 태스크의 컨테이너에는 내가 주입해 준 환경변수가 들어갈 테니 springboot는 이 내

curiousjinan.tistory.com

2023.11.03 - [AWS] - AWS Secrets & ECS SpringBoot 설정 (1): Secret 생성

 

AWS Secrets & ECS SpringBoot 설정 (1): Secret 생성

이전 포스트에서는 로컬 환경에서 RDS를 SpringBoot 프로젝트와 연결하는 데 성공했다. 이번에는 AWS의 CodePipeline을 CI/CD구축을 해서 ECS로 배포에 성공한 SpringBoot 프로젝트의 tomcat에 이 RDS(postgreSQL)를

curiousjinan.tistory.com

 

반응형

'AWS > ECS, ECR' 카테고리의 다른 글

AWS Secrets & ECS SpringBoot 설정 (3-2): 성공적인 배포 완료  (1) 2023.11.03
AWS Secrets & ECS SpringBoot 설정 (3-1): ECS배포와 오류 분석  (0) 2023.11.03
AWS Secrets & ECS SpringBoot 설정 (1): Secret 생성  (0) 2023.11.03
AWS ECS와 ALB: 동적 포트 vs 명시적 포트 설정의 EC2 DNS 접속 이슈  (1) 2023.10.31
AWS - ALB를 적용시킨 ECS의 동적 포트 할당관계 동작원리  (1) 2023.10.30
'AWS/ECS, ECR' 카테고리의 다른 글
  • AWS Secrets & ECS SpringBoot 설정 (3-2): 성공적인 배포 완료
  • AWS Secrets & ECS SpringBoot 설정 (3-1): ECS배포와 오류 분석
  • AWS Secrets & ECS SpringBoot 설정 (1): Secret 생성
  • AWS ECS와 ALB: 동적 포트 vs 명시적 포트 설정의 EC2 DNS 접속 이슈
Stark97
Stark97
문의사항 또는 커피챗 요청은 링크드인 메신저를 보내주세요! : https://www.linkedin.com/in/writedev/
  • Stark97
    오늘도 개발중입니다
    Stark97
  • 전체
    오늘
    어제
    • 분류 전체보기 (247)
      • 개발지식 (20)
        • 스레드(Thread) (8)
        • WEB, DB, GIT (3)
        • 디자인패턴 (8)
      • JAVA (21)
      • Spring (88)
        • Spring 기초 지식 (35)
        • Spring 설정 (6)
        • JPA (7)
        • Spring Security (17)
        • Spring에서 Java 활용하기 (8)
        • 테스트 코드 (15)
      • 아키텍처 (6)
      • MSA (15)
      • DDD (11)
      • gRPC (9)
      • Apache Kafka (18)
      • DevOps (23)
        • nGrinder (4)
        • Docker (1)
        • k8s (1)
        • 테라폼(Terraform) (12)
      • AWS (32)
        • ECS, ECR (14)
        • EC2 (2)
        • CodePipeline, CICD (8)
        • SNS, SQS (5)
        • RDS (2)
      • notion&obsidian (3)
      • AI 탐험대 (1)
      • 팀 Pulse (0)
  • 링크

    • notion기록
    • 깃허브
    • 링크드인
  • hELLO· Designed By정상우.v4.10.0
Stark97
AWS Secrets & ECS SpringBoot 설정 (2): ECS 연동
상단으로

티스토리툴바