=> 귀찮음.
관련 코드
import { GetSecretValueCommand, SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
import { Injectable, InternalServerErrorException, Logger } from '@nestjs/common';
@Injectable()
export class SecretManagerProvider {
async getEnvironmentVariableList(): Promise<string> {
const client = new SecretsManagerClient({
region: process.env.AWS_REGION,
});
const command = new GetSecretValueCommand({
SecretId: process.env.AWS_SECRET_NAME,
});
try {
const secretResult = await client.send(command);
const secretList = JSON.parse(secretResult.SecretString);
return secretList;
} catch (error) {
throw new InternalServerErrorException(error.message);
}
}
async setEnvironmentVariables(): Promise<void> {
const secretList = await this.getEnvironmentVariableList();
for (const [key, value] of Object.entries(secretList)) {
process.env[key] = value;
}
}
}
SecretManager를 구현하면서 필요한 값은 AWS_REGION, AWS_SECRET_NAME 이었다.
그럼, ACCESS KEY와 SECRET KEY는 어떻게 알고 가져가는 걸까?
⇒ 전역 환경 변수에 유효한 AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY를 추가로 셋팅해 주어야 함(해당 정책은 secretManager를 읽을 수 있는 권한이 있어야함.)
1. cd ~/.aws/
2. vim credentials
3. aws_access_key_id, aws_secret_access_key 설정
해당 aws_access_key_id가 가리키고 IAM 사용자가 dev용 secretManager를 읽을 수 있는 권한이 없었음. 해당 사용자에 secretManager를 읽을 수 있는 권한 추가