- 목적
- Next.js 프레임워크 내에서 .env 파일 내의 S3 관련 Secret Key 노출을 방지할 수 있는 방법을 모색함
- 빌드 후 배포시 .env 파일이 유실되어 릴리즈 버전에서 s3 접근에 리스크 존재, 이를 방지하기 위함
AWS Secret Manager
import * as AWS from "@aws-sdk/client-secrets-manager";
const client = new AWS.SecretsManager({ region: "REGION" });
// async/await.
try {
const data = await client.listSecrets(params);
// process data.
} catch (error) {
// error handling.
}
// Promises.
client
.listSecrets(params)
.then((data) => {
// process data.
})
.catch((error) => {
// error handling.
});
// callbacks.
client.listSecrets(params, (err, data) => {
// process err and data.
});
import {
GetSecretValueCommand,
SecretsManagerClient,
} from "@aws-sdk/client-secrets-manager";
export const getSecretValue = async (secretName = "SECRET_NAME") => {
const client = new SecretsManagerClient();
const response = await client.send(
new GetSecretValueCommand({
SecretId: secretName,
}),
);
console.log(response);
if (response.SecretString) {
return response.SecretString;
}
if (response.SecretBinary) {
return response.SecretBinary;
}
};
- 환경 변수 로드 순서
환경변수는 다음과 같은 곳에서 순서대로 조회되며, 해당 변수가 발견되면 중지된다.
- process.env
- .env.$(NODE_ENV).local
- .env.local( NODE_ENV인 경우에는 확인되지 않습니다 test.)
- .env.$(NODE_ENV)
- .env
'개발 > AWS' 카테고리의 다른 글
[Docker] 도커 볼륨 생성 (0) | 2022.01.20 |
---|---|
[Docker] Container 이미지 작업 수업 Memo (0) | 2022.01.20 |
[Docker] 2. 컨테이너 기반 기술 :: 네트워크 네임스페이스, Control Groups (0) | 2022.01.17 |
[Docker] 2. 컨테이너 기반 기술 :: 리눅스 chroot 기능 활용 (0) | 2022.01.17 |
[Docker] 1. Oracle VM VirtualBox 설치 (0) | 2022.01.17 |