-
AWS Systems Manager - Parameter Store (with NestJs)공부/AWS 2025. 4. 23. 23:16
개발을 하면서 환경변수 관리를 어떻게 해야 할지 고민이 많이 될 것이라고 생각합니다. 저도 EC2에서 서버를 실행할 때 env 파일을 어떤 식으로 관리해야 할지 고민하였습니다. 파일을 직접 생성하여 관리하는 쪽으로 선택하였습니다. 이전에는 잘못된 방식이지만 깃에 직접 올렸던 적도 있었습니다. 다른 방식보다 AWS에서 실행 중인 서비스가 있으시다면 AWS Systems Manager를 사용해 보는 것을 추천드립니다.
제가 생각하는 환경변수 관리는 직접관리, AWS Systems Manager(=ssm), Secret Manager 가 존재합니다.
1. 직접관리는 기존에 했던 방식이며, 유실의 위험이 존재하고 관리가 한 곳이 아닌 다른 곳에서 된다는 점이 불편하게 느껴졌습니다.2. Secret Manager는 AWS에서 제공하는 관리 서비스이면서 안전하지만 비용이 발생합니다.
저는 비용이 발생하지 않는 선에서 관리를 한 곳에서 하면 좋겠다는 생각으로 ssm으로 관리하기로 결정하였습니다.
1. AWS Systems Manager 접속
2. 하단에 애플리케이션 도구에 파라미터 스토어 선택
3. 파라미터 생성 버튼 클릭
4. 파라미터 세부 정보를 입력
- 이름을 작성하실때 /를 꼭 붙여주셔야 하며, 다른 변수들을 사용하기 위해서 구분할 수 있도록 해주시면 좋을 거 같습니다.
- 유형은 문자열을 하는 경우 마스킹되지 않은 형태로 보이게 됩니다.
- 보안 문자열을 하는 경우 마스킹 된 형태로 보이며, 기본적으로 *로 표시가 됩니다.
5. 값을 넣어 줍니다.
- json 형태로 넣어주셔도 가능합니다.
- env 형태인 port=3000로 저장해주셔도 됩니다.
6. SSM을 저장하였다면 Nestjs에서 불러올 수 있도록 합니다.
- aws-sdk/client-ssm 을 설치합니다. (링크)
- 링크에서 확인하실 수 있지만 적용하는 방법도 작성돼 있습니다.
import { SSMClient, GetParameterCommand } from '@aws-sdk/client-ssm'; ..... config 설정 코드 ..... const ssmClient = new SSMClient({ region: 'ap-northeast-2', // credentials: { // accessKeyId: process.env.AWS_ACCESS_KEY_ID, // secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, // }, }); const command = new GetParameterCommand({ Name: '/test/param', WithDecryption: true, }); try { const response = await ssmClient.send(command); const envVars = JSON.parse(response.Parameter?.Value || '{}'); // envVars에 ssm에 저장된 값들이 할당됩니다. } catch (error) { console.error('SSM 파라미터 로드 실패:', error); }
- credentials이 없으면 ssm을 가져올 수 없습니다. 로컬에서는 값을 지정해주셔야 합니다.
- AWS에서 사용하신다면 IAM Role을 지정해 주시면 region만 입력하여도 ssm에서 가져올 수 있습니다.
실제 환경에서 환경변수나 특정 값들을 관리해야 할 때 사용하기 좋을 것이라고 생각합니다. 현재 저도 적용을 해서 사용하고 있습니다. 관리적인 측면에서도 좋아졌다고 생각합니다.
특정 문제나 궁금한 점을 검색하며 찾아보고 작성한 글입니다. 혹시라도 부정확한 정보를 전달드릴 수 있습니다. 틀린 부분이 있으면 댓글을 남겨주세요.
def.
https://www.npmjs.com/package/@aws-sdk/client-ssm
@aws-sdk/client-ssm
AWS SDK for JavaScript Ssm Client for Node.js, Browser and React Native. Latest version: 3.787.0, last published: 13 days ago. Start using @aws-sdk/client-ssm in your project by running `npm i @aws-sdk/client-ssm`. There are 772 other projects in the npm r
www.npmjs.com
파라미터 스토어 (AWS Systems Manager Parameter Store)
AWS 파라미터 스토어란 무엇이고 내가 파라미터 스토어를 어떻게 사용했었는지를 기록한다.AWS Systems Manager Parameter Store는 Amazon Web Services(AWS)에서 제공하는 서비스로, 애플리케이션의 구성 데이터
velog.io
'공부 > AWS' 카테고리의 다른 글
ECR에 이미지 업로드 (0) 2025.03.29 NestJS + Bitbucket pipelines + EC2 + CodeDeploy (CI/CD) - 2 (0) 2025.01.20 Bitbucket Pipelines + EC2 + NestJS (0) 2025.01.19 NestJS + Bitbucket pipelines + EC2 + CodeDeploy (CI/CD) - 1 (0) 2025.01.14 AWS Session Manager 생성 (0) 2025.01.09