글로벌 구성 객체 사용하기 - AWS SDK for JavaScript

곧 AWS SDK for JavaScript(v2)에 대한 지원이 종료될 예정임을 알려드립니다. AWS SDK for JavaScript v3로 마이그레이션하실 것을 권장합니다. 마이그레이션 날짜, 추가 세부 정보 및 방법에 대한 자세한 내용은 링크된 공지 사항을 참조하세요.

글로벌 구성 객체 사용하기

SDK를 구성하는 방법에는 두 가지가 있습니다.

  • AWS.Config를 사용하여 글로벌 구성을 설정합니다.

  • 추가 구성 정보를 서비스 객체에 전달합니다.

AWS.Config를 사용하여 글로벌 구성을 설정하면 보통 더 쉽게 시작할 수 있지만, 서비스 수준 구성을 통해 개별 서비스를 더 효과적으로 제어할 수 있습니다. AWS.Config로 지정되는 글로벌 구성은 이후 생성하는 서비스 객체에 대한 기본 설정을 제공하여 구성을 간소화합니다. 그러나 요구 사항이 글로벌 구성과 다른 경우 개별 서비스 객체의 구성을 업데이트할 수 있습니다.

글로벌 구성 설정

코드에 aws-sdk 패키지를 로드한 후에는 AWS 전역 변수를 사용하여 SDK의 클래스에 액세스하고 개별 서비스와 상호 작용할 수 있습니다. SDK에는 글로벌 구성 객체인 AWS.Config가 포함됩니다. 이를 사용하여 애플리케이션에 필요한 SDK 구성 설정을 지정할 수 있습니다.

애플리케이션 요구 사항에 따라 AWS.Config 속성을 설정하여 SDK를 구성합니다. 다음 표에 SDK의 구성을 설정하는 데 일반적으로 사용되는 AWS.Config 속성이 요약되어 있습니다.

구성 옵션 설명
credentials 필수 여부. 서비스 및 리소스에 대한 액세스 권한을 결정하는 데 사용되는 인증 자격 증명을 지정합니다.
region 필수 여부. 서비스에 대한 요청이 이루어질 리전을 지정합니다.
maxRetries 선택 사항입니다. 지정된 요청이 재시도되는 최대 횟수를 지정합니다.
logger 선택 사항입니다. 디버깅 정보가 작성되는 로거 객체를 지정합니다.
update 선택 사항입니다. 현재 구성을 새 값으로 업데이트합니다.

구성 객체에 대한 자세한 내용은 API 참조의 Class: AWS.Config 섹션을 참조하세요.

글로벌 구성 예제

AWS.Config에서 리전과 자격 증명을 설정해야 합니다. 다음 브라우저 스크립트 예제와 같이 AWS.Config 생성자의 일부로 이러한 속성을 설정할 수 있습니다.

var myCredentials = new AWS.CognitoIdentityCredentials({IdentityPoolId:'IDENTITY_POOL_ID'}); var myConfig = new AWS.Config({ credentials: myCredentials, region: 'us-west-2' });

또한 리전을 업데이트하는 다음 예제와 같이 update 메서드를 사용하여 AWS.Config를 생성한 후 이러한 속성을 설정할 수도 있습니다.

myConfig = new AWS.Config(); myConfig.update({region: 'us-east-1'});

AWS.config의 정적 getCredentials 메서드를 호출하여 기본 자격 증명을 가져올 수 있습니다.

var AWS = require("aws-sdk"); AWS.config.getCredentials(function(err) { if (err) console.log(err.stack); // credentials not loaded else { console.log("Access key:", AWS.config.credentials.accessKeyId); } });

마찬가지로, config 파일에서 리전을 올바르게 설정한 경우 AWS_SDK_LOAD_CONFIG 환경 변수를 임의의 값으로 설정하고 AWS.config의 정적 region 속성을 직접적으로 호출하여 해당 값을 가져옵니다.

var AWS = require("aws-sdk"); console.log("Region: ", AWS.config.region);

서비스별 구성 설정

SDK for JavaScript에 사용하는 각 서비스에는 해당 서비스에 대한 API의 일부인 서비스 객체를 통해 액세스합니다. 예를 들어 Amazon S3 서비스에 액세스하려면 Amazon S3 서비스 객체를 생성합니다. 해당 서비스 객체에 대한 생성자의 일부인 서비스별 구성 설정을 지정할 수 있습니다. 서비스 객체에 대한 구성 값을 설정하면 생성자가 인증 자격 증명을 포함하여 AWS.Config에서 사용하는 구성 값을 모두 가져옵니다.

예를 들어 여러 리전의 Amazon EC2 객체에 액세스해야 하는 경우 리전별로 Amazon EC2 서비스 객체를 생성한 다음, 그에 따라 각 서비스 객체의 리전 구성을 설정합니다.

var ec2_regionA = new AWS.EC2({region: 'ap-southeast-2', maxRetries: 15, apiVersion: '2014-10-01'}); var ec2_regionB = new AWS.EC2({region: 'us-east-1', maxRetries: 15, apiVersion: '2014-10-01'});

AWS.Config를 사용하여 SDK를 구성할 때 서비스별 구성 값을 설정할 수도 있습니다. 글로벌 구성 객체는 많은 서비스별 구성 옵션을 지원합니다. 서비스별 구성 파라미터에 대한 자세한 내용은 API 참조의 Class: AWS.Config 섹션을 참조하세요.

변경 불가능한 구성 데이터

글로벌 구성 변경은 새로 생성한 모든 서비스 객체에 대한 요청에 적용됩니다. 새로 생성한 서비스 객체는 먼저 현재 글로벌 구성 데이터로 구성된 후 로컬 구성 옵션으로 구성됩니다. 글로벌 AWS.config 객체에 수행하는 업데이트는 이전에 생성한 서비스 객체에는 적용되지 않습니다.

기존 서비스 객체는 새 구성 데이터로 수동 업데이트해야 하거나, 새 구성 데이터가 있는 새 서비스 객체를 생성 및 사용해야 합니다. 다음 예제에서는 새 구성 데이터가 있는 새 Amazon S3 서비스 객체를 생성합니다.

s3 = new AWS.S3(s3.config);