aws-sdk 에서 credentials 여러개 사용하기

2023.07.17

Node.js 개발환경(aws-sdk)에서 자격증명 여러개 사용하기

credentials 파일

[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
})

.env 에서 자격증명 불러오기

패키지 설명에 따르면 process.env 에서 자격증명을 가져오는것도 가능하다고 한다. 애초에 자격증명을 찾는 최우선 순위가 .env다.
.env 파일에 AWS_ACCESS_KEY_IDAWS_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',
    }),
});

defaultProvider() 로 불러온 자격증명을 각각의 클라이언트를 생성할때 `credentials` 프로퍼티로 넘겨준다. 이렇게 해서 필요에따라 원하는 자격증명을 사용할수있다.

Do you want something exciting?

© 2022. YSH All rights reserved.