Node.js 개발환경(aws-sdk)에서 자격증명 여러개 사용하기
[admin]
aws_access_key_id=*****************
aws_secret_access_key=*******************************
[s3]
aws_access_key_id=*****************
aws_secret_access_key=*******************************
[dynamo]
aws_access_key_id=*****************
aws_secret_access_key=*******************************
~/.aws/credentials
파일을 보면 대괄호로 감싸진 블럭 하나를 프로필
이라고 한다.
@aws-sdk/credential-providers
모듈로 원하는 프로필을 불러와 필요한 작업마다 자격증명을 서로 다르게 쓸수있다.
npm i @aws-sdk/credential-provider-node
defaultProvider()
메소드로 불러올 프로필을 지정할수있다.
import { defaultProvider } from '@aws-sdk/credential-provider-node';
const provider=defaultProvider({
profile:'사용할 프로필명', //기본값은 default
filePath:'credentials 파일 위치' //기본값은 /.aws/credentials
})
패키지 설명에 따르면 process.env 에서 자격증명을 가져오는것도 가능하다고 한다. 애초에 자격증명을 찾는 최우선 순위가 .env다.
.env 파일에 AWS_ACCESS_KEY_ID
와 AWS_SECRET_ACCESS_KEY
가 있다면 defaultProvider()
에 아무값을 주지않아도 .env에서 자동으로 불러온다.
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { S3Client } from '@aws-sdk/client-s3';
import { defaultProvider } from '@aws-sdk/credential-provider-node';
const dynamoClient=new DynamoDBClient({
credentials: defaultProvider({
profile: 'dynamoProfile',
}),
});
const s3Client=new S3Client({
credentials: defaultProvider({
profile: 's3Profile',
}),
});