JavaScript용 AWS SDK

382
AWS SDK for JavaScript SDK 버전 3용 개발자 가이드

Transcript of JavaScript용 AWS SDK

Page 1: JavaScript용 AWS SDK

AWS SDK for JavaScriptSDK 버전 3용 개발자 가이드

Page 2: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드

AWS SDK for JavaScript: SDK 버전 3용 개발자 가이드Copyright © Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon의 상표 및 브랜드 디자인은 Amazon 외 제품 또는 서비스와 함께, Amazon 브랜드 이미지를 떨어뜨리거나 고객에게 혼동을 일으킬 수 있는 방식으로 사용할 수 없습니다. Amazon이 소유하지 않은 기타 모든 상표는 해당 상표의 소유자의 자산이며, 해당 상표의 소유자가 Amazon의 계열사이거나 Amazon과 제휴 관계에 있거나 Amazon의 후원을 받는업체일 수 있습니다.

Page 3: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드

Table of Contents...................................................................................................................................................... viii

란 무엇입니까?AWS SDK for JavaScript? .............................................................................................. 1SDK 메이저 버전에 대한 유지 관리 및 지원 .................................................................................... 1버전 3의 새로운 기능 .................................................................................................................. 1

모듈식 패키지 .................................................................................................................... 1새 미들웨어 스택 ................................................................................................................ 4

Node.js에서 SDK 사용 ................................................................................................................ 5SDK 사용AWS Cloud9 ................................................................................................................ 5SDK 사용AWS Amplify ................................................................................................................ 5웹 브라우저에서 SDK 사용 .......................................................................................................... 5

V3에서 브라우저 사용하기 ................................................................................................... 6일반적인 활용 사례 ............................................................................................................. 6예제 정보 .......................................................................................................................... 6Resources ......................................................................................................................... 6

시작하기 ............................................................................................................................................ 8브라우저 스크립트에서 시작하기 ................................................................................................... 8

시나리오 ............................................................................................................................ 81단계: Amazon Cognito 자격 증명 풀 생성 ............................................................................. 92단계: 생성된 IAM 역할에 정책 추가 .................................................................................... 103단계: 프로젝트 환경 작성 ................................................................................................. 104단계: HTML 페이지 생성 .................................................................................................. 105단계: JavaScript 작성 ....................................................................................................... 116단계: 예제 실행 ............................................................................................................... 12가능한 개선 사항 .............................................................................................................. 12

Node.js 시작하기 ...................................................................................................................... 12시나리오 .......................................................................................................................... 13사전 필수 작업 ................................................................................................................. 131단계: Amazon S3 패키지 및 종속성 설치 ............................................................................ 132단계: Node.js 작성 .......................................................................................................... 143단계: 예제 실행 ............................................................................................................... 15

네이티브 반응에서 시작하기 ....................................................................................................... 15시나리오 .......................................................................................................................... 15이 자습서에 대한 설정 ....................................................................................................... 161단계: Amazon Cognito 자격 증명 풀 생성 ............................................................................ 172단계: 생성된 IAM 역할에 정책 추가 .................................................................................... 173단계: 생성-반응 네이티브 앱을 사용하여 앱 만들기 ............................................................... 184단계: Amazon S3 패키지 및 기타 종속성 설치 ..................................................................... 185단계: React 네이티브 코드 작성 ........................................................................................ 186단계: 예제 실행 ............................................................................................................... 20가능한 개선 사항 .............................................................................................................. 21

JavaScript 용 SDK 설정 ..................................................................................................................... 23Prerequisites ............................................................................................................................ 23

를 설정하려면AWSNode.js 환경 .......................................................................................... 23지원되는 웹 브라우저 ........................................................................................................ 23

SDK 설치 ............................................................................................................................... 24SDK 로드 ................................................................................................................................ 24V3로 마이그레이션 .................................................................................................................... 24

예제 1 ............................................................................................................................. 25예제 2 ............................................................................................................................. 26예제 3 ............................................................................................................................. 26

JavaScript 용 SDK 구성 ..................................................................................................................... 28서비스당 구성 .......................................................................................................................... 28

서비스당 구성 설정 ........................................................................................................... 28설정AWS리전 ........................................................................................................................... 29

iii

Page 4: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드

클라이언트 클래스 생성자에서 ............................................................................................ 29환경 변수 사용 ................................................................................................................. 29공유 구성 파일 사용 .......................................................................................................... 29지역 설정에 대한 우선 순위 순서 ......................................................................................... 30

자격 증명 받기 ......................................................................................................................... 30자격 증명 설정 ......................................................................................................................... 31

자격 증명 모범 사례 .......................................................................................................... 31Node.js 자격 증명 설정 ...................................................................................................... 31웹 브라우저에서 자격 증명 설정 .......................................................................................... 34

Node.js 고려 사항 ..................................................................................................................... 36내장 Node.js 모듈 사용 ...................................................................................................... 36npm 패키지 사용 .............................................................................................................. 37Node.js에서 maxSockets 구성 ............................................................................................ 37Node.js 연결 유지로 연결 재사용 ........................................................................................ 37Node.js 프록시 구성 .......................................................................................................... 38Node.js 인증서 번들을 등록하기 .......................................................................................... 38

브라우저 스크립트 고려 사항 ...................................................................................................... 39브라우저용 SDK 빌드 ........................................................................................................ 39CORS(Cross-Origin Resource Sharing) ................................................................................ 39Webpack과 번들링 ............................................................................................................ 42

서비스 작업 ...................................................................................................................................... 46서비스 객체 생성 및 호출 ........................................................................................................... 46

서비스 객체 매개변수 지정 ................................................................................................. 47비동기식 서비스 호출 ................................................................................................................ 47

비동기식 호출 관리 ........................................................................................................... 48비동기/대기 사용 ............................................................................................................... 48Promise 사용 ................................................................................................................... 49콜백 함수 사용 ................................................................................................................. 50

서비스 클라이언트 요청 생성 ...................................................................................................... 50서비스 클라이언트 응답 처리 ...................................................................................................... 51

응답에서 반환되는 데이터에 액세스 ..................................................................................... 51오류 정보에 액세스 오류 정보 ............................................................................................. 51

JSON 작업 ............................................................................................................................... 51JSON을 서비스 객체 매개 변수로 ........................................................................................ 52

사용AWS Cloud9JavaSJavaScript 용 SDK 사용 ..................................................................................... 541단계: 을 (를) 설정하려면AWS사용할 계정AWS Cloud9 .................................................................. 542단계: 을 (를) 설정하려면AWS Cloud9개발 환경 ............................................................................ 543단계: JavaSJavaScript 용 SDK 설정 ........................................................................................... 55

JavaScript 용 Node.js SDK를 설정하려면 ............................................................................. 55브라우저에서 JavaScript 용 SDK를 설정하려면 ..................................................................... 55

4단계: 예제 코드 다운로드 ......................................................................................................... 555단계: 예제 코드 실행 및 디버그 ................................................................................................. 56

코드 예제 ......................................................................................................................................... 57JavaScript ES6/공용JS 구문 ....................................................................................................... 57Amazon CloudWatch 예제 .......................................................................................................... 59

Amazon CloudWatch 치에서 경보 생성 ................................................................................ 60Amazon CloudWatch 에서 경보 작업 사용 ............................................................................ 63Amazon CloudWatch 에서 지표 가져오기 ............................................................................. 67Amazon CloudWatch Events에 이벤트 전송 .......................................................................... 70Amazon CloudWatch Logs 에서 구독 필터 사용 ..................................................................... 74

Amazon DynamoDB 예제 ........................................................................................................... 79DynamoDB 에서 테이블 생성 및 사용 .................................................................................. 79DynamoDB 에서 단일 항목 읽기 및 쓰기 .............................................................................. 84DynamoDB 에서 일괄적으로 항목 읽기 및 쓰기 ..................................................................... 88DynamoDB 테이블을 쿼리하고 스캔하는 중 .......................................................................... 91DynamoDB 문서 클라이언트 사용 ....................................................................................... 94

Amazon EC2 예제 ................................................................................................................... 103

iv

Page 5: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드

Amazon EC2 인스턴스 생성 ............................................................................................. 103Amazon EC2 인스턴스 관리 ............................................................................................. 105Amazon EC2 키 페어 작업 ............................................................................................... 110Amazon EC2 리전 및 가용 영역 사용 ................................................................................. 113Amazon EC2 보안 그룹 작업 ............................................................................................ 114Amazon EC2 탄력적 IP 주소 사용 ..................................................................................... 118

MediaConvert ......................................................................................................................... 121계정별 엔드포인트입니다. ................................................................................................. 122작업 생성 및 관리 .......................................................................................................... 123작업 템플릿 사용 ............................................................................................................. 129

Amazon S3 Glacier ................................................................................................................. 136S3 Glacier 볼트 생성 ....................................................................................................... 137S3 Glacier ...................................................................................................................... 138

AWS Identity and Access Management 예제 ............................................................................... 139IAM 사용자 관리 ............................................................................................................. 140IAM 정책 작업 ................................................................................................................ 144IAM 액세스 키 관리 ......................................................................................................... 150IAM 서버 인증서 작업 ...................................................................................................... 155IAM 계정 별칭 관리 ......................................................................................................... 159

Amazon Kinesis 예제 ............................................................................................................... 162Amazon Kinesis 를 사용하여 웹 페이지 스크롤 진행률 캡처 ................................................... 162

AWS Lambda 예제 .................................................................................................................. 169Amazon Lex 예제 .................................................................................................................... 170Amazon Polly 예제 .................................................................................................................. 170

시나리오 ........................................................................................................................ 170사전 필수 작업 ................................................................................................................ 170Amazon Polly 를 사용하여 녹음된 오디오를 Amazon S3 ........................................................ 171

Amazon S3 예제 ..................................................................................................................... 172Amazon S3 브라우저 예제 ................................................................................................ 172Amazon S3 Node.js 예제 ................................................................................................. 197

Amazon SES 예제 .................................................................................................................. 222자격 증명 관리 ................................................................................................................ 223이메일 템플릿을 사용한 작업 ............................................................................................ 227Amazon SES 를 사용하여 이메일 전송 ............................................................................... 233IP 주소 필터 사용 ........................................................................................................... 239수신 규칙 사용 ................................................................................................................ 242

Amazon SNS 예제 .................................................................................................................. 247주제 관리 ....................................................................................................................... 247주제에 메시지 게시 ......................................................................................................... 252구독 관리 ....................................................................................................................... 254SMS 메시지 전송 ............................................................................................................ 261

Amazon SQS 예제 .................................................................................................................. 267Amazon SQS 에서 대기열 사용 ......................................................................................... 267Amazon SQS 에서 메시지 보내기 및 받기 .......................................................................... 272Amazon SQS 에서 가시성 제한 시간 관리 .......................................................................... 275Amazon SQS 에서 긴 폴링 활성화 ..................................................................................... 277Amazon SQS 배달 못한 편지 대기열의 사용 ....................................................................... 281

Amazon Transcribe 예제 .......................................................................................................... 283Amazon Transcribe 예제 .................................................................................................. 283Amazon Transcribe 의료 .................................................................................................. 287

Amazon Redshift 예제 ............................................................................................................. 290Amazon Redshift 예제 ..................................................................................................... 291

서비스 간 사례 ................................................................................................................................ 296Amazon EC2 인스턴스에서 Node.js 설정 .................................................................................... 296

Prerequisites .................................................................................................................. 296Procedure ...................................................................................................................... 296Amazon 머신 이미지 (AMI) 생성 ........................................................................................ 297

v

Page 6: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드

관련 리소스 .................................................................................................................... 297DynamoDB 에 데이터를 제출할 앱 빌드 ..................................................................................... 298

시나리오 관리 시나리오 ................................................................................................... 298Prerequisites .................................................................................................................. 298생성AWS리소스 .............................................................................................................. 299앱의 프런트 엔드 페이지 만들기 ........................................................................................ 300브라우저 스크립트 생성 ................................................................................................... 301리소스 삭제 .................................................................................................................... 303

인증된 사용자와 함께 전사 앱 빌드 ............................................................................................ 303시나리오 ........................................................................................................................ 303Steps ............................................................................................................................. 304Prerequisites .................................................................................................................. 304생성AWS리소스 .............................................................................................................. 304HTML 생성 ..................................................................................................................... 305브라우저 스크립트 준비 ................................................................................................... 306앱 실행 .......................................................................................................................... 311를 삭제합니다.AWS리소스 ................................................................................................ 311

API Gateway 사용하여 Lambda 호출 ......................................................................................... 312사전 요구 사항 작업 ........................................................................................................ 313생성AWS리소스 .............................................................................................................. 313AWS Lambda 함수 생성 ................................................................................................... 315Lambda 함수 배포 ........................................................................................................... 317Lambda 함수를 호출할 API Gateway 를 구성합니다. ............................................................ 318리소스 삭제 .................................................................................................................... 322

생성AWS서버리스 워크플로 사용AWS SDK for JavaScript ............................................................ 322사전 조건 작업 ................................................................................................................ 323생성AWS리소스 .............................................................................................................. 323워크플로우 생성 .............................................................................................................. 324Lambda 함수 생성 ........................................................................................................... 327

실행할 예약된 이벤트 만들기AWS Lambda함수 ........................................................................... 334사전 조건 작업 ................................................................................................................ 335생성AWS리소스 .............................................................................................................. 335AWS Lambda 함수 생성 ................................................................................................... 338Lambda 함수 배포 ........................................................................................................... 340Lambda 함수를 호출하도록 CloudWatch 를 구성합니다. ........................................................ 341리소스 삭제 .................................................................................................................... 342

Lambda 함수 만들기 및 사용 .................................................................................................... 342사전 필수 작업 ................................................................................................................ 342생성AWS리소스 .............................................................................................................. 343HTML 만들기 .................................................................................................................. 345브라우저 스크립트 준비 ................................................................................................... 345Lambda 함수 생성 ........................................................................................................... 347Lambda 함수를 배포합니다. .............................................................................................. 348리소스 삭제 .................................................................................................................... 349

Amazon Lex 챗봇 구축 ............................................................................................................ 349Prerequisites .................................................................................................................. 351생성AWS리소스 .............................................................................................................. 351Amazon Lex 봇 만들기 .................................................................................................... 352HTML 생성 ..................................................................................................................... 353브라우저 스크립트 작성 ................................................................................................... 353다음 단계 ....................................................................................................................... 357

예제 메시징 응용 프로그램 만들기 ............................................................................................. 357Prerequisites .................................................................................................................. 358생성AWS리소스 .............................................................................................................. 359이해AWS메시징 응용 프로그램 ......................................................................................... 360HTML 페이지 생성 .......................................................................................................... 361브라우저 스크립트 생성 ................................................................................................... 362

vi

Page 7: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드

다음 단계 ....................................................................................................................... 367보안 .............................................................................................................................................. 368

데이터 보호 ............................................................................................................................ 368ID 및 액세스 관리 ................................................................................................................... 369규정 준수 확인 ........................................................................................................................ 369복원성 ................................................................................................................................... 370인프라 보안 ............................................................................................................................ 370TLS 1.2 적용 .......................................................................................................................... 370

Node.js에서 TLS 확인 및 적용 .......................................................................................... 370브라우저 스크립트에서 TLS 확인 및 적용 ........................................................................... 372

문서 기록 ....................................................................................................................................... 373문서 기록 ............................................................................................................................... 373

vii

Page 8: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드

개선에 도움을 주십시오.AWS SDK for JavaScript사용 하 여 피드백을 제공 하 여 버전 3 (V3) 설명서를피드백링크를 사용하거나 문제 또는 끌어오기 요청을GitHub.

이AWS SDK for JavaScriptV3 API 참조 안내서에 대한 모든 API 작업을 자세히 설명합니다AWS SDK forJavaScript버전 3 (V3) 을 선택합니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

viii

Page 9: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드SDK 메이저 버전에 대한 유지 관리 및 지원

란 무엇입니까?AWS SDK forJavaScript?

를 시작하겠습니다.AWS SDK for JavaScript개발자 안내서. 이 가이드에서는 설정 및 구성에 대한 일반 정보를 제공합니다.AWS SDK for JavaScript. 또한 다양한 실행의 예제와 자습서를 안내합니다.AWS서비스의 사용AWS SDK for JavaScript.

이AWS SDK for JavaScriptAPI 참조 안내서용 JavaScript API를 제공합니다.AWS서비스. JavaScript API를사용하여 Node.js용 또는 브라우저용 라이브러리 또는 애플리케이션을 빌드할 수 있습니다.

SDK 메이저 버전에 대한 유지 관리 및 지원SDK 메이저 버전 및 기본 종속성의 유지 관리 및 지원에 대한 자세한 내용은 AWS SDK 및 도구 참조 안내서에서 다음 내용을 참조하세요.

• AWS SDK 및 도구 유지 관리 정책• AWS SDK 및 도구 버전 지원 매트릭스

버전 3의 새로운 기능JavaScript 트용 SDK (V3) 버전 3에는 다음과 같은 새로운 기능이 포함되어 있습니다.

모듈식 패키지

이제 사용자는 각 서비스에 대해 별도의 패키지를 사용할 수 있습니다.새 미들웨어 스택

이제 사용자는 미들웨어 스택을 사용하여 작업 호출의 수명 주기를 제어할 수 있습니다.

또한 SDK는 TypeScript 로 작성되며 정적 타이핑과 같은 많은 장점이 있습니다.

모듈식 패키지JavaScript 용 SDK (V2) 버전 2는 전체AWSSDK, 다음과 같습니다.

1

Page 10: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드모듈식 패키지

var AWS = require("aws-sdk");

응용 프로그램에서 많은 SDK를 사용하는 경우 전체 SDK를로드하는 것은 문제가되지 않습니다.AWS서비스. 그러나 몇 가지 만 사용해야하는 경우AWS서비스를 사용하는 경우 필요하거나 사용하지 않는 코드로 응용 프로그램의 크기를 늘리는 것을 의미합니다.

V3에서는 개별 만 로드하고 사용할 수 있습니다.AWS고객이 필요로 하는 서비스 이는 Amazon DynamoDB(DynamoDB) 에 대한 액세스를 제공하는 다음 예제에 나와 있습니다.

const {DynamoDB} = require("@aws-sdk/client-dynamodb");

개인을로드하고 사용할 수있을뿐만 아니라AWS서비스를 사용할 수 있지만 필요한 서비스 명령만 로드하고사용할 수도 있습니다. 다음은 DynamoDB 클라이언트 및ListTablesCommand명령입니다.

const { DynamoDBClient, ListTablesCommand} = require('@aws-sdk/client-dynamodb')

Important

서브 모듈을 모듈로 가져 가면 안됩니다. 예를 들어 다음 코드에서는 오류가 발생할 수 있습니다.

const {CognitoIdentity} = require("@aws-sdk/client-cognito-identity/CognitoIdentity")

다음은 올바른 코드입니다.

const {CognitoIdentity} = require("@aws-sdk/client-cognito-identity")

코드 크기 비교버전 2 (V2) 에서는 모든 Amazon DynamoDB 테이블을us-west-2지역은 다음과 같습니다.

var AWS = require("aws-sdk");// Set the RegionAWS.config.update({region: "us-west-2"});// Create DynamoDB service objectvar ddb = new AWS.DynamoDB({apiVersion: "2006-03-01"});

// Call DynamoDB to retrieve the list of tablesddb.listTables({Limit:10}, function(err, data) { if (err) { console.log("Error", err.code); } else { console.log("Tables names are ", data.TableNames); }});

V3는 다음과 같습니다.

(async function () { const { DynamoDBClient, ListTablesCommand }= require('@aws-sdk/client-dynamodb');

2

Page 11: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드모듈식 패키지

const dbclient = new DynamoDBClient({ region: 'us-west-2'}); try { const results = await dbclient.send(new ListTablesCommand); results.Tables.forEach(function (item, index) { console.log(item.Name); }); } catch (err) { console.error(err) }})();

이aws-sdk패키지는 응용 프로그램에 약 40MB를 추가합니다. 대체varAWS = require("aws-sdk")다음으로 바꿉니다.const {DynamoDB} = require("@aws-sdk/client-dynamodb")는 오버 헤드를약 3MB로 줄입니다. DynamoDB 클라이언트로만 가져오기를 제한하고ListTablesCommand명령을 사용하면 오버헤드가 100KB 미만으로 줄어듭니다.

// Load the DynamoDB client and ListTablesCommand command for Node.jsconst { DynamoDBClient, ListTablesCommand } = require('@aws-sdk/client-dynamodb');const dbclient = new DynamoDBClient({});

V3에서 명령 호출V2 또는 V3 명령을 사용하여 V3에서 작업을 수행할 수 있습니다. V3 명령을 사용하려면 명령과 필요한AWS서비스 패키지 클라이언트를 실행하고.send비동기/대기 패턴을 사용하여 메서드를 호출합니다.

V2 명령을 사용하려면 필요한AWS서비스 패키지를 사용하고 콜백 또는 async/await 패턴을 사용하여 패키지에서 직접 V2 명령을 실행합니다.

V3 명령 사용

V3는 각각에 대한 명령 세트를 제공합니다AWS서비스 패키지를 사용하여 해당 작업에 대한 작업을 수행할수 있습니다.AWS서비스. 설치 한 후AWS서비스의 경우 프로젝트의 사용 가능한 명령을 찾아 볼 수 있습니다.node-modules/@aws-sdk/client-PACKAGE_NAME/commands folder.

사용하려는 명령을 가져와야 합니다. 예를 들어 다음 코드에서는 DynamoDB 서비스를 로드하고CreateTableCommand명령입니다.

const {DynamoDB, CreateTableCommand} = require('@aws-sdk/client-dynamodb');

권장 async/await 패턴에서 이러한 명령을 호출하려면 다음 구문을 사용합니다.

CLIENT.send(newXXXCommand)

예를 들어 다음 예제에서는 권장되는 async/await 패턴을 사용하여 DynamoDB 테이블을 만듭니다.

const {DynamoDB, CreateTableCommand} = require('@aws-sdk/client-dynamodb');const dynamodb = new DynamoDB({region: 'us-west-2'});var tableParams = { Table : TABLE_NAME};async function run() => { try{ const data = await dynamodb.send(new CreateTableCommand(tableParams)); console.log("Success", data);

3

Page 12: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드새 미들웨어 스택

} catch (err) { console.log("Error", err); }};run();

V2 명령 사용

JavaScript 용 SDK에서 V2 명령을 사용하려면 전체AWS다음 코드에서 설명한 대로 서비스 패키지입니다.

const {DynamoDB} = require('@aws-sdk/client-dynamodb');

권장 async/await 패턴에서 V2 명령을 호출하려면 다음 구문을 사용합니다.

client.command(parameters)

다음 예제에서는 V2를 사용합니다.createTable명령을 사용하여 권장되는 비동기/대기 패턴을 사용하여DynamoDB 테이블을 생성합니다.

const {DynamoDB} = require('@aws-sdk/client-dynamodb');const dymamoDB = new DynamoDB({region: 'us-west-2'});var tableParams = { TableName : TABLE_NAME};async function run() => { try { const data = await dymamoDB.createTable(tableParams); console.log("Success", data); } catch (err) { console.log("Error", err); }};run();

다음 예제에서는 V2를 사용합니다.createBucket명령을 사용하여 콜백 패턴을 사용하여 Amazon S3 버킷을 생성합니다.

const {S3} = require('@aws-sdk/client-s3');const s3 = new S3({region: 'us-west-2'});var bucketParams = { Bucket : BUCKET_NAME};function run(){ s3.createBucket(bucketParams, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Location); } })};

새 미들웨어 스택SDK의 V2를 사용하면 이벤트 리스너를 요청에 연결하여 수명 주기의 여러 단계에서 요청을 수정할 수 있습니다. 이 방법을 사용하면 요청의 수명 주기 동안 무엇이 잘못되었는지 디버깅하기가 어려울 수 있습니다.

4

Page 13: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Node.js에서 SDK 사용

V3에서는 새 미들웨어 스택을 사용하여 작업 호출의 라이프 사이클을 제어 할 수 있습니다. 이 접근법은 몇가지 이점을 제공합니다. 스택의 각 미들웨어 단계는 요청 객체를 변경한 후 다음 미들웨어 단계를 호출합니다. 또한 오류가 발생하여 호출 된 미들웨어 단계를 정확히 볼 수 있기 때문에 스택의 디버깅 문제를 훨씬 쉽게 만듭니다.

다음 예제에서는 미들웨어를 사용하여 Amazon DynamoDB 클라이언트 (앞에서 생성하고 보여준) 에 사용자지정 헤더를 추가합니다. 첫 번째 인수는next는 호출 할 스택의 다음 미들웨어 단계이며context호출되는연산에 대한 몇 가지 정보를 포함하는 객체입니다. 이 함수는 받아들이는 함수를 반환합니다.args는 작업 및요청에 전달된 매개 변수를 포함하는 객체입니다. 그것은 다음 미들웨어를 호출에서 결과를 반환args.

dbclient.middlewareStack.add( (next, context) => args => { args.request.headers["Custom-Header"] = "value"; return next(args); }, { step: "build" });

dbclient.send(new PutObjectCommand(params));

Node.js에서 SDK 사용Node.js는 서버 측 JavaScript 애플리케이션을 실행하기 위한 교차 플랫폼 런타임입니다. Amazon ElasticCompute Cloud (Amazon EC2) 인스턴스에서 Node.js 를 설정하여 서버에서 실행할 수 있습니다. 또한Node.js를 사용하여 온디맨드 AWS Lambda 함수를 작성할 수도 있습니다.

Node.js에 SDK를 사용하는 것은 웹 브라우저에서 JavaScript에 SDK를 사용하는 방법과 다릅니다. SDK를로드하고 특정 웹 서비스에 액세스하는 데 필요한 자격 증명을 얻는 방법에서 차이가 비롯됩니다. 특정 API사용이 Node.js 와 브라우저 간에 다른 경우 해당 차이점을 나타냅니다.

SDK 사용AWS Cloud9또한 JavaScript 용 SDK를 사용하여 Node.js 애플리케이션을 개발할 수 있습니다.AWS Cloud9IDE. 사용에관한 자세한 내용은 단원을 참조하십시오.AWS Cloud9JavaScript 용 SDK를 사용하여 자세한 내용은AWSSDK for JavaScript에서 AWS Cloud9 사용 (p. 54).

SDK 사용AWS Amplify브라우저 기반 웹, 모바일 및 하이브리드 앱의 경우에도AWS Amplify라이브러리의 GitHub 의 라이브러리. 그것은 선언적 인터페이스를 제공하는 JavaScript 용 SDK를 확장합니다.

Note

Amplify 와 같은 프레임워크는 JavaScript 용 SDK와 동일한 브라우저 지원을 제공하지 않을 수 있습니다 자세한 내용은 프레임워크 설명서를 참조하십시오.

웹 브라우저에서 SDK 사용주요 웹 브라우저는 모두 JavaScript 확장을 지원합니다. 웹 브라우저에서 실행 중인 JavaScript 코드를 일반적으로 클라이언트 측 JavaScript라고 합니다.

5

Page 14: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드V3에서 브라우저 사용하기

AWS SDK for JavaScript에서 지원되는 브라우저 목록은 지원되는 웹 브라우저 (p. 23) 섹션을 참조하십시오.

웹 브라우저에서 JavaScript 용 SDK를 사용하는 것은 Node.js 사용에 SDK를 사용하는 방법과 다릅니다.SDK를 로드하고 특정 웹 서비스에 액세스하는 데 필요한 자격 증명을 얻는 방법에서 차이가 비롯됩니다. 특정 API 사용이 Node.js 와 브라우저 간에 다른 경우 해당 차이점을 나타냅니다.

V3에서 브라우저 사용하기V3를 사용하면 필요한 JavaScript 파일용 SDK 만 번들로 묶어 브라우저에 포함시켜 오버헤드를 줄일 수 있습니다.

HTML 페이지에서 JavaScript 용 SDK의 V3을 사용하려면 필요한 클라이언트 모듈과 필요한 모든JavaScript 함수를 Webpack을 사용하여 단일 JavaScript 파일로 묶고<head>당신의 HTML 페이지. 예:

<script src="./main.js"></script>

Note

Webpack에 대한 자세한 내용은 단원을 참조하세요.webpack으로 애플리케이션 번들링 (p. 42).

JavaScript 용 SDK의 V2를 사용하려면 V2 SDK의 최신 버전을 가리키는 스크립트 태그를 대신 추가합니다.자세한 내용은 단원을 참조하십시오.https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/getting-started-browser.html#getting-started-browser-run-sampleJavaScript 용 SDK v2 개발자 안내서.

일반적인 활용 사례브라우저 스크립트에서 JavaScript 용 SDK를 사용하면 여러 가지 흥미로운 사용 사례를 실현할 수 있습니다.다음은 다양한 웹 서비스에 액세스하기 위해 JavaScript 용 SDK를 사용하여 브라우저 애플리케이션에서 빌드할 수 있는 것에 대한 몇 가지 아이디어입니다.

• 사용자 지정 콘솔을 빌드하여AWS조직 또는 프로젝트 요구 사항을 최대한 충족하기 위해 리전 및 서비스전반에 걸쳐 기능에 액세스하고 기능을 결합하는 서비스입니다.

• Amazon Cognito ID를 사용하여 인증된 사용자가 Facebook 등에서 얻은 타사 인증 사용을 포함해 브라우저 애플리케이션 및 웹 사이트에 액세스하도록 합니다.

• Amazon Kinesis 를 사용하여 클릭 스트림 또는 기타 마케팅 데이터를 실시간으로 처리합니다.• 웹 사이트 방문자 또는 애플리케이션 사용자에 대한 개별 사용자 설정 등과 같이 서버를 사용하지 않는 데

이터 지속성에 를 사용합니다.• AWS Lambda를 사용하여 지적 재산을 다운로드해 사용자에게 노출하는 일 없이 브라우저 스크립트에서

호출할 수 있는 독점 로직을 캡슐화합니다.

예제 정보당신은에서 JavaScript 예제에 대한 SDK를 검색 할 수 있습니다AWS코드 예제 리포지토리.

Resources이 설명서 외에도 JavaScript 개발자에게 SDK를 사용할 수 있는 다음 온라인 리소스입니다.

• AWS SDK for JavaScript API 참조 안내서• JavaScript 개발자 블로그• AWS JavaScript 포럼• JavaScript 용 예제AWS코드 카탈로그

6

Page 15: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Resources

• AWS 코드 예제 리포지토리• Gitter 채널• 스택 오버플로우• 스택 오버플로 질문 태그 -sdk-js• GitHub

• SDK 소스• 설명서 소스

7

Page 16: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트에서 시작하기

AWS SDK for JavaScript 시작하기AWS SDK for JavaScript에서는 브라우저 스크립트 또는 Node.js를 사용하여 웹 서비스에 액세스할 수 있습니다. 이 섹션에는 시작하기 연습이 2개 있어 각 JavaScript 환경에서 JavaScript용 SDK를 사용하는 방법을보여줍니다.

Note

당신은에서 JavaScript 트에 대한 SDK를 사용하여, 브라우저 기반 응용 프로그램에 대한Node.js 응용 프로그램 및 Node.js 개발할 수 있습니다AWS Cloud9IDEO. 사용 방법의 예AWSCloud9Node.js 개발용 내용은 단원을 참조하십시오.AWS SDK for JavaScript에서 AWS Cloud9 사용 (p. 54).

주제• 브라우저 스크립트에서 시작하기 (p. 8)• Node.js 시작하기 (p. 12)• 네이티브 반응에서 시작하기 (p. 15)

브라우저 스크립트에서 시작하기이 섹션에서는 브라우저에서 JavaSJavaScript 용 SDK 버전 3 (V3) 을 실행하는 방법을 보여 주는 예제를 살펴봅니다.

Note

브라우저에서 V3를 실행하는 것은 버전 2 (V2) 와 약간 다릅니다. 자세한 정보는 V3에서 브라우저사용하기 (p. 6)을 참조하십시오.

브라우저에서 Node.js 를 사용하여 JavaScript 용 SDK (V3) 를 사용하는 다른 예는 다음을 참조하십시오.

• 브라우저에서 Amazon S3 버킷의 사진 보기 (p. 172)• 브라우저에서 Amazon S3에 사진 업로드 (p. 182)• DynamoDB 에 데이터를 제출할 앱 빌드 (p. 298)

이 브라우저 스크립트 예제는 다음을 보여 줍니다.

• 에 액세스하는 방법AWSAmazon Cognito 자격 증명을 사용하여 브라우저 스크립트에서 서비스를 생성합니다.

• Amazon Polly 를 사용하여 텍스트를 합성된 스피치로 변환하는 방법• presigner 객체를 사용하여 미리 서명된 URL을 생성하는 방법

시나리오Amazon Polly는 텍스트를 생생한 음성으로 변환하는 클라우드 서비스입니다. Amazon Polly 를 사용하면 참여와 접근성을 높여주는 애플리케이션을 개발할 수 있습니다. Amazon Polly 는 여러 언어를 지원하며 다양한 실제 음성이 포함되어 있습니다. Amazon Polly 에 대한 자세한 내용은Amazon Polly 개발자 안내서.

8

Page 17: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드1단계: Amazon Cognito 자격 증명 풀 생성

이 예제에서는 텍스트를 가져와 Amazon Polly 로 보낸 다음, 재생할 수 있도록 해당 텍스트의 합성된 오디오의 URL을 반환하는 브라우저 스크립트를 설정하여 실행하는 방법을 보여줍니다. 브라우저 스크립트는Amazon Cognito 자격 증명 풀을 사용하여 액세스하는 데 필요한 자격 증명을 제공합니다.AWS서비스. 이 예제에서는 브라우저 스크립트에서 JavaScript 용 SDK를 로드해 사용하는 기본 패턴을 보여줍니다.

Note

합성된 스피치를 재생하려면 HTML 5 오디오를 지원하는 브라우저에서 이 예제를 실행해야 합니다.

브라우저 스크립트는 JavaSJavaScript 용 SDK를 사용하여 다음 API를 사용하여 텍스트를 합성합니다.

• CognitoIdentityClient 생성자• Polly 생성자• getSynthesizeSpeechUrl

1단계: Amazon Cognito 자격 증명 풀 생성이 예제에서는 Amazon Cognito 자격 증명 풀을 생성하여 사용하여 Amazon Polly 서비스에 대한 브라우저스크립트에 인증되지 않은 액세스 권한을 제공합니다. 자격 증명 풀을 생성하면 두 개의AWS Identity andAccess ManagementIAM (역할) 역할로, 하나는 자격 증명 공급자가 인증한 사용자를 지원하고, 다른 하나는인증되지 않은 게스트 사용자를 지원합니다.

이 연습에서는 인증되지 않은 사용자 역할만 사용해 작업하여 작업에 집중할 수 있도록 합니다. 자격 증명 공급자 및 인증된 사용자에 대한 지원은 나중에 통합할 수 있습니다.

Amazon Cognito 자격 증명 풀을 생성하려면

1. 에 로그인합니다.AWS Management Console에서 Amazon Cognito 콘솔을 열고Amazon Web Services콘솔입니다.

2. 콘솔 열기 페이지에서 Manage Identity Pools(자격 증명 풀 관리)를 선택합니다.3. 다음 페이지에서 Create new identity pool(새 자격 증명 풀 만들기)을 선택합니다.

Note

다른 자격 증명 풀이 없는 경우 Amazon Cognito 콘솔에서는 이 페이지를 건너뛰고 대신 다음페이지를 엽니다.

4. Getting started wizard(시작하기 마법사)에서 Identity pool name(자격 증명 풀 이름)에 자격 증명 풀 이름을 입력합니다.

5. Enable access to unauthenticated identities(인증되지 않은 자격 증명에 대한 액세스 활성화)를 선택합니다.

6. [Create Pool]을 선택합니다.7. 다음 페이지에서 를 선택합니다.세부 정보 보기자격 증명 풀에 대해 생성된 2개의 IAM 역할의 이름을 확

인합니다. 인증되지 않은 자격 증명에 대한 역할 이름을 적어 둡니다. Amazon Polly 에 필요한 정책을 추가하려면 이 이름이 필요합니다.

8. [Allow]를 선택합니다.9. 샘플 코드 페이지에서 JavaScript 플랫폼을 선택합니다. 그런 다음 자격 증명 풀 ID와 리전을 복사하거나

적어 둡니다. 이러한 값은 브라우저 스크립트에서 REGION 및 IDENTITY_POOL_ID를 바꾸는 데 필요합니다.

9

Page 18: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드2단계: 생성된 IAM 역할에 정책 추가

Amazon Cognito 자격 증명 풀을 생성하면 브라우저 스크립트에 필요한 Amazon Polly 에 대한 권한을 추가할 준비가 된 것입니다.

2단계: 생성된 IAM 역할에 정책 추가스피치 합성을 위해 Amazon Polly에 대한 브라우저 스크립트 액세스를 활성화하려면 Amazon Cognito 자격 증명 풀에 대해 생성된 인증되지 않은 IAM 역할을 사용합니다. 이렇게 하면 해당 역할에 IAM 정책을 추가해야 합니다. IAM 역할에 대한 자세한 내용은 단원을 참조하십시오.역할을 만들어 권한을 위임할AWS서비스의IAM 사용 설명서.

인증되지 않은 사용자와 연결된 IAM 역할에 Amazon Polly 정책을 추가하려면

1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

2. 페이지 왼쪽에 있는 탐색 창에서 Roles(역할)를 선택합니다.3. IAM 역할 목록에서 이전에 Amazon Cognito 에서 생성한 인증되지 않은 자격 증명 역할에 대한 링크를

클릭합니다.4. 이 역할의 Summary(요약) 페이지에서 Attach policy(정책 연결)를 선택합니다.5. 이 역할의 Attach Permissions(권한 연결) 페이지에서 AmazonPollyFullAccess 확인란을 찾아 선택합니

다.

Note

이 프로세스를 사용하여 모든AWS서비스에 로그인합니다.6. [Attach policy]를 선택합니다.

Amazon Cognito 자격 증명 풀을 생성하고 인증되지 않은 사용자에 대한 IAM 역할에 Amazon Polly 에 대한권한을 추가하면 웹페이지 및 브라우저 스크립트를 작성할 준비가 된 것입니다.

3단계: 프로젝트 환경 작성이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사모듈. 의 지시 사항을 따릅니다.GitHub.

4단계: HTML 페이지 생성이 샘플 앱은 사용자 인터페이스가 포함된 단일 HTML 페이지 및 필수 JavaScript가 포함된 JavaScript 파일로 구성되어 있습니다. 시작하려면 HTML 문서를 생성하고 다음 내용을 복사해 생성한 HTML 문서에 복사합니다. 이 페이지에는 입력 필드 및 버튼, 합성된 스피치 재생을 위한 <audio> 요소와 메시지 표시를 위한<p> 요소가 포함되어 있습니다. 전체 예제는 이 페이지 맨 아래에 나와 있습니다.

이<script>요소는 추가main.js파일에, 예제에 필요한 모든 JavaScript 포함되어 있습니다.

webpack을 사용하여main.js파일에 설명된 대로5단계: JavaScript 작성 (p. 11).

에 대한 자세한 내용은<audio>요소에 대한 자세한 내용은audio.

전체 HTML 페이지를 사용할 수 있습니다GitHub 에 있음.

HTML 파일의 이름을 polly.html로 지정하여 저장합니다. 애플리케이션에 대한 사용자 인터페이스를 생성하면 이 애플리케이션을 실행할 브라우저 스크립트 코드를 추가할 준비가 된 것입니다.

의 V3을 사용하려면AWS SDK for JavaScript브라우저에서, 당신은 당신이 설치 한 JavaScript 모듈과 함수를 번들로 Webpack이 필요합니다3단계: 프로젝트 환경 작성 (p. 10).

10

Page 19: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드5단계: JavaScript 작성

Note

Webpack 설치에 대한 자세한 내용은https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/webpack.html.

5단계: JavaScript 작성이라는 이름의 파일을 만듭니다.polly.js아래 코드를 붙여 넣습니다. 전체 JavaScript 페이지를 사용할 수있습니다GitHub 에 있음. 코드는 먼저 필요한AWSSDK 클라이언트 및 명령 그런 다음Polly서비스 클라이언트 개체를 사용하여 SDK에 대한 자격 증명을 지정합니다. Amazon Polly 와 스피치를 합성하려면 출력의사운드 형식, 샘플링 비율, 사용할 음성의 ID 및 재생할 텍스트를 포함해 다양한 파라미터를 제공합니다. 처음에 이러한 파라미터를 생성할 때에는 Text: 파라미터는 빈 문자열로 설정합니다. Text: 파라미터는 웹페이지의 <input> 요소에서 가져오는 값으로 설정됩니다.

다음으로, 라는 기능을 생성합니다.speakText()버튼에 의해 이벤트 핸들러로 호출됩니다. Amazon Polly는 합성된 스피치를 오디오 스트림으로 반환합니다. 이 오디오를 브라우저에서 재생하는 가장 쉬운 방법은가 미리 서명된 URL에서 해당 오디오를 사용할 수 있도록 만드는 것입니다. 그러면 Amazon Polly 가 미리 서명된 URL에서 해당 오디오를 사용할 수 있도록 만드는 것입니다.src의 속성<audio>웹 페이지의 요소를.

다음으로 그것을 만듭니다.Presigner객체를 사용하여 합성된 스피치 오디오를 검색할 수 있는 미리 서명된 URL을 생성합니다. 정의한 스피치 파라미터와 Polly.Presigner 생성자에 대해 생성한 Polly 서비스객체를 전달해야 합니다.

그것은 presigner 객체를 생성 한 후, 그것은 호출getSynthesizeSpeechUrl메서드를 호출해 스피치 파라미터를 전달합니다. 성공하면 이 메서드는 합성된 스피치의 URL을 반환합니다. 그러면 코드가<audio>재생을 위한 요소를 선택합니다.

마지막으로, 다음을 포함하는 프로젝트 폴더에서polly.js명령 프롬프트에서 다음을 실행하여 이 예제의JavaScriptmain.js:

webpack --entry polly.js --mode development --target web --devtool false -o main.js

Note

webpack 설치에 대한 자세한 내용은 단원을 참조하십시오.webpack으로 애플리케이션 번들링 (p. 42).

const { CognitoIdentityClient } = require("@aws-sdk/client-cognito-identity");const { fromCognitoIdentityPool,} = require("@aws-sdk/credential-provider-cognito-identity");const { Polly } = require("@aws-sdk/client-polly");const { getSynthesizeSpeechUrl } = require("@aws-sdk/polly-request-presigner");

// Create the Polly service client, assigning your credentialsconst client = new Polly({ region: "REGION", credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: "REGION" }), identityPoolId: "IDENTITY_POOL_ID" // IDENTITY_POOL_ID }),});// Set the parametersconst speechParams = { OutputFormat: "OUTPUT_FORMAT", // For example, 'mp3' SampleRate: "SAMPLE_RATE", // For example, '16000 Text: "", // The 'speakText' function supplies this value TextType: "TEXT_TYPE", // For example, "text" VoiceId: "POLLY_VOICE" // For example, "Matthew"};

11

Page 20: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드6단계: 예제 실행

const speakText = async () => { // Update the Text parameter with the text entered by the user speechParams.Text = document.getElementById("textEntry").value; try{ let url = await getSynthesizeSpeechUrl({ client, params: speechParams }); console.log(url); // Load the URL of the voice recording into the browser document.getElementById('audioSource').src = url; document.getElementById('audioPlayback').load(); document.getElementById('result').innerHTML = "Speech ready to play."; } catch (err) { console.log("Error", err); document.getElementById('result').innerHTML = err; }};// Expose the function to the browserwindow.speakText = speakText;

6단계: 예제 실행예제 앱을 실행하려면polly.html웹 브라우저에 연결합니다. 앱은 다음과 같은 모습이어야 합니다.

입력 상자에 스피치로 변환하려는 문구를 입력한 다음 Synthesize(합성)를 선택합니다. 오디오가 재생 준비가 되면 메시지가 나타납니다. 오디오 플레이어 컨트롤을 사용하여 합성된 스피치를 들을 수 있습니다.

가능한 개선 사항다음은 브라우저 스크립트에서 JavaScript 용 SDK를 사용하여 더 자세히 알아보기 위해 사용할 수 있는 이애플리케이션에 대한 변형입니다.

• 다른 사운드 출력 형식으로 실험합니다.• Amazon Polly 에서 제공하는 다양한 음성을 선택할 수 있는 옵션을 추가합니다.• 인증된 IAM 역할과 함께 사용할 수 있도록 Facebook 또는 Amazon 등과 같은 자격 증명 공급자를 통합합

니다.

Node.js 시작하기

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 프로젝트에서 사용하는 모듈을 설치 및 포함하는 방법• Node.js 코드를 작성하여 Amazon S3 버킷을 생성한 다음 해당 버킷에 객체를 업로드하는 방법• 코드를 실행하는 방법.

12

Page 21: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드시나리오

시나리오이 예제에서는 Amazon S3 버킷을 생성한 다음 이 버킷에 텍스트 객체를 추가하는 간단한 Node.js 모듈을 설정하여 실행하는 방법을 보여줍니다.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• npm을 설치합니다..• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타

사 모듈. 의 지시 사항을 따릅니다.GitHub.• 다음에 대한 자격 증명을 제공해야 합니다.AWS를 사용해 SDK에서 귀하의 계정 및 해당 계정의 리소스

에만 액세스할 수 있습니다. 계정 자격 증명을 받는 방법에 대한 자세한 내용은 공유 자격 증명 파일에서Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

1단계: Amazon S3 패키지 및 종속성 설치클라이언트 패키지 및 종속성을 설치하려면 다음과 같이 하십시오.

1. 에서src프로젝트 디렉토리에는package.jsonNode.js 프로젝트에 대한 메타데이터를 보관하기 위한것입니다.

Note

Node.js 프로젝트에서 package.json을 사용하는 방법에 관한 자세한 내용은 What is the filepackage.json?을 참조하십시오.

{ "name": "aws-sdk-v3-iam-examples", "version": "1.0.0", "main": "index.js", "dependencies": { "@aws-sdk/client-s3": "^3.32.0", "@aws-sdk/node-http-handler": "^3.32.0" }, "type": "module"}

예제 코드를 사용할 수 있습니다.GitHub 에 있음.2. 에서 시작nodegetstarted를 포함하는 디렉터리입니다.package.json다음 명령을 입력합니다.

npm install

패키지와 종속성이 설치됩니다.Note

당신은에 종속성을 추가 할 수 있습니다package.json를 실행하여 설치하십시오.npminstall. 또한 명령줄을 통해 직접 종속성을 추가할 수 있습니다. 예를 들어, 설치AWS SDKfor JavaScriptv3 클라이언트 모듈을 Amazon S3 명령줄에 아래 명령을 입력합니다.

npm install @aws-sdk/client-s3

이package.json종속성이 자동으로 업데이트됩니다.

13

Page 22: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드2단계: Node.js 작성

2단계: Node.js 작성Important

이 예에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나 내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. Node.js 최신 버전을 다운로드하고 설치하려면 단원을 참조하십시오.Node.js 다운로드..

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

이라는 이름의 파일을 만듭니다.sampleClient.jsAmazon S3 서비스 클라이언트 객체를 생성하는 클라이언트를 포함할 수 있습니다. 아래 코드를 복사하여 붙여 넣습니다. ReplaceREGION와 함께AWS리전.

import { S3Client } from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

먼저, 대체하여 매개 변수를 정의하십시오.버버_버버를 버킷의 이름으로 바꿉니다.버를 새 객체의 이름으로 바꿉니다.BODY를 새 객체에 대한 일부 내용으로 바꿉니다.

Amazon S3 클라이언트 객체를 생성합니다. 그런 다음 두 개의 try/catch 문을 순서대로 실행하는 비동기 래퍼 함수를 만듭니다. 첫 번째 try/catch 문은 버킷을 만들고, 두 번째 만들고 새 객체를 업로드합니다.

버킷을 만들려면 버킷을 실행하는 상수를 만듭니다.CreateBucketCommand를 사용하여.send메서드를 비동기/await 패턴을 사용하여 새 버킷의 이름을 전달합니다. await 키워드는 버킷이 생성 될 때까지 이어지는모든 코드의 실행을 차단합니다. 오류가 발생할 경우 첫 번째catch문은 오류를 반환합니다.

객체를 생성한 후 새 버킷에 객체를 생성하고 업로드하려면PutObjectCommand를 사용하여.send메서드를 호출하고 버킷, 키 및 본문 매개 변수를 전달합니다. 오류가 발생할 경우 두 번째catch문은 오류를 반환합니다.

// Import required AWS SDK clients and commands for Node.js.import { PutObjectCommand, CreateBucketCommand } from "@aws-sdk/client-s3";import { s3Client } from "./libs/s3Client.js";

// Set the parametersconst params = { Bucket: "BUCKET_NAME", // The name of the bucket. For example, 'sample_bucket_101'. Key: "KEY", // The name of the object. For example, 'sample_upload.txt'. Body: "BODY", // The content of the object. For example, 'Hello world!".};

const run = async () => { // Create an Amazon S3 bucket. try { const data = await s3Client.send( new CreateBucketCommand({ Bucket: params.Bucket }) ); console.log(data); console.log("Successfully created a bucket called ", data.Location); return data; // For unit tests. } catch (err) { console.log("Error", err);

14

Page 23: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드3단계: 예제 실행

} // Create an object and upload it to the Amazon S3 bucket. try { const results = await s3Client.send(new PutObjectCommand(params)); console.log( "Successfully created " + params.Key + " and uploaded it to " + params.Bucket + "/" + params.Key ); return results; // For unit tests. } catch (err) { console.log("Error", err); }};run();

예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

3단계: 예제 실행다음 명령을 입력하여 예제를 실행합니다.

node sample.js

업로드에 성공하면 명령 프롬프트에 확인 메시지가 표시됩니다. 또한 Amazon S3 콘솔에서도 버킷 및 업로드된 텍스트 객체를 찾을 수 있습니다.

네이티브 반응에서 시작하기이 자습서에서는 다음을 사용하여 React Native 앱을 생성하는 방법을 보여줍니다.React Native.

이 자습서에서는 다음을 보여 줍니다.

• 설치 및 포함하는 방법AWS SDK for JavaScript프로젝트에서 사용하는 버전 3 (V3) 모듈• Amazon Simple Storage Service (Amazon S3) 에 연결하는 코드를 작성하여 Amazon S3 버킷을 생성 및

삭제하는 방법

시나리오Amazon S3 는 웹을 통해 언제 어디서든 원하는 양의 데이터를 저장하고 검색할 수 있도록 지원하는 클라우드 서비스입니다. React Native는 모바일 응용 프로그램을 만들 수있는 개발 프레임 워크입니다. 이 자습서에서는 Amazon S3에 연결하여 Amazon S3 버킷을 생성 및 삭제하는 React Native 앱을 만드는 방법을 보여줍니다.

이 앱은 JavaScript API에 대해 다음 SDK를 사용합니다.

15

Page 24: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드이 자습서에 대한 설정

• CognitoIdentityClient 생성자• S3 생성자

이 자습서에 대한 설정이 단원에서는 이 자습서를 완료하는 데 필요한 최소 설정을 제공합니다. 이 내용을 전체 설정으로 간주해서는 안됩니다. 자세한 내용은 JavaScript 용 SDK 설정 (p. 23) 단원을 참조하십시오.

Note

다른 자습서나 기존 구성을 통해 다음 단계를 이미 완료한 경우 해당 단계를 건너뛰십시오.

AWS 계정 생성

생성AWS계정에 대한 자세한 내용은새 Amazon Web Services 계정을 생성 및 활성화하려면 어떻게 해야 합니까?

AWS 자격 증명 및 프로파일 생성

이 자습서를 수행하려면, 당신은 생성해야AWS Identity and Access ManagementIAM) 사용자를 생성하고해당 사용자에 대한 자격 증명을 얻어야 합니다. 이러한 자격 증명이 있으면 개발 환경에서 SDK에 해당 자격증명을 사용할 수 있습니다. 그 방법은 다음과 같습니다.

자격 증명을 만들고 사용하려면

1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

2. 선택사용자를 선택한 다음사용자 추가.3. 사용자 이름을 제공합니다. 본 자습서에서는 을 사용합니다.원어티브-자습서-사용자.4. 언더SelectAWS액세스 유형에서 선택프로그래밍 방식 액세스를 선택한 다음다음: Permissions)]을 선택

합니다.5. [Attach existing policies directly]를 선택합니다.6. In검색를 입력하고s3을 선택한 다음AmazonS3FullAccess.7. [다음: 권한(Next: 태그,다음: 검토, 및사용자 생성.8. 에 대한 자격 증명 기록원어티브-자습서-사용자. .csv 파일을 다운로드하거나 액세스 키 ID 및 보안 액

세스 키를 복사하여 붙여넣으면 됩니다.

Warning

적절한 보안 조치를 사용하여 이러한 자격 증명을 안전하게 유지하고 교체할 수 있습니다.9. 공유 AWS 자격 증명 파일을 생성하거나 엽니다. 이 파일은~/.aws/credentialsLinux 및 macOS 시

스템에서%USERPROFILE%\.aws\credentialsWindows의 경우.10. 공유 AWS 자격 증명 파일에 다음 텍스트를 추가하고 예제 ID와 예제 키를 이전에 얻은 것으로 바꿉니

다. 파일을 저장해야 합니다.

[javascript-tutorials]aws_access_key_id = AKIAIOSFODNN7EXAMPLEaws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

이전 절차는 인증 및 권한 부여를 위한 몇 가지 가능한 절차 중 가장 간단한 절차입니다. 자세한 내용은 단원을 참조하십시오.자격 증명 설정 (p. 31).

16

Page 25: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드1단계: Amazon Cognito 자격 증명 풀 생성

다른 도구 설치

이 자습서를 완료하려면React Native Native.

또한 다음 도구를 설치해야 합니다.

• Node.js

• XcodeIOS에서 테스트하는 경우.• Android Studio안드로이드에서 테스트하는 경우.

1단계: Amazon Cognito 자격 증명 풀 생성이 예제에서는 Amazon Cognito 자격 증명 풀을 생성하여 사용하여 Amazon S3 서비스용 앱에 대한 미인증액세스 권한을 제공합니다. 자격 증명 풀을 생성하면 두 개의AWS Identity and Access ManagementIAM (역할) 역할로, 하나는 자격 증명 공급자가 인증한 사용자를 지원하고, 다른 하나는 인증되지 않은 게스트 사용자를 지원합니다.

이 연습에서는 인증되지 않은 사용자 역할만 사용해 작업하여 작업에 집중할 수 있도록 합니다. 자격 증명 공급자 및 인증된 사용자에 대한 지원은 나중에 통합할 수 있습니다.

Amazon Cognito 자격 증명 풀을 생성하려면

1. 에 로그인합니다.AWS Management Console에서 Amazon Cognito 콘솔을 열고Amazon Web Services콘솔입니다.

2. 콘솔 열기 페이지에서 Manage Identity Pools(자격 증명 풀 관리)를 선택합니다.3. 다음 페이지에서 Create new identity pool(새 자격 증명 풀 만들기)을 선택합니다.

Note

다른 자격 증명 풀이 없는 경우 Amazon Cognito 콘솔에서는 이 페이지를 건너뛰고 대신 다음페이지를 엽니다.

4. Getting started wizard(시작하기 마법사)에서 Identity pool name(자격 증명 풀 이름)에 자격 증명 풀 이름을 입력합니다.

5. Enable access to unauthenticated identities(인증되지 않은 자격 증명에 대한 액세스 활성화)를 선택합니다.

6. [Create Pool]을 선택합니다.7. 다음 페이지에서 를 선택합니다.세부 정보 보기자격 증명 풀에 대해 생성된 2개의 IAM 역할의 이름을 확

인합니다. 인증되지 않은 자격 증명에 대한 역할 이름을 적어 둡니다. Amazon S3 대한 필수 정책을 추가하려면 이 이름이 필요합니다.

8. [Allow]를 선택합니다.9. 샘플 코드 페이지에서 JavaScript 플랫폼을 선택합니다. 그런 다음 자격 증명 풀 ID와 리전을 복사하거나

적어 둡니다. 이러한 값은 다음과 같이 필요합니다.REGION및버버버 버 버버버브라우저 스크립트에 로그인합니다.

Amazon Cognito 자격 증명 풀을 생성하면 React 네이티브 앱에 필요한 Amazon S3 대한 권한을 추가할 준비가 된 것입니다.

2단계: 생성된 IAM 역할에 정책 추가Amazon S3 버킷을 생성 및 삭제하려면 Amazon S3에 대한 브라우저 스크립트 액세스를 활성화하려면Amazon Cognito 자격 증명 풀에 대해 생성된 인증되지 않은 IAM 역할을 사용합니다. 이렇게 하면 해당 역할에 IAM 정책을 추가해야 합니다. IAM 역할에 대한 자세한 내용은 단원을 참조하십시오.역할을 만들어 권한을 위임할AWS서비스의IAM 사용 설명서.

17

Page 26: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드3단계: 생성-반응 네이티브 앱을 사용하여 앱 만들기

인증되지 않은 사용자와 연결된 IAM 역할에 Amazon S3 정책을 추가하려면

1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

2. 페이지 왼쪽에 있는 탐색 창에서 Roles(역할)를 선택합니다.3. IAM 역할 목록에서 이전에 Amazon Cognito 에서 생성한 인증되지 않은 자격 증명 역할에 대한 링크를

클릭합니다.4. 이 역할의 Summary(요약) 페이지에서 Attach policy(정책 연결)를 선택합니다.5. 에서권한 연결페이지에서 해당 역할에 대한 확인란을 찾아 선택합니다.AmazonS3FullAccess.

Note

이 프로세스를 사용하여 모든AWS서비스에 로그인합니다.6. [Attach policy]를 선택합니다.

Amazon Cognito 자격 증명 풀을 생성하고 인증되지 않은 사용자에 대한 IAM 역할에 Amazon S3 권한을 추가하면 앱을 구축할 준비가 된 것입니다.

3단계: 생성-반응 네이티브 앱을 사용하여 앱 만들기다음 명령을 실행하여 React Native Native Native 앱을 생성합니다.

npx react-native init ReactNativeApp --npm

4단계: Amazon S3 패키지 및 기타 종속성 설치프로젝트 디렉토리 내에서 다음 명령을 실행하여 Amazon S3 패키지를 설치합니다.

npm install @aws-sdk/client-s3

이 명령은 프로젝트에 Amazon S3 패키지를 설치하고package.json를 사용하여 Amazon S3 를 프로젝트 종속성으로 나열하십시오. 이 패키지에 대한 정보는 다음에서 "@aws -sdk”를 검색하여 찾을 수 있습니다.https://www.npmjs.com/npm 웹 사이트.

이러한 패키지와 연결된 코드는 프로젝트의 node_modules 하위 디렉터리에 설치됩니다.

Node.js 패키지 설치에 대한 자세한 내용은 단원을 참조하십시오.로컬에서 패키지 다운로드 및 설치및Node.js 모듈 생성에 있는npm (Node.js 패키지 관리자) 웹 사이트. AWS SDK for JavaScript 설치 및 다운로드에 대한 자세한 내용은 JavaScript 용 SDK 설치 (p. 24) 섹션을 참조하십시오.

인증에 필요한 다른 종속성을 설치합니다.

npm install @aws-sdk/client-cognito-identity @aws-sdk/credential-provider-cognito-identity

5단계: React 네이티브 코드 작성다음 코드를 에 추가합니다.App.js.

import React, { useState } from "javascriptv3/example_code/reactnative/App"; import { Button, StyleSheet, Text, TextInput, View } from "react-native"; import { S3Client,

18

Page 27: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드5단계: React 네이티브 코드 작성

CreateBucketCommand, DeleteBucketCommand, } from "@aws-sdk/client-s3"; import { CognitoIdentityClient } from "@aws-sdk/client-cognito-identity"; import { fromCognitoIdentityPool } from "@aws-sdk/credential-provider-cognito-identity"; const App = () => { const [bucketName, setBucketName] = useState(""); const [successMsg, setSuccessMsg] = useState(""); const [errorMsg, setErrorMsg] = useState(""); // Replace REGION with the appropriate AWS Region, such as 'us-east-1'. const region = "REGION"; const client = new S3Client({ region, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region }), // Replace IDENTITY_POOL_ID with an appropriate Amazon Cognito Identity Pool ID for, such as 'us-east-1:xxxxxx-xxx-4103-9936-b52exxxxfd6'. identityPoolId: "IDENTITY_POOL_ID", }), }); const createBucket = async () => { setSuccessMsg(""); setErrorMsg(""); try { await client.send(new CreateBucketCommand({ Bucket: bucketName })); setSuccessMsg(`Bucket "${bucketName}" created.`); } catch (e) { setErrorMsg(e); } }; const deleteBucket = async () => { setSuccessMsg(""); setErrorMsg(""); try { await client.send(new DeleteBucketCommand({ Bucket: bucketName })); setSuccessMsg(`Bucket "${bucketName}" deleted.`); } catch (e) { setErrorMsg(e); } }; return ( <View style={styles.container}> <Text style={{ color: "green" }}> {successMsg ? `Success: ${successMsg}` : ``} </Text> <Text style={{ color: "red" }}> {errorMsg ? `Error: ${errorMsg}` : ``} </Text> <View> <TextInput style={styles.textInput} onChangeText={(text) => setBucketName(text)} autoCapitalize={"none"} value={bucketName} placeholder={"Enter Bucket Name"} /> <Button backroundColor="#68a0cf" title="Create Bucket"

19

Page 28: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드6단계: 예제 실행

onPress={createBucket} /> <Button backroundColor="#68a0cf" title="Delete Bucket" onPress={deleteBucket} /> </View> </View> ); }; const styles = StyleSheet.create({ container: { flex: 1, alignItems: "center", justifyContent: "center", }, }); export default App;

코드를 먼저 가져 오려면 React, 네이티브 반응 및AWSSDK 종속성을 따릅니다

함수 응용 프로그램 내부:

• 이전에 생성한 Amazon Cognito 자격 증명 풀을 사용하여 자격 증명을 지정하여 S3Client 객체가 생성됩니다.

• 메서드 사용createBucket및deleteBucket각각 지정된 버킷을 만들고 삭제합니다.• React Native View에는 사용자가 Amazon S3 버킷 이름을 지정할 수 있는 텍스트 입력 필드와 지정된

Amazon S3 버킷을 생성 및 삭제하는 버튼이 표시됩니다.

전체 JavaScript 페이지를 사용할 수 있습니다GitHub 에 있음.

6단계: 예제 실행예를 실행하려면, 웹, IOS 또는 NPM을 사용하여 안드로이드 명령을 실행합니다.

다음은 그 예입니다.iosmacOS 에 명령을 추가합니다.

$ npm run ios

> [email protected] ios /Users/trivikr/workspace/ReactNativeApp> react-native run-ios

info Found Xcode workspace "ReactNativeApp.xcworkspace"info Launching iPhone 11 (iOS 14.2)info Building (using "xcodebuild -workspace ReactNativeApp.xcworkspace -configuration Debug -scheme ReactNativeApp -destination id=706C1A97-FA38-407D-AD77-CB4FCA9134E9")success Successfully built the appinfo Installing "/Users/trivikr/Library/Developer/Xcode/DerivedData/ReactNativeApp-cfhmsyhptwflqqejyspdqgjestra/Build/Products/Debug-iphonesimulator/ReactNativeApp.app"info Launching "org.reactjs.native.example.ReactNativeApp"

success Successfully launched the app on the simulator

다음은 그 예입니다.androidmacOS 에 명령을 추가합니다.

$ npm run android

20

Page 29: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드가능한 개선 사항

> [email protected] android> react-native run-android

info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.Jetifier found 970 file(s) to forward-jetify. Using 12 workers...info Starting JS server...info Launching emulator...info Successfully launched emulator.info Installing the app...

> Task :app:stripDebugDebugSymbols UP-TO-DATECompatible side by side NDK version was not found.

> Task :app:installDebug02:18:38 V/ddms: execute: running am get-config02:18:38 V/ddms: execute 'am get-config' on 'emulator-5554' : EOF hit. Read: -102:18:38 V/ddms: execute: returningInstalling APK 'app-debug.apk' on 'Pixel_3a_API_30_x86(AVD) - 11' for app:debug02:18:38 D/app-debug.apk: Uploading app-debug.apk onto device 'emulator-5554'02:18:38 D/Device: Uploading file onto device 'emulator-5554'02:18:38 D/ddms: Reading file permision of /Users/trivikr/workspace/ReactNativeApp/android/app/build/outputs/apk/debug/app-debug.apk as: rw-r--r--02:18:40 V/ddms: execute: running pm install -r -t "/data/local/tmp/app-debug.apk"02:18:41 V/ddms: execute 'pm install -r -t "/data/local/tmp/app-debug.apk"' on 'emulator-5554' : EOF hit. Read: -102:18:41 V/ddms: execute: returning02:18:41 V/ddms: execute: running rm "/data/local/tmp/app-debug.apk"02:18:41 V/ddms: execute 'rm "/data/local/tmp/app-debug.apk"' on 'emulator-5554' : EOF hit. Read: -102:18:41 V/ddms: execute: returningInstalled on 1 device.

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.Use '--warning-mode all' to show the individual deprecation warnings.See https://docs.gradle.org/6.2/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 6s27 actionable tasks: 2 executed, 25 up-to-dateinfo Connecting to the development server...8081info Starting the app on "emulator-5554"...Starting: Intent { cmp=com.reactnativeapp/.MainActivity }

생성하거나 삭제할 버킷 이름을 입력하고버킷 생성또는버킷 삭제. 각 명령이 Amazon S3 로 전송되고 성공또는 오류 메시지가 표시됩니다.

가능한 개선 사항다음은 React Native 앱에서 JavaScript 용 SDK를 사용하여 더 자세히 알아보기 위해 사용할 수 있는 이 애플리케이션에 대한 변형입니다.

• Amazon S3 버킷을 나열하는 버튼을 추가하고 나열된 각 버킷 옆에 삭제 버튼을 제공합니다.

21

Page 30: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드가능한 개선 사항

• 버튼을 추가하여 텍스트 객체를 버킷에 넣습니다.• 인증된 IAM 역할과 함께 사용할 수 있도록 Facebook 또는 Amazon 등과 같은 외부 자격 증명 공급자를 통

합합니다.

22

Page 31: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Prerequisites

JavaScript 용 SDK 설정이 섹션의 주제에서는 SDK에서 지원되는 웹 서비스에 액세스할 수 있도록 JavaScript 용 SDK를 설치하고로드하는 방법을 설명합니다.

Note

React Native 개발자는 AWS Amplify를 사용하여 AWS에 새로운 프로젝트를 생성해야 합니다. 자세한 내용은 aws-sdk-react-native 아카이브를 참조하십시오.

주제• Prerequisites (p. 23)• JavaScript 용 SDK 설치 (p. 24)• JavaScript 용 SDK 로드 (p. 24)• JavaScript V3 용 SDK로 코드 마이그레이션 (p. 24)

Prerequisites아직 설치되어 있지 않으면 서버에 Node.js 를 설치합니다.

주제• 를 설정하려면AWSNode.js 환경 (p. 23)• 지원되는 웹 브라우저 (p. 23)

를 설정하려면AWSNode.js 환경를 설정하려면AWS응용 프로그램을 실행할 수 있는 Node.js 환경에서는 다음 방법 중 하나를 사용합니다.

• Node.js 미리 설치되어 있는 Amazon 머신 이미지 (AMI) 를 선택합니다. 그런 다음 해당 AMI 사용하여Amazon EC2 인스턴스를 생성합니다. Amazon EC2 인스턴스를 생성할 때 AWS Marketplace . 검색 AWSMarketplace 를 선택하고 Node.js (32비트 또는 64비트) 의 미리 설치되어 있는 AMI 옵션을 선택합니다.Node.js

• Amazon EC2 인스턴스를 만들고 해당 인스턴스에 Node.js 를 설치합니다. Amazon Linux 인스턴스에 Node.js 를 설치하는 방법에 대한 자세한 내용은 단원을 참조하십시오.Amazon EC2 인스턴스에서Node.js 설정 (p. 296).

• 를 사용하여 서버리스 환경 만들기AWS Lambda를 사용하여 Node.js Lambda 함수로 실행합니다. Lambda 함수에서 Node.js 사용에 대한 자세한 내용은 단원을 참조하세요.프로그래밍 모델Node.js의AWS Lambda개발자 안내서.

• Node.js 애플리케이션을 AWS Elastic Beanstalk에 배포합니다. Elastic Beanstalk Node.js 사용에 대한자세한 내용은 단원을 참조하세요.에 Node.js 애플리케이션 배포AWS Elastic Beanstalk의AWS ElasticBeanstalk개발자 안내서.

• AWS OpsWorks를 사용하여 Node.js 애플리케이션 서버를 생성합니다. Node.js 사용에 대한 자세한 내용은AWS OpsWorks에 대한 자세한 내용은첫 번째 Node.js 스택 만들기의AWS OpsWorks사용 설명서.

지원되는 웹 브라우저JavaScript 용 SDK는 이러한 최소 버전을 포함하여 모든 최신 웹 브라우저를 지원합니다.

23

Page 32: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드SDK 설치

브라우저 버전

Google Chrome 49.0+

Mozilla Firefox 45.0+

Opera 36.0+

Microsoft Edge 12.0+

Windows Internet Explorer 해당 사항 없음

Apple Safari 9.0

Android 브라우저 76.0+

UC 브라우저 12.12개 이상

삼성 인터넷 5.0+

Note

프레임워크AWS Amplify에서 JavaScript용 SDK와 동일한 브라우저 지원을 제공하지 않을 수 있습니다. 단원을 참조하십시오.AWS Amplify설명서에서 세부 정보 보기

JavaScript 용 SDK 설치일부 서비스는 SDK 또는 모든AWS지역.

에서 서비스를 설치하려면AWS SDK for JavaScript를 사용하는npm, Node.js 패키지 관리자에서 명령 프롬프트에 다음 명령을 입력합니다.버버버와 같은 서비스의 이름입니다.s3.

npm install @aws-sdk/client-SERVICE

JavaScript 용 SDK 로드SDK를 설치한 후 노드 애플리케이션에서 클라이언트 패키지를 로드할 수 있습니다.require. 예를 들어Amazon S3 클라이언트를 로드하려면 다음을 사용합니다.

const {S3} = require('@aws-sdk/client-s3');

JavaScript V3 용 SDK로 코드 마이그레이션JavaScript 버전 3 (V3) 용 SDK에 대한 여러 마이그레이션 경로가 있습니다. V3의 용량 감소 가능성을 최대한 활용하려면 경로 3을 사용하는 것이 좋습니다.

Important

AWS SDK for JavaScript버전 3 (v3) 에는 자격 증명, Amazon S3 멀티파트 업로드, DynamoDB 문서 클라이언트, 웨이터 등 클라이언트 구성 및 유틸리티를 위한 최신 인터페이스도 함께 제공됩

24

Page 33: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드예제 1

니다. v2에서 변경된 내용과 각 변경 사항에 대한 v3 항목은마이그레이션 가이드의AWS SDK forJavaScriptGitHub 레포.

Path 1

최소한의 변경을 수행합니다.

• 특정 항목만 설치하십시오.AWS필요한 서비스 패키지.• V3 서비스 클라이언트를 만들고 사용하고 Region 같은 전역 구성 값의 사용을 클라이언트에 인수로

전달된 구성 값으로 바꿉니다.

Note

다음을 설정할 수 있습니다.AWS환경 변수 또는 공유 구성을 사용하는 지역config파일을엽니다. 자세한 내용은 단원을 참조하십시오.Node.js 에서 자격 증명 설정.

Path 2

경로 1을 따르고.promiseV3에서는 필요하지 않습니다.Path 3

경로 1을 따르고 비동기/대기 프로그래밍 모델을 사용하십시오.

Important

중요한 변경 사항에 대한 자세한 내용은AWS SDK for JavaScriptv2에서 v3를 참조하십시오.업그레이드 노트 (2.x에서 3.x로)(GitHub에 있음).

다음 단원에서는 이러한 경로에 대해 자세히 설명합니다.

예제 1다음 코드는AWSAmazon S3 용 서비스 패키지입니다.

npm install @aws-sdk/client-s3

다음 코드에서는 Amazon S3 서비스를 로드합니다.

const {S3} = require('@aws-sdk/client-s3');

Note

이 방법을 사용하려면 전체AWS서비스 패키지,S3이 경우 서비스 클라이언트뿐만 아니라.

다음 코드는 Amazon S3 서비스 객체를us-west-2리전.

const client = new S3({region: 'us-west-2'});

다음 코드에서는 V2의 다음 구문을 사용하여 콜백 함수를 사용하여 및 Amazon S3 버킷을 생성합니다.

client.command(parameters)

const {S3} = require('@aws-sdk/client-s3');const client = new S3({region: 'us-west-2'});

25

Page 34: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드예제 2

const bucketParams = { Bucket : BUCKET_NAME};function run(){ client.createBucket(bucketParams, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Location); } })};run();

예제 2다음은 V2에서 함수 호출입니다.promise.

const data = await v2client.command(params).promise()

다음은 V3 버전입니다.

const data = await v2client.command(params)

예제 3다음 명령은AWSAmazon S3 용 서비스 패키지입니다.

npm install @aws-sdk/client-s3;

다음 코드는 Amazon S3 클라이언트만 로드하여 오버헤드를 줄입니다.

const {S3Client, CreateBucketCommand} = require('@aws-sdk/client-s3');

패키지의 클라이언트만 설치하는 경우 사용할 V3 명령도 가져와야 합니다. 이 경우 코드는CreateBucketCommand를 통해 Amazon S3 버킷을 생성할 수 있습니다. 프로젝트에서 사용 가능한 명령을 찾아볼 수 있습니다.node-modules/@aws-sdk/client-PACKAGE_NAME/commandsfolder.

다음 코드는 Amazon S3 서비스 클라이언트 객체를us-west-2리전.

const client = new S3Client({region: 'us-west-2'});

권장되는 async/await 패턴을 사용하여 가져온 명령을 호출하려면 사용하려는 명령을 가져오고 다음 구문을사용하여 명령을 실행해야 합니다.

CLIENT.send(newXXXCommand)

다음 예제에서는 오버헤드를 줄이기 위해 Amazon S3 서비스 패키지의 클라이언트만 사용하여 비동기/대기패턴을 사용하여 Amazon S3 버킷을 만듭니다.

const {S3Client, CreateBucketCommand} = require('@aws-sdk/client-s3');const client = new S3Client({region: 'us-west-2'});const bucketParams = {

26

Page 35: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드예제 3

Bucket : BUCKET_NAME};

const run = async () => { try{ const data = await client.send(new CreateBucketCommand(bucketParams)); console.log("Success", data); } catch (err) { console.log("Error", err); }};await run();

더 많은 예제는 JavaScript 용 코드 예시 (p. 57)를 참조하세요.

27

Page 36: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드서비스당 구성

JavaScript 용 SDK 구성JavaScript SDK를 사용하여 API를 사용하여 웹 서비스를 호출하기 전에 먼저 SDK를 구성해야 합니다. 최소한 다음 설정을 구성해야 합니다.

• 이AWS서비스를 요청할 리전• 이자격 증명SDK 리소스에 대한 액세스 권한을 부여하는 인증

이러한 설정 외에도 에 대한 권한을 구성해야 할 수도 있습니다.AWS있습니다. 예를 들어 Amazon S3 버킷에대한 액세스를 제한하거나 읽기 전용 액세스만 가능하도록 Amazon DynamoDB 테이블을 제한할 수 있습니다.

이 섹션의 주제에서는 웹 브라우저에서 실행되는 JavaScript 및 Node.js 용 SDK를 구성하는 방법을 설명합니다.

주제• 서비스당 구성 (p. 28)• 설정AWS리전 (p. 29)• 자격 증명 받기 (p. 30)• 자격 증명 설정 (p. 31)• Node.js 고려 사항 (p. 36)• 브라우저 스크립트 고려 사항 (p. 39)

서비스당 구성서비스 객체에 구성 정보를 전달하여 SDK를 구성할 수 있습니다.

서비스 수준 구성은 개별 서비스에 대한 중요한 제어 기능을 제공하므로 요구 사항이 기본 구성과 다른 경우개별 서비스 객체의 구성을 업데이트할 수 있습니다.

Note

버전 2.x에서AWS SDK for JavaScript서비스 구성은 개별 클라이언트 생성자에 전달 될 수 있습니다. 그러나 이러한 구성은 먼저 전역 SDK 구성의 복사본에 자동으로 병합됩니다.AWS.config.또한, 전화AWS.config.update({/* params *})업데이트 호출이 이루어진 후에 인스턴스화된 서비스 클라이언트에 대한 업데이트 된 구성 만 기존 클라이언트가 아닙니다.이 동작은 혼란의 빈번한 원인이었으며 정방향 호환 방식으로 서비스 클라이언트의 하위 집합에만영향을 미치는 구성을 전역 개체에 추가하기가 어려웠습니다. 버전 3에는 SDK에서 관리하는 전역구성이 더 이상 없습니다. 구성은 인스턴스화된 각 서비스 클라이언트에 전달되어야 합니다. 여러클라이언트에서 동일한 구성을 공유할 수는 있지만 해당 구성은 전역 상태와 자동으로 병합되지 않습니다.

서비스당 구성 설정JavaScript 용 SDK에서 사용하는 각 서비스는 해당 서비스에 대한 API의 일부인 서비스 객체를 통해 액세스합니다. 예를 들어 Amazon S3 서비스에 액세스하려면 Amazon S3 서비스 객체를 생성합니다. 해당 서비스객체에 대한 생성자의 일부인 서비스별 구성 설정을 지정할 수 있습니다.

28

Page 37: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드설정AWS리전

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

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

설정AWS리전원래 요청 ping에 대한AWS지역의 명명 된 집합입니다AWS동일한 지리적 영역에 리소스. 리전의 한 가지 예로 들 수 있습니다.us-east-1이 리전은 US East (N. Virginia) 리전입니다. JavaScript 용 SDK에서 서비스클라이언트를 만들 때 리전을 지정하면 SDK가 해당 리전의 서비스에 액세스할 수 있습니다. 일부 서비스는특정 리전에서만 사용할 수 있습니다.

JavaScript 용 SDK는 기본적으로 리전을 선택하지 않습니다. 그러나 설정할 수 있습니다.AWS환경 변수 또는 공유 구성을 사용하는 지역config파일을 엽니다.

클라이언트 클래스 생성자에서서비스 객체를 인스턴스화할 때AWS다음과 같이 클라이언트 클래스 생성자의 일부로 해당 리소스의 리전을제공합니다.

const s3Client = new S3.S3Client({region: 'us-west-2'});

환경 변수 사용AWS_REGION 환경 변수를 사용하여 리전을 설정할 수 있습니다. 이 변수를 정의하면 JavaScript 용 SDK가해당 변수를 읽고 사용합니다.

공유 구성 파일 사용공유 자격 증명 파일을 사용하면 SDK에서 사용할 인증 자격 증명을 저장할 수 있는 것과 마찬가지로AWS라는 공유 파일의 지역 및 기타 구성 설정config를 사용하여 SDK가 사용할 수 있습니다. 만약AWS_SDK_LOAD_CONFIG환경 변수가 진리 값 (truthy value) 으로 설정된 경우 JavaScript 용 SDK가config파일을로드 할 때. config 파일을 저장하는 위치는 운영 체제에 따라 다릅니다.

• Linux, macOS 또는 Unix 사용자 -~/.aws/config• Windows 사용자 -C:\Users\USER_NAME\.aws\config

아직 공유 config 파일이 없는 경우, 지정된 디렉터리에 하나를 생성할 수 있습니다. 다음 예제의 경우config 파일에서 리전과 출력 형식을 둘 다 설정합니다.

[default] region=us-west-2 output=json

공유 사용에 관한 자세한 내용은config및 자격 증명 파일에 대한 자세한 내용은공유 자격 증명 파일에서Node.js 인증 자격 증명 로드 (p. 32)또는구성 및 자격 증명 파일의AWS Command Line Interface사용 설명서.

29

Page 38: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드지역 설정에 대한 우선 순위 순서

지역 설정에 대한 우선 순위 순서다음은 리전 설정의 우선 순위입니다.

1. 어떤 리전이 클라이언트 클래스 생성자로 전달된 경우 이 리전이 사용됩니다.2. 그렇지 않으면 공유 구성 파일에 정의 된 지역이 사용됩니다.

자격 증명 받기를 생성할 때 에서AWS계정에 루트 인증 자격 증명 또는 액세스 키가 제공됩니다.

• 액세스 키 ID• 보안 액세스 키

액세스 키에 대한 자세한 내용은 단원을 참조하세요.보안 자격 증명 이해 및 가져오기의AWS일반 참조.

액세스 키는 액세스 키 ID 및 비밀 액세스 키로 이루어져 있는데, 이를 사용하여 에 보내는 프로그래밍 방식의 요청에 서명할 수 있습니다AWS 액세스 키가 없는 경우에는 AWS Management Console에서 액세스 키를 생성할 수 있습니다 AWS 계정 루트 사용자 액세스 키가 필요하지 않은 태스크에는 액세스 키를 사용하지 않는 것이 바람직한 모범 사례입니다. 대신 자신에 대한 액세스 키를 사용하여 새 관리자 IAM 사용자를 생성합니다.

보안 액세스 키는 액세스 키를 생성하는 시점에만 보고 다운로드할 수 있습니다. 나중에 복구할 수 없습니다.하지만 언제든지 새 액세스 키를 생성할 수 있습니다. 필요한 IAM 작업을 수행할 수 있는 권한도 있어야 합니다. 자세한 내용은 IAM 사용 설명서에서 IAM 리소스에 액세스하는 데 필요한 권한을 참조하세요.

IAM 사용자에 대한 액세스 키를 생성하려면

1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

2. 탐색 창에서 사용자를 선택합니다.3. 액세스 키를 생성할 사용자의 이름을 선택한 다음 Security credentials(보안 자격 증명) 탭을 선택합니

다.4. 액세스 키 섹션에서 Create access key(액세스 키 생성)를 선택합니다.5. 새 액세스 키 페어를 보려면 표시를 선택합니다. 이 대화 상자를 닫은 후에는 보안 액세스 키에 다시 액

세스할 수 없습니다. 자격 증명은 다음과 비슷합니다.

• 액세스 키 ID: AKIAIOSFODNN7EXAMPLE AKIAIOSFODNN7EXAMPLE• 비밀 액세스 키: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

6. 키 페어 파일을 다운로드하려면 [Download .csv file]을 선택합니다. 안전한 위치에 키를 저장합니다. 이대화 상자를 닫은 후에는 보안 액세스 키에 다시 액세스할 수 없습니다.

AWS 계정 을 보호하기 위해 키를 기밀로 유지하고, 이메일로 전송하지 마세요. AWS 또는 Amazon.com의 이름으로 문의가 온다 할지라도 조직 외부로 키를 공유하지 마세요. Amazon을 합법적으로 대표하는사람이라면 결코 보안 키를 요구하지 않을 것입니다.

7. .csv 파일을 다운로드한 후 닫기를 선택합니다. 액세스 키를 생성하면 키 페어가 기본적으로 활성화되므로 해당 페어를 즉시 사용할 수 있습니다.

관련 주제

• IAM 사용 설명서의 IAM이란 무엇입니까?• AWS 일반 참조의 AWS 보안 자격 증명

30

Page 39: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드자격 증명 설정

자격 증명 설정AWS는 인증 자격 증명을 사용하여 서비스를 호출한 사람과 요청한 리소스에 대한 액세스가 허용되는지 여부를 확인합니다. InAWS에서 이러한 인증 자격 증명은 일반적으로 계정과 함께 생성된 액세스 키 ID와 보안액세스 키입니다.

웹 브라우저에서 실행되든 Node.js 서버에서 실행되든, JavaScript 코드가 API를 통해 서비스에 액세스하려면 먼저 유효한 인증 자격 증명을 얻어야 합니다. 자격 증명을 서비스 객체에 직접 전달하여 서비스별로 인증자격 증명을 설정할 수 있습니다.

웹 브라우저에서 Node.js와 JavaScript 간에 서로 다른 인증 자격 증명을 설정하는 방법에는 여러 가지가 있습니다. 이 섹션의 주제에서는 Node.js 또는 웹 브라우저에서 인증 자격 증명을 설정하는 방법을 설명합니다.각각의 경우에 옵션은 권장 순서로 제공됩니다.

자격 증명 모범 사례인증 자격 증명을 올바르게 설정하면 애플리케이션 또는 브라우저 스크립트가 필요한 서비스 및 리소스에 액세스할 수 있는 동시에 미션 크리티컬 애플리케이션에 미치거나 중요한 데이터를 손상시킬 수 있는 보안 문제에 대한 노출을 최소화할 수 있습니다.

인증 자격 증명을 설정할 때 적용되는 중요한 원칙은 항상 작업에 필요한 최소 권한을 부여하는 것입니다. 최소 권한을 초과하는 권한을 제공하고 그 결과로 추후 발견할 수 있는 보안 문제를 해결하기 보다는, 리소스에대한 최소 권한을 제공하고 필요에 따라 권한을 추가하는 것이 더 안전합니다. 예를 들어 Amazon S3 버킷 또는 DynamoDB 테이블의 객체 같은 개별 리소스를 읽고 쓸 필요가 있지 않은 한, 이러한 권한을 읽기 전용으로 설정합니다.

최소 권한 부여에 대한 자세한 내용은최소 권한 부여절에서 모범 사례 항목의IAM 사용 설명서.

Warning

애플리케이션 또는 브라우저 스크립트 내부에서 인증 자격 증명을 하드 코딩할 수 있더라도 그렇게하지 않는 것이 좋습니다. 인증 자격 증명을 하드 코딩하면 액세스 키 ID 및 보안 액세스 키가 노출될 위험이 있습니다.

액세스 키를 관리하는 방법에 대한 자세한 내용은관리를 위한 모범 사례AWS액세스 키의AWS일반 참조서를참조하십시오.

주제• Node.js 자격 증명 설정 (p. 31)• 웹 브라우저에서 자격 증명 설정 (p. 34)

Node.js 자격 증명 설정Node.js에서 SDK에 인증 자격 증명을 제공하는 방법에는 여러 가지가 있습니다. 그 가운데는 더 안전한 방법도 있고 애플리케이션 개발 시에 더 편리한 방법도 있습니다. Node.js 인증 자격 증명을 얻을 때 로드하는JSON 파일 및 환경 변수 등 둘 이상의 소스를 사용하는 경우 주의해야 합니다. 변경 발생에 대한 인식 없이코드가 실행되는 권한을 변경할 수 있습니다.

권장 순서로 인증 자격 증명을 제공할 수 있습니다.

1. 로딩 위치AWS Identity and Access ManagementAmazon EC2 IAM 역할2. 공유 인증 자격 증명 파일(~/.aws/credentials)에서 로드3. 환경 변수에서 로드4. 디스크의 JSON 파일에서 로드

31

Page 40: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Node.js 자격 증명 설정

5. JavaScript SDK에서 제공하는 기타 자격 증명 공급자 클래스

클라이언트에 인증 자격 증명 공급자가 제공되지 않은 경우 기본 선택 우선 순위는 다음과 같습니다.

1. 환경 변수2. 공유 자격 증명 파일3. Amazon ECS 자격 증명 공급자에서 로드된 자격 증명 (해당되는 경우)4. 자격 증명 로드AWS Identity and Access ManagementAmazon EC2 인스턴스의 자격 증명 공급자를 사용

해 (인스턴스 메타데이터에서 구성된 경우)

Warning

하드 코딩하지 않는 것이 좋습니다.AWS자격 증명이 필요합니다. 인증 자격 증명을 하드 코딩하면액세스 키 ID 및 보안 액세스 키가 노출될 위험이 있습니다.

이 섹션의 주제에서는 인증 자격 증명을 Node.js로 로드하는 방법을 설명합니다.

주제• Amazon EC2 IAM 역할 Node.js (p. 32)• Node.js Lambda 함수의 인증 자격 증명 로드 (p. 32)• 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32)• 환경 변수에서 Node.js 인증 자격 증명 로드 (p. 33)• 구성된 자격 증명 프로세스를 사용하여 Node.js 인증 자격 증명 로드 (p. 34)

Amazon EC2 IAM 역할 Node.jsAmazon EC2 인스턴스에서 Node.js 애플리케이션을 실행하는 경우 Amazon EC2용 IAM 역할을 활용하여인증 자격 증명을 자동으로 제공할 수 있습니다. IAM 역할을 사용하도록 인스턴스를 구성하면 SDK가 애플리케이션의 IAM 자격 증명을 자동으로 선택하므로 인증 자격 증명을 수동으로 제공할 필요가 없습니다.

Amazon EC2 IAM 역할 추가에 대한 자세한 내용은 단원을 참조하십시오.Amazon EC2의 IAM 역할.

Node.js Lambda 함수의 인증 자격 증명 로드를 생성할 때 에서AWS Lambda함수를 실행하려면 해당 함수를 실행할 권한이 있는 IAM 역할을 생성해야 합니다. 이 역할을 실행 역할이라고 합니다. Lambda 함수를 설정할 경우 생성한 IAM 역할을 해당 실행 역할로지정해야 합니다.

실행 역할은 Lambda 함수를 실행하고 다른 웹 서비스를 호출하는 데 필요한 인증 자격 증명을 제공합니다.따라서 Lambda 함수 내에 쓰는 Node.js 코드에 인증 자격 증명을 제공할 필요가 없습니다.

Lambda 실행 역할을 만드는 방법에 대한 자세한 내용은 단원을 참조하십시오.권한 관리: IAM 역할 사용 (실행 역할)의AWS Lambda개발자 안내서.

공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드당신은 유지할 수 있습니다AWSSDK 및 명령줄 인터페이스에서 사용하는 공유 파일에 인증 자격 증명 데이터를 인증합니다. JavaScript 용 SDK가 로드되면 “credentials”라는 공유 자격 증명 파일이 자동으로 검색됩니다. 공유 인증 자격 증명 파일을 보관하는 위치는 운영 체제에 따라 다릅니다.

• Linux, Unix 및 macOS의 공유 자격 증명 파일: ~/.aws/credentials• Windows의 공유 자격 증명 파일: C:\Users\USER_NAME\.aws\credentials

32

Page 41: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Node.js 자격 증명 설정

공유된 자격 증명 파일이 아직 없는 경우 자격 증명 받기 (p. 30)를 참조하십시오. 이 지침을 따르면 자격증명 파일에 다음과 유사한 텍스트가 표시되어야 합니다. 이 텍스트에서 <YOUR_ACCESS_KEY_ID>는 액세스 키 ID이고 <YOUR_SECRET_ACCESS_KEY>는 보안 액세스 키입니다.

[default]aws_access_key_id = <YOUR_ACCESS_KEY_ID>aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY>

사용 중인 이 파일을 보여주는 예제는 Node.js 시작하기 (p. 12)를 참조하십시오.

[default] 섹션 머리글은 인증 자격 증명의 기본 프로필 및 관련 값을 지정합니다. 동일한 공유 구성 파일에 각각 고유한 인증 자격 증명 정보가 있는 추가 프로필을 만들 수 있습니다. 다음 예제에서는 기본 프로필과 추가 프로필 두 개가 있는 구성 파일을 보여 줍니다.

[default] ; default profileaws_access_key_id = <DEFAULT_ACCESS_KEY_ID>aws_secret_access_key = <DEFAULT_SECRET_ACCESS_KEY> [personal-account] ; personal account profileaws_access_key_id = <PERSONAL_ACCESS_KEY_ID>aws_secret_access_key = <PERSONAL_SECRET_ACCESS_KEY> [work-account] ; work account profileaws_access_key_id = <WORK_ACCESS_KEY_ID>aws_secret_access_key = <WORK_SECRET_ACCESS_KEY>

기본적으로 SDK는 AWS_PROFILE 환경 변수를 확인하여 사용할 프로필을 결정합니다. 환경에서AWS_PROFILE 변수가 설정되지 않은 경우, SDK는 [default] 프로필의 인증 자격 증명을 사용합니다. 대체 프로필 중 하나를 사용하려면 AWS_PROFILE 환경 변수의 값을 설정하거나 변경합니다. 예를 들어 표시된구성 파일이 있을 경우 작업 계정의 자격 증명을 사용하려면AWS_PROFILE환경 변수를work-account운영체제에 적합한 경우 를 선택합니다.

Note

환경 변수를 설정할 경우에는 셸 또는 명령 환경에서 변수를 사용할 수 있도록 (운영 체제의 필요에따라) 나중에 적절한 조치를 취해야 합니다.

환경 변수를 설정한 후 (필요한 경우) 다음과 같은 파일을 실행할 수 있습니다.script.jsSDK를 다음과 같이 사용합니다.

$ node script.js

다음 예제와 같이 클라이언트에서 사용하는 프로파일을 명시적으로 선택할 수도 있습니다.

const {fromIni} = require("@aws-sdk/credential-provider-ini");const s3Client = new S3.S3Client({ credentials: fromIni({profile: 'work-account'})});

환경 변수에서 Node.js 인증 자격 증명 로드SDK가 자동으로AWS자격 증명은 환경에서 변수로 설정하고 SDK 요청에 사용합니다. 이렇게 하면 애플리케이션에서 인증 자격 증명을 관리할 필요가 없습니다. 인증 자격 증명을 제공하기 위해 설정하는 환경 변수는 다음과 같습니다.

• AWS_ACCESS_KEY_ID

• AWS_SECRET_ACCESS_KEY

• AWS_SESSION_TOKEN (선택)

33

Page 42: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드웹 브라우저에서 자격 증명 설정

Note

환경 변수를 설정할 경우에는 셸 또는 명령 환경에서 변수를 사용할 수 있도록 (운영 체제의 필요에따라) 나중에 적절한 조치를 취해야 합니다.

구성된 자격 증명 프로세스를 사용하여 Node.js 인증 자격 증명 로드공유AWS config파일이나 공유 자격 증명 파일에 대한 자세한 내용은 단원을 참조하십시오.외부 프로세스에서 자격 증명 소싱.

웹 브라우저에서 자격 증명 설정브라우저 스크립트에서 SDK에 인증 자격 증명을 제공하는 방법에는 여러 가지가 있습니다. 그 가운데는 더안전한 방법도 있고 스크립트 개발 시에 더 편리한 방법도 있습니다.

다음은 권장 순서로 인증 자격 증명을 제공할 수 있는 방법입니다.

1. Amazon Cognito 자격 증명을 사용하여 사용자를 인증하고 인증 자격 증명 제공2. 웹 연동 자격 증명 사용3. 스크립트에서 하드 코딩

Warning

하드 코딩하지 않는 것이 좋습니다.AWS자격 증명을 스크립트에 추가합니다. 인증 자격 증명을 하드 코딩하면 액세스 키 ID 및 보안 액세스 키가 노출될 위험이 있습니다.

주제• Amazon Cognito 자격 증명을 사용하여 사용자 인증 (p. 34)

Amazon Cognito 자격 증명을 사용하여 사용자 인증얻을 수있는 권장 방법AWS자격 증명은 Amazon Cognito 자격 증명 클라이언트를 사용하는 것입니다.CognitoIdentityClient. Amazon Cognito 는 타사 자격 증명 공급자를 통해 사용자를 인증할 수 있습니다.

Amazon Cognito 자격 증명을 사용하려면 먼저 Amazon Cognito 콘솔에서 자격 증명 풀을 만들어야 합니다.자격 증명 풀은 애플리케이션이 사용자에게 제공하는 자격 증명 그룹을 나타냅니다. 사용자에게 제공되는자격 증명은 각 사용자 계정을 고유하게 식별합니다. Amazon Cognito 자격 증명은 자격 증명이 아닙니다.AWS Security Token Service(AWS STS)에서 웹 자격 증명 연동 지원을 사용하여 인증 자격 증명으로 교환됩니다.

Amazon Cognito 를 사용하면 여러 자격 증명 공급자의 자격 증명 추상화를 관리할 수 있습니다. 그러면 로드되는 자격 증명이 AWS STS의 인증 자격 증명과 교환됩니다.

Amazon Cognito 자격 증명 객체 구성

아직 생성하지 않은 자격 증명 풀에서 브라우저 스크립트와 함께 사용할 자격 증명 풀을 생성합니다.AmazonCognito 콘솔Amazon Cognito 클라이언트를 구성하기 전에 자격 증명 풀에 대해 인증된 IAM 역할과 인증되지 않은 IAM 역할을 모두 생성하고 연결합니다. 자세한 정보는 https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-identity-pool.html을 참조하십시오.

인증되지 않은 사용자는 자격 증명이 인증되지 않았으므로 앱의 게스트 사용자 또는 자격 증명의 인증 자격증명이 중요하지 않은 경우에 적합합니다. 인증받은 사용자는 자격 증명을 확인하는 타사 자격 증명 공급자

34

Page 43: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드웹 브라우저에서 자격 증명 설정

를 통해 애플리케이션에 로그인합니다. 미인증 사용자의 액세스 권한을 허용하지 않도록 리소스 권한 범위를충분히 정했는지 확인하십시오.

자격 증명 풀을 구성한 후에는 Amazon Cognito 를 사용합니다.CognitoIdentityCredentials클라이언트의@aws-sdk/aws-sdk-client-cognito-identity“및fromCognitoIdentityPool메서드에서@aws-sdk/credential-provider-cognito-identity자격 증명 풀에서 자격 증명 풀을 검색합니다. 이는 Amazon S3 클라이언트를 생성하는 다음 예제에 나와 있습니다.us-west-2 AWS에 있는 사용자에대한 리전버버버 버 버버버자격 증명 풀

// Import required AWS SDK clients and command for Node.jsconst {S3Client} = require("@aws-sdk/client-s3");const {CognitoIdentityClient} = require("@aws-sdk/client-cognito-identity");const {fromCognitoIdentityPool} = require("@aws-sdk/credential-provider-cognito-identity");

const REGION = AWS_REGION

const s3Client = new S3Client({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({region:REGION}), identityPoolId: 'IDENTITY_POOL_ID', logins: { // Optional tokens, used for authenticated login. }, })});

선택 사항인 logins 속성은 공급자의 자격 증명 토큰에 대한 자격 증명 공급자 이름의 맵입니다. 자격 증명공급자에게서 토큰을 받는 방법은 어떤 공급자를 사용하느냐에 따라 다릅니다. 예를 들어 Amazon Cognito사용자 풀을 인증 공급자로 사용하는 경우 아래와 유사한 방법을 사용할 수 있습니다.

// Get the Amazon Cognito ID token for the user. 'getToken()' below.let idToken = getToken();let COGNITO_ID = "COGNITO_ID"; // 'COGNITO_ID' has the format 'cognito-idp.REGION.amazonaws.com/COGNITO_USER_POOL_ID'let loginData = { [COGNITO_ID]: idToken,};const s3Client = new S3Client({ region: REGION, credentials: new CognitoIdentityClient({region:REGION}), identityPoolId: 'IDENTITY_POOL_ID', logins: { loginData }, }), });

// Strips the token ID from the URL after authentication.window.getToken = function () { var idtoken = window.location.href; var idtoken1 = idtoken.split("=")[1]; var idtoken2 = idtoken1.split("&")[0]; var idtoken3 = idtoken2.split("&")[0]; return idtoken3;};

인증되지 않은 사용자를 인증된 사용자로 전환Amazon Cognito 는 인증된 사용자와 인증되지 않은 사용자를 모두 지원합니다. 인증되지 않은 사용자는 자격 증명 공급자로 로그인하지 않았더라도 리소스에 대한 액세스 권한을 받습니다. 이 액세스 권한 등급은 로

35

Page 44: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Node.js 고려 사항

그인하기 전에 사용자에게 콘텐츠를 표시하는 데 유용합니다. 인증되지 않은 각 사용자는 개별적으로 로그인되지 않았으며 인증되지 않은 경우에도 Amazon Cognito 에서 고유한 자격 증명을 갖습니다.

처음에 인증되지 않은 사용자

사용자는 일반적으로 logins 속성 없이 구성 객체의 인증 자격 증명 속성을 설정한 인증되지 않은 역할로시작합니다. 이 경우 기본 자격 증명은 다음과 같을 수 있습니다.

// Import the required AWS SDK for JavaScript v3 modules. const {fromCognitoIdentityPool} = require("@aws-sdk/credential-provider-cognito-identity");const {CognitoIdentityProviderClient} = require("@aws-sdk/client-cognito-identity-provider");// Set the default credentials.const creds = new fromCognitoIdentityPool({client: new CognitoIdentityClient({region: "REGION", IdentityPoolId: "IDENTITY_POOL_ID"});

인증된 사용자로 전환

인증되지 않은 사용자가 자격 증명 공급자에 로그인한 상태에서 현재 사용자가 토큰을 갖고 있다면, 인증 자격 증명 객체를 업데이트하는 사용자 지정 함수를 호출하여 인증되지 않은 사용자를 인증된 사용자로 전환할수 있습니다.logins토큰입니다.

// Called when an identity provider has a token for a logged in userfunction userLoggedIn(providerName, token) { creds.params.Logins = creds.params.logins || {}; creds.params.Logins[providerName] = token; // Expire credentials to refresh them on the next request creds.expired = true;}

Node.js 고려 사항Node.js 코드는 JavaScript이지만 Node.js에서 AWS SDK for JavaScript를 사용하는 것은 브라우저 스크립트에서 SDK를 사용하는 것과 다를 수 있습니다. 일부 API 메서드는 Node.js에서 작동하지만 브라우저 스크립트에서는 작동하지 않습니다. 마찬가지로 브라우저 스크립트에서는 작동하지만 Node.js에서 작동하지 않는 API 메서드도 있습니다. 또한 일부 API를 성공적으로 사용할 수 있는지는 File System (fs) 모듈 등의 여러 Node.js 모듈을 가져와 사용하는 것과 같은 일반적인 Node.js 코딩 패턴에 익숙한지 여부에 달려 있습니다.

내장 Node.js 모듈 사용Node.js는 설치하지 않고도 사용할 수 있는 기본 제공 모듈 모음을 제공합니다. 이러한 모듈을 사용하려면require 메서드로 객체를 생성하여 모듈 이름을 지정합니다. 예를 들어 기본 제공 HTTP 모듈을 포함시키려면 다음을 사용합니다.

var http = require('http');

모듈의 메서드가 해당 객체의 메서드인 것처럼 모듈의 메서드를 호출합니다. 예를 들어 다음은 HTML 파일을읽는 코드입니다.

// include File System modulevar fs = require('fs');

36

Page 45: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드npm 패키지 사용

// Invoke readFile method fs.readFile('index.html', function(err, data) { if (err) { throw err; } else { // Successful file read }});

Node.js 가 제공하는 모든 기본 제공 모듈의 전체 목록은Node.js 문서 작성Node.js 웹 사이트의

npm 패키지 사용기본 제공 모듈 외에도 타사 코드를 포함하거나 통합할 수 있습니다.npm, Node.js 패키지 관리자. 이는 오픈 소스 Node.js 패키지와 이러한 패키지를 설치하기 위한 명령줄 인터페이스의 리포지토리입니다. 에대한 자세한 내용npm현재 사용 가능한 패키지 목록에 대한 자세한 내용은 단원을 참조하십시오.https://www.npmjs.com. GitHub에서 사용할 수 있는 추가 Node.js 패키지에 대해 알아볼 수도 있습니다.

Node.js에서 maxSockets 구성Node.js에서 오리진당 최대 연결 수를 설정할 수 있습니다. maxSockets이 설정된 경우, 하위 HTTP 클라이언트가 요청을 대기열에 넣고 소켓이 사용 가능해지면 소켓에 요청을 할당합니다.

그러면 지정된 오리진에 한 번에 동시 요청할 수 있는 수의 상한을 설정할 수 있습니다. 이 값을 낮추면 수신하는 조절 또는 시간 초과 오류 수를 줄일 수 있습니다. 그러나 소켓이 사용 가능해질 때까지 요청이 대기되므로 메모리 사용량도 증가할 수 있습니다.

다음 예에서는 를 설정하는 방법을 보여 줍니다.maxSocketsDynamoDB 클라이언트에 대해 설명합니다.

const { DynamoDBClient } = require("@aws-sdk/client-dynamodb");const { NodeHttpHandler } = require("@aws-sdk/node-http-handler");var https = require("https"); var agent = new https.Agent({ maxSockets: 25});

var dynamodbClient = new DynamoDBClient({ requestHandler: new NodeHttpHandler({ httpsAgent: agent })});

기본값인 https를 사용하면 SDK가 globalAgent에서 maxSockets 값을 가져옵니다. 만약maxSockets값이 정의되지 않은 경우 SDK가maxSockets값은 50입니다.

Node.js에서 maxSockets 설정에 대한 자세한 내용은 Node.js 온라인 설명서를 참조하십시오.

Node.js 연결 유지로 연결 재사용기본 Node.js HTTP/HTTPS 에이전트는 모든 새 요청에 대해 새 TCP 연결을 만듭니다. 새 연결 설정 비용이발생하지 않게 하기 위해 JavaScript SDK에서 TCP 연결을 재사용합니다.

Amazon DynamoDB 쿼리와 같이 수명이 짧은 작업의 경우 TCP 연결 설정의 지연 시간 오버헤드가 작업 자체보다 클 수 있습니다. 또한 DynamoDB 이후저장된 암호화는 과 통합됩니다.AWS KMS를 다시 설정해야하는 데이터베이스에서 지연 시간이 발생할 수 있습니다.AWS KMS각 작업에 대한 캐시 항목.

TCP 연결을 다시 사용하지 않도록 설정하려면AWS_NODEJS_CONNECTION_REUSE_ENABLED환경 변수를false기본값은 입니다.true).

37

Page 46: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Node.js 프록시 구성

DynamoDB 클라이언트에 대한 다음 예제와 같이 서비스 클라이언트별로 이러한 연결을 활성 상태로 유지하지 않도록 설정할 수도 있습니다.

const { NodeHttpHandler } = require("@aws-sdk/node-http-handler");const { Agent } = require("http");const dynamodbClient = new DynamoDBClient({ requestHandler: new NodeHttpHandler({ httpAgent: new Agent({keepAlive: false}) })});

다음의 경우,keepAlive가 활성화된 경우keepAliveMsecs이며 기본적으로 1000ms입니다. 자세한 내용은 Node.js 설명서를 참조하십시오.

Node.js 프록시 구성인터넷에 직접 연결할 수 없는 경우 JavaScript SDK가 타사 HTTP 에이전트를 통해 HTTP 또는 HTTPS 프록시 사용을 지원합니다.

타사 HTTP 에이전트를 찾으려면 다음 위치에서 “HTTP 프록시”를 검색합니다.npm.

타사 HTTP 에이전트 프록시를 설치하려면 명령 프롬프트에서 다음을 입력합니다. 여기서버버버의 이름입니다.npm패키지를 참조하십시오.

npm install PROXY --save

응용 프로그램에서 프록시를 사용하려면httpAgent및httpsAgent속성을 다음 예제와 같이 DynamoDB클라이언트에 대해 보여 줍니다.

const { NodeHttpHandler } = require("@aws-sdk/node-http-handler"); const proxyAgent = new ProxyAgent("http://internal.proxy.com");const dynamodbClient = new DynamoDBClient({ requestHandler: new NodeHttpHandler({ httpAgent: proxyAgent, httpsAgent: proxyAgent }),});

Note

httpAgent와 동일하지 않습니다.httpsAgent이며, 클라이언트의 대부분의 호출은https는 둘다 설정되어야 합니다.

Node.js 인증서 번들을 등록하기Node.js 에 대한 기본 트러스트 스토어에는 액세스하는 데 필요한 인증서가 포함되어 있습니다.AWS서비스.일부 경우에는 특정 인증서 집합만 포함하는 것이 좋을 수도 있습니다.

이 예제에서는 지정된 인증서가 제공되지 않은 경우 디스크의 특정 인증서를 사용하여 연결을 거부하는https.Agent를 생성합니다. 새로 생성 된https.Agent는 DynamoDB 클라이언트에서 사용됩니다.

const fs = require("fs"); const https = require("https");const { DynamoDBClient } = require("@aws-sdk/client-dynamodb");

const certs = [

38

Page 47: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 고려 사항

fs.readFileSync("/path/to/cert.pem")]; const dynamodbClient = new DynamoDBClient({ httpOptions: { agent: new https.Agent({ rejectUnauthorized: true, ca: certs }) }});

브라우저 스크립트 고려 사항다음 주제에서는 브라우저 스크립트에서 AWS SDK for JavaScript를 사용할 때 특별히 고려해야 할 사항을설명합니다.

주제• 브라우저용 SDK 빌드 (p. 39)• CORS(Cross-Origin Resource Sharing) (p. 39)• webpack으로 애플리케이션 번들링 (p. 42)

브라우저용 SDK 빌드JavaScript 버전 2 (V2) 용 SDK와 달리 V3는 기본 서비스 집합에 대한 지원이 포함된 JavaScript 파일로 제공되지 않습니다. 대신 V3를 사용하면 필요한 JavaScript 파일 용 SDK 만 번들로 묶어 브라우저에 포함시켜 오버 헤드를 줄일 수 있습니다. Webpack을 사용하여 JavaScript 파일에 필요한 SDK 및 필요한 추가 타사 패키지를 단일Javascript파일을 사용하여 브라우저 스크립트에로드<script>태그를 사용합니다.Webpack에 대한 자세한 내용은 단원을 참조하세요.webpack으로 애플리케이션 번들링 (p. 42). Webpack을 사용하여 JavaScript 용 V3 SDK를 브라우저에 로드하는 예제는DynamoDB 에 데이터를 제출할 앱 빌드 (p. 298).

브라우저에서 CORS를 적용하는 환경 외부에서 SDK를 사용하며 JavaScript 용 SDK에서 제공하는 모든 서비스에 액세스하고 싶은 경우, 리포지토리를 복제하고 기본 호스팅 버전의SDK. 다음 섹션에서는 추가 서비스 및 API 버전으로 SDK를 빌드하는 단계를 설명합니다.

SDK 빌더를 사용하여 JavaScript 용 SDK 빌드Note

Amazon Web Services 버전 3 (V3) 은 더 이상 브라우저 빌더를 지원하지 않습니다. 브라우저 응용 프로그램의 대역폭 사용을 모방하려면 명명 된 모듈을 가져 와서 번들로 묶어 크기를 줄이는 것이 좋습니다. 번들링에 대한 자세한 내용은 단원을 참조하세요.webpack으로 애플리케이션 번들링 (p. 42).

CORS(Cross-Origin Resource Sharing)CORS(Cross-origin 리소스 공유)는 최신 웹 브라우저의 보안 기능입니다. 이 기능을 사용하면 웹 브라우저가어떤 도메인이 외부 웹 사이트 또는 서비스를 요청할 수 있을지 협상할 수 있습니다.

대부분의 리소스 요청이 외부 도메인(예: 웹 서비스용 엔드포인트)으로 전송되기 때문에 AWS SDK forJavaScript를 사용해 브라우저 애플리케이션을 개발하는 경우 CORS는 중요한 고려 대상입니다. JavaScript환경에서 CORS 보안을 적용하는 경우 이 서비스와 함께 CORS를 구성해야 합니다.

39

Page 48: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드CORS(Cross-Origin Resource Sharing)

CORS는 다음을 기준으로 출처 간 요청에서 리소스 공유 여부를 결정합니다.

• 요청을 수행한 특정 도메인• 수행 중인 HTTP 요청 유형(GET, PUT, POST, DELETE 등)

CORS 작동 방식가장 간단한 경우 브라우저 스크립트는 다른 도메인 내 서버의 리소스에 대해 GET 요청을 수행합니다. 요청이 GET 요청을 제출하도록 승인된 도메인에서 전송된 경우 해당 서버의 CORS 구성에 따라 cross-origin 서버는 요청된 리소스를 반환하여 응답합니다.

요청하는 도메인 또는 HTTP 요청 유형이 승인되지 않은 경우에는 요청이 거부됩니다. 그러나 CORS는 요청을 실제로 제출하기 전에 요청을 사전에 보낼 수 있습니다. 이 경우 preflight 요청은 OPTIONS 액세스 요청 작업을 전송하는 방식으로 이루어집니다. cross-origin 서버의 CORS 구성이 요청하는 도메인에 대한 액세스권한을 부여하는 경우 서버에서는 요청하는 도메인이 요청한 리소스에 대해 수행 가능한 HTTP 요청 유형을모두 나열하는 preflight 응답으로 회신합니다.

CORS 구성이 필요함Amazon S3 버킷에서 작업을 수행하려면 해당 버킷에 CORS 구성이 필요합니다. 일부 JavaScript 환경에서는 CORS를 적용할 수 없기 때문에 CORS 구성이 불필요할 수 있습니다. 예를 들어 Amazon S3 버킷에서 애플리케이션을 호스팅하고*.s3.amazonaws.com또는 일부 다른 특정 엔드포인트에서 요청이 외부 도메인에 액세스하지 않습니다. 따라서 이 구성에는 CORS가 필요하지 않습니다. 이 경우 Amazon S3 이외의 서비스에는 CORS가 계속 사용됩니다.

Amazon S3 버킷에 CORS 구성Amazon S3 콘솔에서 CORS를 사용하도록 Amazon S3 버킷을 구성할 수 있습니다.

CORS를 구성하는 경우AWS웹 서비스 관리 콘솔에서 JSON을 사용하여 CORS 구성을 생성해야 합니다. 새AWS웹 서비스 관리 콘솔은 JSON CORS 구성만 지원합니다.

Important

새AWS웹 서비스 관리 Conole에서 CORS 구성은 JSON이어야 합니다.

1. 에서AWS웹 서비스 관리 Amazon S3 버킷을 찾은 다음 확인란을 선택합니다.2. 열리는 창에서 [] 를 선택합니다.권한.3. 에권한탭에서CORS 구성.

40

Page 49: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드CORS(Cross-Origin Resource Sharing)

4. CORS 구성을CORS 구성 편집기를 선택한 다음Save.

CORS 구성은 <CORSRule> 내에 일련의 규칙이 포함된 XML 파일입니다. 구성에는 규칙이 최대 100개까지있을 수 있습니다. 규칙은 다음 태그 중 하나로 정의합니다.

• <AllowedOrigin>— 교차 도메인 요청을 수행하도록 허용하는 도메인 오리진을 지정합니다.• <AllowedMethod>— 교차 도메인 요청에서 허용하는 요청 유형 (GET, PUT, POST, DELETE, HEAD) 을

지정합니다.• <AllowedHeader>— 프리플라이트 요청에서 허용되는 헤더를 지정합니다.

구성에 대한 예시는 단원을 참조하십시오.내 버킷에서 CORS를 구성하려면 어떻게 해야 합니까?의AmazonSimple Storage Service 개발자 가이드.

CORS 구성 예다음 CORS 구성 예를 사용하면 사용자는 도메인에서 버킷 내 객체를 보거나, 추가 또는 제거하거나, 업데이트할 수 있습니다.example.org. 그러나 범위 하는 것이 좋습니다.<AllowedOrigin>웹 사이트의 도메인으로 이동합니다. 모든 도메인을 허용하려면 "*"를 지정할 수 있습니다.

Important

새 S3 콘솔에서 CORS 구성은 JSON이어야 합니다.

XML

<?xml version="1.0" encoding="UTF-8"?><CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>https://example.org</AllowedOrigin> <AllowedMethod>HEAD</AllowedMethod> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> <ExposeHeader>ETag</ExposeHeader> <ExposeHeader>x-amz-meta-custom-header</ExposeHeader> </CORSRule></CORSConfiguration>

JSON

[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "HEAD", "GET", "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "https://www.example.org" ], "ExposeHeaders": [ "ETag",

41

Page 50: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Webpack과 번들링

"x-amz-meta-custom-header"] }]

이 구성은 사용자가 버킷에 대해 작업을 수행하도록 허용하지 않고, 브라우저의 보안 모델이 Amazon S3 대한 요청을 허용하도록 합니다. 권한은 버킷 권한 또는 IAM 역할 권한을 통해 구성해야 합니다.

다음을 수행할 수 있습니다.ExposeHeaderSDK가 Amazon S3 에서 반환된 응답 헤더를 읽도록 합니다. 예를 들어,ETag머리글에서PUT또는 멀티파트 업로드를 사용하려면ExposeHeader이전 예제와 같이 구성에태그를 추가합니다. SDK는 CORS 구성을 통해 노출된 헤더에만 액세스할 수 있습니다. 객체에 대해 메타데이터를 설정한 경우 값은 접두사 x-amz-meta-가 붙은 헤더(예: x-amz-meta-my-custom-header)로 반환되며 동일한 방식으로 노출되어야 합니다.

webpack으로 애플리케이션 번들링브라우저 스크립트 또는 Node.js 에서 웹 애플리케이션에서 코드 모듈을 사용하면 종속성이 생성됩니다. 이러한 코드 모듈에는 자체 종속성이 있을 수 있어 애플리케이션 작동에 필요한 상호 연결된 모듈 모음이 생깁니다. 종속성을 관리하려면 다음과 같은 모듈 번들러를 사용할 수 있습니다.webpack.

이webpack모듈 번들러는 응용 프로그램 코드를 구문 분석하여import또는require문을 사용하여 응용 프로그램에 필요한 모든 자산을 포함하는 번들을 만들 수 있습니다. 자산이 쉽게 웹 페이지를 통해 제공 될 수있도록이다. 자바 스크립트에 대한 SDK는에 포함 할 수 있습니다webpack를 출력 번들에 포함하기 위해 는종속성 중 하나로 사용합니다.

에 대한 자세한 내용webpack를 참조하십시오.Webpack 모듈(GitHub에 있음).

Webpack 설치를 설치하려면webpack모듈 번들러를 사용하려면 먼저 Node.js 패키지 관리자인 npm이 설치되어 있어야 합니다. 다음 명령을 입력하여webpackCLI 및 JavaScript 모듈.

npm install --save-dev webpack

이path모듈을 사용하여 Webpack과 함께 자동으로 설치되는 파일 및 디렉토리 경로로 작업하려면Node.jspath-browserify패키지를 참조하십시오.

npm install --save-dev path-browserify

42

Page 51: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Webpack과 번들링

Webpack 구성기본적으로 Webpack은 JavaScript 파일인 검색webpack.config.js프로젝트의 루트 디렉터리에. 이 파일은 구성 옵션을 지정합니다. 다음은 의 예제입니다.webpack.config.jsWebPack 버전 5.0.0 이상에 대한구성 파일을 참조하십시오.

Note

Webpack 구성 요구 사항은 설치하는 Webpack의 버전에 따라 다릅니다. 자세한 내용은 단원을 참조하십시오.Webpack 설명서.

// Import path for resolving file pathsvar path = require("path");module.exports = { // Specify the entry point for our app. entry: [path.join(__dirname, "browser.js")], // Specify the output file containing our bundled code. output: { path: __dirname, filename: 'bundle.js' }, // Enable WebPack to use the 'path' package. resolve:{ fallback: { path: require.resolve("path-browserify")} } /** * In Webpack version v2.0.0 and earlier, you must tell * webpack how to use "json-loader" to load 'json' files. * To do this Enter 'npm --save-dev install json-loader' at the * command line to install the "json-loader' package, and include the * following entry in your webpack.config.js. * module: { rules: [{test: /\.json$/, use: use: "json-loader"}] } **/};

이 예에서는browser.js는 로 지정됩니다.진입점. 이진입점는 파일입니다.webpack가져온 모듈 검색을 시작하는 데 사용됩니다. 출력의 파일 이름은 bundle.js로 지정합니다. 출력 파일에는 애플리케이션에서 실행해야 하는 JavaScript가 모두 포함되어 있습니다. 진입점에 지정된 코드가 JavaScript 용 SDK와 같은 다른모듈을 가져오거나 필요로 하는 경우 구성에서 지정할 필요 없이 코드가 번들링됩니다.

Webpack 실행사용할 응용 프로그램을 빌드하려면webpack에 다음을 추가합니다.scripts객체의package.json파일을엽니다.

"build": "webpack"

다음은 예제입니다.package.json추가 방법을 보여 주는 파일webpack.

{ "name": "aws-webpack", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "webpack" },

43

Page 52: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Webpack과 번들링

"author": "", "license": "ISC", "dependencies": { "@aws-sdk/client-iam": "^3.32.0", "@aws-sdk/client-s3": "^3.32.0" }, "devDependencies": { "webpack": "^5.0.0" }}

애플리케이션을 빌드하려면 다음 명령을 입력합니다.

npm run build

이webpack모듈 번들러가 프로젝트의 루트 디렉터리에 지정한 JavaScript 파일을 생성합니다.

Webpack 번들 사용브라우저 스크립트에서 번들을 사용하려면 다음을 사용하여 번들을 통합할 수 있습니다.<script>다음 예제에 표시된 대로 태그를 사용합니다.

<!DOCTYPE html><html> <head> <title>Amazon SDK with webpack</title> </head> <body> <div id="list"></div> <script src="bundle.js"></script> </body></html>

Node.js에 대한 번들링다음을 수행할 수 있습니다.webpackNode.js 를 지정하여 에서 실행되는 번들을 생성할 수 있습니다.node를구성의 대상으로 지정합니다.

target: "node"

이는 디스크 공간이 제한된 환경에서 Node.js 애플리케이션을 실행하는 경우 유용합니다. 다음은 출력 대상으로 Node.js가 지정된 webpack.config.js 구성의 예입니다.

// Import path for resolving file pathsvar path = require("path");module.exports = { // Specify the entry point for our app. entry: [path.join(__dirname, "browser.js")], // Specify the output file containing our bundled code. output: { path: __dirname, filename: 'bundle.js' }, // Let webpack know to generate a Node.js bundle. target: "node", // Enable WebPack to use the 'path' package. resolve:{ fallback: { path: require.resolve("path-browserify")} /**

44

Page 53: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Webpack과 번들링

* In Webpack version v2.0.0 and earlier, you must tell * webpack how to use "json-loader" to load 'json' files. * To do this Enter 'npm --save-dev install json-loader' at the * command line to install the "json-loader' package, and include the * following entry in your webpack.config.js. module: { rules: [{test: /\.json$/, use: use: "json-loader"}] } **/};

45

Page 54: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드서비스 객체 생성 및 호출

JavaSJavaScript 용 SDK에서 서비스작업

AWS SDK for JavaScript에서는 클라이언트 클래스 수집을 통해 지원하는 서비스에 액세스할 수 있습니다.이러한 클라이언트 클래스에서는 일반적으로 서비스 객체라고 부르는 서비스 인터페이스 객체를 생성합니다. 지원되는 각 AWS 서비스에는 서비스 기능 및 리소스 사용을 위해 하위 수준 API를 제공하는 하나 이상의클라이언트 클래스가 있습니다. 예를 들어 Amazon DynamoDB API는DynamoDB클래스를 사용합니다.

JavaScript 용 SDK를 통해 노출되는 서비스는 요청-응답 패턴을 따라 호출 애플리케이션과 메시지를 교환합니다. 이 패턴에서 서비스를 호출하는 코드는 해당 서비스의 엔트포인트에 HTTP/HTTPS 요청을 제출합니다. 이 요청에는 호출 중인 특정 기능을 성공적으로 호출하는 데 필요한 파라미터가 포함되어 있습니다. 호출된 서비스는 다시 요청자에게 보낼 응답을 생성합니다. 이 응답에는 작업에 성공에 성공한 경우에는 데이터가, 작업에 실패한 경우에는 오류 정보가 포함됩니다.

를 호출하는 것은AWS서비스에는 시도된 모든 재시도를 비롯하여 서비스 개체에 대한 작업의 전체 요청 및응답 수명 주기가 포함됩니다. 요청에는 JSON 매개 변수로 0 개 이상의 속성이 포함되어 있습니다. 응답은작업과 관련된 객체에 캡슐화하고 콜백 함수 또는 JavaScript promise 등과 같은 여러 기법 중 하나를 통해요청자에게 반환됩니다.

주제• 서비스 객체 생성 및 호출 (p. 46)• 비동기식 서비스 호출 (p. 47)• 서비스 클라이언트 요청 생성 (p. 50)• 서비스 클라이언트 응답 처리 (p. 51)• JSON 작업 (p. 51)

서비스 객체 생성 및 호출JavaScript API는 사용 가능한 대부분의 지원AWS서비스. JavaScript API의 각 서비스는 클라이언트 클래스를 제공send메서드를 사용하여 서비스가 지원하는 모든 API를 호출할 수 있습니다. JavaScript API의 서비스 클래스, 작업 및 파라미터에 대한 자세한 내용은API 참조.

Node.js 에서 SDK를 사용하는 경우 필요한 각 서비스에 대한 SDK 패키지를 사용하여 애플리케이션에 추가합니다.require현재 모든 서비스에 대한 지원을 제공합니다. 다음은 Amazon S3 서비스 객체를 생성하는예제입니다.us-west-1리전.

46

Page 55: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드서비스 객체 매개변수 지정

// Import the Amazon S3 service clientconst S3 = require("@aws-sdk/client-s3"); // Create an S3 client in the us-west-1 Regionconst s3Client = new S3.S3Client({ region: "us-west-1" });

서비스 객체 매개변수 지정서비스 객체의 메서드를 호출할 때 API에서 요구하는 대로 파라미터를 JSON으로 전달합니다. 예를 들어Amazon S3 에서 지정된 버킷 및 키에 대한 객체를 가져오려면 다음 파라미터를GetObject메서드를 사용합니다. JSON 파라미터 전달에 대한 자세한 내용은 JSON 작업 (p. 51) 섹션을 참조하십시오.

s3.getObject({Bucket: 'bucketName', Key: 'keyName'});

또한 를 호출할 수 있습니다.GetObjectCommand메서드에서S3Client:

s3Client.send(new GetObjectCommand({Bucket: 'bucketName', Key: 'keyName'}));

Amazon S3 파라미터에 대한 자세한 정보는 단원을 참조하십시오.클래스: S3API 참조입니다.

비동기식 서비스 호출SDK를 통해 수행한 모든 요청은 비동기식입니다. 브라우저 스크립트를 작성할 때 이 점을 항상 주의해야 합니다. 웹 브라우저에서 실행 중인 JavaScript에는 일반적으로 실행 스레드가 하나 뿐입니다. AWS 서비스에대한 비동기식 호출 이후에 브라우저 스크립트는 계속해서 실행되고 그 과정에서 브라우저 스크립트에서 반환하기 전에 비동기식 결과를 사용하는 코드를 실행하려고 시도할 수 있습니다.

AWS 서비스에 대한 비동기식 호출에는 이러한 호출에 대한 관리가 필요합니다. 그래야 코드가 데이터를 사용할 수 있기 전에 데이터를 사용하려고 시도하지 않습니다. 이 섹션의 주제에서는 비동기식 호출 관리의 필요성과 비동기식 호출 관리에 사용할 수 있는 다양한 기법에 대해 자세히 다룹니다.

이러한 기술 중 하나를 사용하여 비동기 호출을 관리할 수 있지만 모든 새 코드를 async/await를 사용하는 것이 좋습니다.

비동기/대기

V3의 기본 동작이므로 이 기술을 사용하는 것이 좋습니다.약속

비동기/대기를 지원하지 않는 브라우저에서이 기술을 사용하십시오.콜백

매우 간단한 경우를 제외하고는 콜백을 사용하지 마십시오. 그러나 마이그레이션 시나리오에 유용할 수있습니다.

주제• 비동기식 호출 관리 (p. 48)• 비동기/대기 사용 (p. 48)• JavaScript promise 사용 (p. 49)

47

Page 56: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드비동기식 호출 관리

• 익명 콜백 함수 사용 (p. 50)

비동기식 호출 관리예를 들어, 전자 상거래 웹 사이트의 홈 페이지에서는 재방문 고객이 로그인할 수 있습니다. 로그인한 고객을위한 혜택의 일부로 로그인 후 사이트에서는 고객의 특정 기본 설정에 맞춰 사이트를 맞춤화합니다. 사이트를 맞춤화하려면 다음을 수행해야 합니다.

1. 고객이 자신의 사용자 이름 및 암호로 로그인하고 확인을 받아야 합니다.2. 고객 데이터베이스에서 고객의 기본 설정이 요청됩니다.3. 데이터베이스에서는 페이지 로드 전에 사이트를 맞춤화하는 데 사용되는 고객의 기본 설정을 제공합니다.

이러한 작업이 동기식으로 실행되면 다음 작업을 시작하기 전에 각 작업이 끝나야 합니다. 고객 기본 설정이데이터베이스에서 반환될 때까지 웹 페이지 로딩을 완료할 수 없습니다. 그러나 데이터베이스 쿼리가 서버로전송된 후 네트워크 병목 현상, 예외적으로 높은 데이터베이스 트래픽 또는 불안한 모바일 디바이스 연결 등으로 인해 고객 데이터 수신이 지연되거나 실패할 수 있습니다.

이러한 상황에서도 웹 사이트가 멈추지 않도록 하기 위해 데이터베이스를 비동기식을 호출합니다. 데이터베이스 호출을 실행한 후 비동기 요청을 보내면 코드가 계속해서 예상대로 실행됩니다. 비동기 호출의 응답을적절하게 관리하지 못하면 데이터를 아직 사용할 수 없는데도 코드가 데이터베이스에서 다시 필요한 정보를사용하려고 시도할 수 있습니다.

비동기/대기 사용promise보다는 비동기/대기 사용을 고려해야 합니다. 비동기 함수는 promise를 사용하는 것보다 간단하고보일러플레이트가 더 적게 필요합니다. 대기는 비동기적으로 값을 기다리기 위해 비동기 함수에서만 사용할수 있습니다.

다음 예제에서는 비동기/대기를 사용하여 모든 Amazon DynamoDB 테이블을us-west-2.Note

이 예제를 실행하려면 다음을 수행하십시오.

• 설치AWS SDK for JavaScript를 입력하여 DynamoDB 클라이언트를npm install @aws-sdk/client-dynamodb프로젝트의 명령 줄에서.

48

Page 57: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Promise 사용

• 를 구성했는지 확인AWS자격 증명을 올바르게 사용합니다. 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 단원을 참조하십시오.

(async function () { const DDB = require("@aws-sdk/client-dynamodb"); const dbClient = new DDB.DynamoDBClient({ region: "us-west-2" }); const command = new DDB.ListTablesCommand({});

try { const results = await dbClient.send(command); console.log(results.TableNames.join('\n')); } catch (err) { console.error(err) }})();

Note

모든 브라우저가 비동기/대기를 지원하는 것은 아닙니다. 단원을 참조하십시오.비동기 함수비동기/대기 지원이있는 브라우저 목록을 참조하십시오.

JavaScript promise 사용서비스 클라이언트의AWS SDK for JavaScriptv3 메서드 (ListTablesCommand) 를 사용하여 서비스를 호출하고 콜백을 사용하지 않고 비동기식 흐름을 관리할 수 있습니다. 다음 예에서는 Amazon DynamoDB 테이블의 이름을 가져오는 방법을 보여 줍니다.us-west-2.

const { DynamoDBClient, ListTablesCommand } = require('@aws-sdk/client-dynamodb');const dbClient = new DynamoDBClient({ region: 'us-west-2' });

dbClient .listtables(new ListTablesCommand({})) .then(response => { console.log(response.TableNames.join('\n')); }) .catch((error) => { console.error(error); });

여러 Promise 조정경우에 따라 코드는 여러 비동기식 호출이 모두 성공적으로 반환된 경우에만 조치가 필요한 여러 비동기식호출을 수행해야 합니다. promise를 사용하지 않고 개별 비동기 메서드 호출을 관리하는 경우 all 메서드를사용하는 추가 promise를 생성할 수 있습니다.

이 메서드는 메서드에 전달한 promise 배열이 이행되는 경우 umbrella promise를 이행합니다. 콜백 함수는all 메서드에 전달되는 promises의 값 배열로 전달됩니다.

다음 예제에서AWS Lambda함수는 Amazon DynamoDB 에 대한 비동기식 호출을 3개를 수행해야 하지만 각호출에 대한 약속이 이행된 후에만 완료할 수 있습니다.

const values = await Promise.all([firstPromise, secondPromise, thirdPromise]);

console.log("Value 0 is " + values[0].toString);console.log("Value 1 is " + values[1].toString);console.log("Value 2 is " + values[2].toString);

49

Page 58: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드콜백 함수 사용

return values;

Promise에 대한 브라우저 및 Node.js 지원기본 JavaScript promise(ECMAScript 2015)에 대한 지원은 모드가 실행되는 JavaScript 엔진 및 버전에 따라달라집니다. 코드를 실행해야 하는 각 환경에서 JavaScript promise 지원을 확인하려면ECMAScript 호환성테이블(GitHub에 있음).

익명 콜백 함수 사용각 서비스 객체 메서드는 익명 콜백 함수를 마지막 파라미터로 수락할 수 있습니다. 이 콜백 함수의 서명은다음과 같습니다.

function(error, data) { // callback handling code};

이 콜백 함수는 성공적인 응답 또는 오류 데이터 반환 시 실행됩니다. 메서드 호출에 성공하면 data 파라미터에서 응답 내용을 콜백 함수에 사용할 수 있습니다. 호출에 실패하면 error 파라미터에 자세한 실패 정보가 제공됩니다.

일반적으로 콜백 함수 내 코드는 오류가 있는지 테스트하는데, 오류가 반환되면 처리합니다. 오류가 반환되지 않으면 코드는 응답의 data 파라미터에서 데이터를 검색합니다. 콜백 함수의 기본 형식은 다음 예제와 같습니다.

function(error, data) { if (error) { // error handling code console.log(error); } else { // data handling code console.log(data); }};

이전 예제에서는 오류 또는 반환되는 데이터에 대한 자세한 내용이 콘솔에 로깅됩니다. 다음은 서비스 객체에 대한 메서드 호출의 일부로 전달되는 콜백 함수를 보여주는 예제입니다.

ec2.describeInstances(function(error, data) { if (error) { console.log(error); // an error occurred } else { console.log(data); // request succeeded }});

서비스 클라이언트 요청 생성요청 만들기AWS서비스 클라이언트는 간단합니다. JavaScript 용 SDK 버전 3 (V3) 을 사용하면 요청을 보낼수 있습니다.

Note

JavaScript용 SDK의 V3을 사용할 때 버전 2 (V2) 명령을 사용하여 작업을 수행할 수도 있습니다. 자세한 내용은 V2 명령 사용 (p. 4) 단원을 참조하십시오.

50

Page 59: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드서비스 클라이언트 응답 처리

요청을 보내려면

1. 클라이언트 객체를 원하는 구성으로 초기화하십시오 (예: 특정AWS리전.2. (선택 사항) 요청 값 (예: 특정 Amazon S3 버킷의 이름) 이 포함된 요청 JSON 객체를 생성합니다. 클라

이언트 메서드와 연결된 이름이 있는 인터페이스의 API 참조 항목을 보면 요청에 대한 매개 변수를 검사할 수 있습니다. 예를 들어, 를 사용하는 경우ABC 버버클라이언트 메소드의 경우 요청 인터페이스는버버버버버.

3. 요청 객체를 입력으로 사용하여 선택적으로 서비스 명령을 초기화합니다.4. 전화send명령 개체를 입력으로 사용하여 클라이언트에.

예를 들어, Amazon DynamoDB 테이블을us-west-2, 당신은 비동기/대기로 그것을 할 수 있습니다.

(async function() { const { DynamoDBClient, ListTablesCommand } = require('@aws-sdk/client-dynamodb'); const dbClient = new DynamoDBClient({ region: 'us-west-2' }); const command = new ListTablesCommand({});

try { const results = await dbClient.send(command); console.log(results.TableNames.join('\n')); } catch (err) { console.error(err); }})();

서비스 클라이언트 응답 처리서비스 클라이언트 메소드가 호출 된 후, 클라이언트 메소드와 연관된 이름을 갖는 인터페이스의 응답 객체인스턴스를 리턴한다. 예를 들어, 를 사용하는 경우ABC 버버클라이언트 메소드의 경우 응답 객체는버버버버버버(인터페이스) 유형을 선택합니다.

응답에서 반환되는 데이터에 액세스응답 객체는 서비스 요청에서 반환되는 데이터를 속성으로 포함합니다.

In서비스 클라이언트 요청 생성 (p. 50),ListTablesCommand명령에서 테이블 이름을 반환TableNames응답의 속성입니다.

오류 정보에 액세스 오류 정보명령이 실패하면 예외가 발생합니다. 필요에 따라 예외를 처리 할 수 있습니다.

JSON 작업JSON은 사람이 읽을 수 있고 머신 둘 다 판독 가능한 데이터를 교환하기 위한 형식입니다. JSON이라는 이름의 약자이지만JavaScript Object NotationJSON의 형식은 프로그래밍 언어와 관련이 없습니다.

AWS SDK for JavaScript에서는 JSON을 사용하여 요청 시 서비스 객체에 데이터를 전송하고 서비스 객체에서 데이터를 JSON으로 수신합니다. JSON에 대한 자세한 내용은 json.org를 참조하십시오.

51

Page 60: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드JSON을 서비스 객체 매개 변수로

JSON은 다음 두 가지 방식으로 데이터를 나타냅니다.

• 로객체은 순서가 지정되지 않은 이름-값 페어 모음. 객체는 여는 중괄호({)와 닫는 중괄호(}) 내에서 정의됩니다. 각 이름-값 쌍은 이름으로 시작하고 뒤에 콜론과 값이 옵니다. 이름-값 페어는 쉼표로 구분됩니다.

• 로배열은 순서가 지정된 값 모음입니다. 배열은 여는 대괄호([)와 닫는 대괄호(]) 안에 정의됩니다. 배열의항목들은 쉼표로 구분됩니다.

다음은 객체가 카드 게임의 카드로 표현되는 객체 배열이 포함된 JSON 객체의 예입니다. 각 카드는 두 개의이름-값 페어로 정의되는데, 하나는 하드를 식별하기 위한 고유한 값을 지정하고, 다른 하나는 해당하는 카드이미지를 가리키는 URL을 지정합니다.

var cards = [ {"CardID":"defaultname", "Image":"defaulturl"}, {"CardID":"defaultname", "Image":"defaulturl"}, {"CardID":"defaultname", "Image":"defaulturl"}, {"CardID":"defaultname", "Image":"defaulturl"}, {"CardID":"defaultname", "Image":"defaulturl"}];

JSON을 서비스 객체 매개 변수로다음은 호출의 파라미터를 정의하는 데 사용되는 간단한 JSON의 예입니다.AWS Lambda서비스 객체를 생성합니다.

const params = { FunctionName : "slotPull", InvocationType : "RequestResponse", LogType : "None"};

params 객체는 여는 중괄호와 닫는 중괄호 내에서 쉼표로 구분된 이름-값 페어 3개로 정의됩니다. 서비스객체 메서드에 파라미터를 제공하는 경우 이름은 호출하려는 서비스 객체 메서드에 대한 파라미터 이름으로결정됩니다. Lambda 함수를 호출하면FunctionName,InvocationType, 및LogType는 호출 하는 데 사용되는 매개 변수invoke메서드를 Lambda 서비스 객체에서 사용할 수 있습니다.

서비스 객체 메서드 호출에 파라미터를 전달하는 경우 Lambda 함수를 호출하는 다음 예제에서처럼 메서드호출에 JSON 객체를 제공합니다.

(async function() { const { LambdaClient, InvokeCommand } = require("@aws-sdk/client-lambda"); const lambdaClient = new LambdaClient({ region: "us-west-2" }); // create JSON object for service call parameters const params = { FunctionName : "slotPull", InvocationType : "RequestResponse", LogType : "None" };

52

Page 61: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드JSON을 서비스 객체 매개 변수로

// create InvokeCommand command const command = new InvokeCommand(params);

// invoke Lambda function try { const response = await lambdaClient.send(command); console.log(response); } catch (err) { console.err(err); }})();

53

Page 62: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드1단계: 을 (를) 설정하려면AWS사용할 계정AWS Cloud9

AWS SDK for JavaScript에서 AWSCloud9 사용

다음을 수행할 수 있습니다.AWS Cloud9를 사용하여AWS SDK for JavaScript를 사용하여 브라우저 코드에서 JavaScript 작성하고 실행할 수 있으며 브라우저만 사용하여 Node.js 코드를 작성, 실행 및 디버깅할 수 있습니다.AWS Cloud9에는 코드 편집기와 터미널, Node.js 코드용 디버거와 같은 도구가 포함되어 있습니다.

AWS Cloud9 IDE는 클라우드 기반이므로 사무실, 집 또는 어디서나 인터넷에 연결된 컴퓨터를 사용하여 프로젝트 작업을 할 수 있습니다. 에 대한 일반적인 정보는AWS Cloud9에 대한 자세한 내용은AWS Cloud9사용 설명서.

다음 단계에서는 설정 방법에 대해 설명합니다.AWS Cloud9JavaScript 용 SDK 사용.

목차• 1단계: 을 (를) 설정하려면AWS사용할 계정AWS Cloud9 (p. 54)• 2단계: 을 (를) 설정하려면AWS Cloud9개발 환경 (p. 54)• 3단계: JavaSJavaScript 용 SDK 설정 (p. 55)

• JavaScript 용 Node.js SDK를 설정하려면 (p. 55)• 브라우저에서 JavaScript 용 SDK를 설정하려면 (p. 55)

• 4단계: 예제 코드 다운로드 (p. 55)• 5단계: 예제 코드 실행 및 디버그 (p. 56)

1단계: 을 (를) 설정하려면AWS사용할 계정AWSCloud9

사용을 시작합니다.AWS Cloud9에 로그인하여AWS Cloud9콘솔을AWS Identity and Access Management에대한 액세스 권한이 있는 (IAM) 엔터티 (예: IAM 사용자)AWS Cloud9귀하의AWS계정에 로그인합니다.

IAM 엔터티를 설정하려면AWS계정에 액세스하려면AWS Cloud9에 로그인하려면AWS Cloud9콘솔에 대한자세한 내용은의 팀 설정AWS Cloud9의AWS Cloud9사용 설명서.

2단계: 을 (를) 설정하려면AWS Cloud9개발 환경AWS Cloud9 콘솔에 로그인한 후 콘솔을 사용하여 AWS Cloud9 개발 환경을 생성합니다. 환경을 생성하면AWS Cloud9에서 해당 환경용 IDE를 엽니다.

단원을 참조하십시오.에서 환경 생성AWS Cloud9의AWS Cloud9사용 설명서세부 정보 보기.

Note

콘솔에서 처음으로 환경을 생성할 때 Create a new instance for environment (EC2)(환경에 대한 새인스턴스 생성(EC2)) 옵션을 선택하는 것이 좋습니다. 이 옵션은AWS Cloud9를 사용하여 환경을생성하고 Amazon EC2 인스턴스를 시작한 다음 새 인스턴스를 새 환경에 연결합니다. 이는 AWSCloud9를 사용하는 가장 빠른 방법입니다.

54

Page 63: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드3단계: JavaSJavaScript 용 SDK 설정

3단계: JavaSJavaScript 용 SDK 설정이후AWS Cloud9에서 개발 환경용 IDE가 열리면 다음 절차 중 하나 또는 둘 다를 수행해 해당 IDE를 사용하여 환경에서 JavaScript 용 SDK를 설정합니다.

JavaScript 용 Node.js SDK를 설정하려면1. 터미널이 IDE에 아직 열려 있지 않은 경우 터미널을 엽니다. 이렇게 하려면 IDE의 메뉴 모음에서

Window, New Terminal(창, 새 터미널)을 선택합니다.2. 다음 명령을 실행하여npm를 설치하려면Cloud9JavaScript 용 SDK 사용.

npm install @aws-sdk/client-cloud9

IDE가 찾을 수없는 경우npm를 설치하려면 다음 명령을 다음 순서로 한 번에 하나씩 실행하여npm. 이러한 명령은 이 항목의 앞 부분에서 Create a new instance for environment (EC2)(환경에 대한 새 인스턴스 생성(EC2)) 옵션을 선택한 것으로 가정합니다.

Warning

AWS는 다음 코드를 제어하지 않습니다. 실행하기 전에 먼저 신뢰성과 무결성을 확인해야 합니다. 이 코드에 대한 자세한 내용은nvm(노드 버전 관리자) GitHub 저장소.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash # Download and install Node Version Manager (nvm).. ~/.bashrc # Activate nvm.nvm install node # Use nvm to install npm (and Node.js at the same time).

브라우저에서 JavaScript 용 SDK를 설정하려면HTML 페이지에서 JavaScript t용 SDK를 사용하려면 WebPack을 사용하여 필요한 클라이언트 모듈과 필요한 모든 JavaScript 함수를 단일 JavaScript 파일로 묶고<head>당신의 HTML 페이지. 예:

<script src=./main.js></script>

Note

Webpack에 대한 자세한 내용은 단원을 참조하십시오.webpack으로 애플리케이션 번들링 (p. 42)

4단계: 예제 코드 다운로드이전 단계에서 연 터미널을 사용하여 JavaScript 용 SDK 예제 코드를AWS Cloud9개발 환경. IDE에서 터미널이 아직 열려 있지 않은 경우 IDE의 메뉴 모음에서 Window, New Terminal(창, 새 터미널)을 선택하여 엽니다.

예제 코드를 다운로드하려면 다음 명령을 실행합니다. 이 명령은 공식에서 사용되는 모든 코드 예의 복사본을 다운로드합니다.AWSSDK 설명서를 환경의 루트 디렉터리로 통합합니다.

git clone https://github.com/awsdocs/aws-doc-sdk-examples.git

55

Page 64: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드5단계: 예제 코드 실행 및 디버그

JavaScript 트용 SDK에 대한 코드 예제를 찾으려면Environment창을 클릭하여ENVIRONMENT_NAME\aws-doc-sdk-examples\javascriptv3\example_code/src를 참조하십시오.버버_버버의 이름입니다.AWSCloud9개발 환경.

이러한 예제와 기타 코드 예제를 작동하는 방법에 대한 자세한 내용은JavaScript 용 SDK 코드.

5단계: 예제 코드 실행 및 디버그에서 코드를 실행하려면AWS Cloud9개발 환경,코드 실행의AWS Cloud9사용 설명서.

Node.js 코드를 디버깅하려면코드 디버깅의AWS Cloud9사용 설명서.

56

Page 65: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드JavaScript ES6/공용JS 구문

JavaScript 용 코드 예시이 단원의 주제에는 다양한 서비스의 API와 함께 AWS SDK for JavaScript를 사용하여 일반적인 작업을 수행하는 방법을 보여 주는 예제가 포함됩니다.

다음 예제의 소스 코드와 다른 코드를 찾으려면AWSGitHub 의 코드 예제 리포지토리. 에 대한 새로운 코드예제를 제안하려면AWS설명서 팀이 생성을 고려할 수 있는 요청을 생성합니다. 이 팀은 개별 API 호출만 다루는 간단한 코드 조각에 비해 광범위한 시나리오 및 사용 사례를 다루는 코드를 생성하려고 합니다. 지침은다음 () 을 참조하십시오.새 코드 예제 제안단원 () 의GitHub 의 읽어보기.

Important

이 예제에서는 ECMAScript6 가져오기/내보내기 구문을 사용합니다.

• 이를 위해서는 Node.js 버전 14.17 이상이 필요합니다. Node.js 최신 버전을 다운로드하고 설치하려면Node.js 다운로드가 포함됩니다..

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57)에서 전환 지침을 참조하십시오.

주제• JavaScript ES6/공용JS 구문 (p. 57)• Amazon CloudWatch 예제 (p. 59)• Amazon DynamoDB 예제 (p. 79)• Amazon EC2 예제 (p. 103)• AWS Elemental MediaConvert 예제 (p. 121)• Amazon S3 Glacier (p. 136)• AWS Identity and Access Management 예제 (p. 139)• Amazon Kinesis 예제 (p. 162)• AWS Lambda 예제 (p. 169)• Amazon Lex 예제 (p. 170)• Amazon Polly 예제 (p. 170)• Amazon S3 예제 (p. 172)• Amazon Simple Email Service 예제 (p. 222)• Amazon Simple Notification Service (p. 247)• Amazon SQS 예제 (p. 267)• Amazon Transcribe 예제 (p. 283)• Amazon Redshift 예제 (p. 290)

JavaScript ES6/공용JS 구문이AWS SDK for JavaScript코드 예제는 ECMAScript 6 (ES6) 로 작성되었습니다. ES6는 코드를보다 현대적이고 읽기 쉽게 만들고 더 많은 작업을 수행 할 수있는 새로운 구문과 새로운 기능을 제공합니다.

ES6에서는 Node.js 버전 13.x 이상을 사용해야 합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드. 그러나 사용자가 원할 경우 다음 지침을 사용하여 CommonJS sytax 예제를 변환 할 수있습니다.

• 제거"type" : "module"( 사용)package.json프로젝트 환경에서.• 모두 변환 ES6import문을 커먼JS로require문. 예를 들어 다음과 같이 변환합니다.

57

Page 66: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드JavaScript ES6/공용JS 구문

import { CreateBucketCommand } from "@aws-sdk/client-s3";import { s3 } from "./libs/s3Client.js";

CommonJS에 동등한:

const { CreateBucketCommand } = require("@aws-sdk/client-s3");const { s3 } = require("./libs/s3Client.js");

• 모두 변환 ES6export문을 커먼JS로module.exports문. 예를 들어 다음과 같이 변환합니다.

export {s3}

CommonJS에 동등한:

module.exports = {s3}

다음 예제에서는 ES6과 CommonJS 모두에서 Amazon S3 버킷을 만드는 코드 예제를 보여 줍니다.

ES6

libs/s3Client.js

// Create service client module using ES6 syntax.import { S3Client } from "@aws-sdk/client-s3";// Set the AWS regionconst REGION = "eu-west-1"; //e.g. "us-east-1"// Create Amazon S3 service object.const s3 = new S3Client({ region: REGION });// Export 's3' constant.export {s3};

s3_createbucket.js

// Get service clients module and commands using ES6 syntax. import { CreateBucketCommand } from "@aws-sdk/client-s3"; import { s3 } from "./libs/s3Client.js";

// Get service clients module and commands using CommonJS syntax.// const { CreateBucketCommand } = require("@aws-sdk/client-s3");// const { s3 } = require("./libs/s3Client.js");

// Set the bucket parametersconst bucketParams = { Bucket: "BUCKET_NAME" };

// Create the Amazon S3 bucket.const run = async () => { try { const data = await s3.send(new CreateBucketCommand(bucketParams)); console.log("Success", data.Location); return data; } catch (err) { console.log("Error", err); }};

58

Page 67: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch 예제

run();

CommonJS

libs/s3Client.js

// Create service client module using CommonJS syntax. const { S3Client } = require("@aws-sdk/client-s3");// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1" // Create Amazon S3 service object.const s3 = new S3Client({ region: REGION });// Export 's3' constant. module.exports ={s3};

s3_createbucket.js

// Get service clients module and commands using CommonJS syntax.const { CreateBucketCommand } = require("@aws-sdk/client-s3");const { s3 } = require("./libs/s3Client.js");

// Set the bucket parametersconst bucketParams = { Bucket: "BUCKET_NAME" };

// Create the Amazon S3 bucket.const run = async () => { try { const data = await s3.send(new CreateBucketCommand(bucketParams)); console.log("Success", data.Location); return data; } catch (err) { console.log("Error", err); }};run();

Amazon CloudWatch 예제Amazon CloudWatch () 는 Amazon 웹 서비스 리소스 및 애플리케이션을 모니터링하는 웹 서비스입니다.AWS실시간으로. CloudWatch 를 사용하여 리소스 및 애플리케이션에 대해 측정할 수 있는 변수인 지표를수집하고 추적할 수 있습니다. CloudWatch 경보를 통해 정의한 규칙에 따라 모니터링 중인 리소스를 자동으로 변경하거나 알림을 보냄으로써 알림을 보냄으로써 알림을 보냅니다.

CloudWatch 에 대한 JavaScript API는CloudWatch,CloudWatchEvents, 및CloudWatchLogs클라이언트 클래스를 생성합니다. CloudWatch 클라이언트 클래스를 사용하는 방법에 대한 자세한 내용은 단원

59

Page 68: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch 치에서 경보 생성

을 참조하십시오.클래스: CloudWatch,클래스: 클라우드왓치벤츠, 및클래스: CloudWatchLogs의AmazonCloudWatch API 참조.

주제• Amazon CloudWatch 치에서 경보 생성 (p. 60)• Amazon CloudWatch 에서 경보 작업 사용 (p. 63)• Amazon CloudWatch 에서 지표 가져오기 (p. 67)• Amazon CloudWatch Events에 이벤트 전송 (p. 70)• Amazon CloudWatch Logs 에서 구독 필터 사용 (p. 74)

Amazon CloudWatch 치에서 경보 생성

이 Node.js 코드 예제는 다음을 보여 줍니다.

• CloudWatch 경보에 대한 기본 정보를 가져오는 방법.• CloudWatch 경보를 생성하고 삭제하는 방법.

시나리오경보는 지정한 기간에 단일 지표를 감시하고 여러 기간에 지정된 임계값에 대한 지표 값을 기준으로 작업을하나 이상 수행합니다.

이 예제에서는 CloudWatch 에서 경보를 생성하는 데 일련의 Node.js 모듈을 사용합니다. 이 Node.js 모듈은이러한 메서드를 사용하여 경보를 생성하는 JavaScript SDK를 사용합니다.CloudWatch클라이언트 클래스:

• DescribeAlarmsCommand

• PutMetricAlarmCommand

• DeleteAlarmsCommand

CloudWatch 경보에 대한 자세한 내용은 단원을 참조하십시오.Amazon CloudWatch 경보 생성의AmazonCloudWatch 사용 설명서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 및 타사 모듈. 안내를 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

이러한 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드..그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

60

Page 69: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch 치에서 경보 생성

경보 설명만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.cloudWatchClient.js. 아래 코드를 복사하여 붙여넣으면 CloudWatch 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전에 있음.

import { CloudWatchClient } from "@aws-sdk/client-cloudwatch";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon CloudWatch service client object.export const cwClient = new CloudWatchClient({ region: REGION });

이 코드는 사용할 수 있습니다.(GitHub 에서 있음).

파일 이름이 describeAlarms.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.CloudWatch클라이언트를 호출합니다. 경보 설명을 가져오기 위한 파라미터를 담을 JSON객체를 생성하여 INSUFFICIENT_DATA 상태의 설명으로 반환되는 경보를 제한합니다. 그런 다음DescribeAlarmsCommand메서드CloudWatch클라이언트 서비스 객체를 생성합니다.

// Import required AWS SDK clients and commands for Node.jsimport { DescribeAlarmsCommand } from "@aws-sdk/client-cloudwatch";import { cwClient } from "./libs/cloudWatchClient.js";

// Set the parametersexport const params = { StateValue: "INSUFFICIENT_DATA" };

export const run = async () => { try { const data = await cwClient.send(new DescribeAlarmsCommand(params)); console.log("Success", data); return data; data.MetricAlarms.forEach(function (item, index, array) { console.log(item.AlarmName); return data; }); } catch (err) { console.log("Error", err); }};// Uncomment this line to run execution within this file.// run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node describeAlarms.js

이 예제 코드는 에서 찾아볼 수 있습니다.(GitHub 에서 있음).

CloudWatch 지표에 대한 경보 생성만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.cloudWatchClient.js. 아래 코드를 복사하여 붙여넣으면 CloudWatch 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전에 있음.

61

Page 70: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch 치에서 경보 생성

import { CloudWatchClient } from "@aws-sdk/client-cloudwatch";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon CloudWatch service client object.export const cwClient = new CloudWatchClient({ region: REGION });

이 코드는 사용할 수 있습니다.(GitHub 에서 있음).

파일 이름이 putMetricAlarm.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 지표(이 경우 Amazon EC2 인스턴스의 CPU 사용률) 를 기반으로 경보를 생성하는 데 필요한 파라미터를 담을JSON 객체를 생성합니다. 나머지 파라미터는 지표가 임계값인 70퍼센트를 초과할 때 경보가 트리거되도록설정됩니다. 그런 다음DescribeAlarmsCommand메서드CloudWatch클라이언트 서비스 객체를 생성합니다.

Note

ReplaceINSTANCE-IDAmazon EC2 인스턴스의 ID로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { PutMetricAlarmCommand } from "@aws-sdk/client-cloudwatch";import { cwClient } from "./libs/cloudWatchClient.js";

// Set the parametersexport const params = { AlarmName: "Web_Server_CPU_Utilization", ComparisonOperator: "GreaterThanThreshold", EvaluationPeriods: 1, MetricName: "CPUUtilization", Namespace: "AWS/EC2", Period: 60, Statistic: "Average", Threshold: 70.0, ActionsEnabled: false, AlarmDescription: "Alarm when server CPU exceeds 70%", Dimensions: [ { Name: "InstanceId", Value: "INSTANCE_ID", }, ], Unit: "Percent",};

export const run = async () => { try { const data = await cwClient.send(new PutMetricAlarmCommand(params)); console.log("Success", data); return data; } catch (err) { console.log("Error", err); }};// Uncomment this line to run execution within this file.// run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node putMetricAlarm.js

이 예제 코드는 에서 찾아볼 수 있습니다.(GitHub 에서 있음).

62

Page 71: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch 에서 경보 작업 사용

경보 삭제만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.cloudWatchClient.js. 아래 코드를 복사하여 붙여넣으면 CloudWatch 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전에 있음.

import { CloudWatchClient } from "@aws-sdk/client-cloudwatch";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon CloudWatch service client object.export const cwClient = new CloudWatchClient({ region: REGION });

이 코드는 사용할 수 있습니다.(GitHub 에서 있음).

파일 이름이 deleteAlarms.js인 Node.js 모듈을 생성합니다. CloudWatch 클라이언트 다운로드를 포함하여 위와 같이 SDK를 구성해야 합니다. 삭제할 경보의 이름을 담을 JSON 객체를 생성합니다. 그런 다음DeleteAlarmsCommand메서드CloudWatch클라이언트 서비스 객체를 생성합니다.

Note

Replace버버 버버경보 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { DeleteAlarmsCommand } from "@aws-sdk/client-cloudwatch";import { cwClient } from "./libs/cloudWatchClient.js";

// Set the parametersexport const params = { AlarmNames: "ALARM_NAME" }; // e.g., "Web_Server_CPU_Utilization"

export const run = async () => { try { const data = await cwClient.send(new DeleteAlarmsCommand(params)); console.log("Success, alarm deleted; requestID:", data); return data; } catch (err) { console.log("Error", err); }};

// Uncomment this line to run execution within this file.// run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node deleteAlarms.js

이 예제 코드는 에서 찾아볼 수 있습니다.(GitHub 에서 있음).

Amazon CloudWatch 에서 경보 작업 사용

63

Page 72: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch 에서 경보 작업 사용

이 Node.js 코드 예제는 다음을 보여 줍니다.

• CloudWatch 경보를 기반으로 Amazon EC2 인스턴스의 상태를 자동으로 변경하는 방법.

시나리오경보 작업을 사용하면 Amazon EC2 인스턴스를 자동으로 중지, 종료, 재부팅 또는 복구하는 경보를 생성할수 있습니다. 인스턴스를 더는 실행할 필요가 없을 때 중지 또는 종료 작업을 사용할 수 있습니다. 재부팅 및복구 작업을 사용하여 인스턴스를 자동으로 재부팅할 수 있습니다.

이 예제에서는 일련의 Node.js 모듈을 사용하여 Amazon EC2 인스턴스의 재부팅을 트리거하는 CloudWatch를 정의합니다. 이 Node.js 모듈은 JavaScript 용 SDK를 사용하여 Amazon EC2 인스턴스를 관리합니다.CloudWatch클라이언트 클래스:

• EnableAlarmActionsCommand

• DisableAlarmActionsCommand

CloudWatch 경보 작업에 대한 자세한 내용은 단원을 참조하십시오.인스턴스를 중지, 종료, 재부팅 또는 복구하는 경보 만들기의Amazon CloudWatch 사용 설명서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 및 타사 모듈. 안내를 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

• Amazon EC2 인스턴스를 설명, 재부팅, 중지 또는 종료할 권한을 부여하는 정책이 있는 IAM 역할을 생성합니다. IAM 역할 생성에 대한 자세한 내용은 단원을 참조하십시오.역할을 만들어AWS서비스의IAM 사용설명서.

Important

이러한 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드..그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

IAM 역할을 생성할 때 다음 역할 정책을 사용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:Describe*", "ec2:Describe*", "ec2:RebootInstances", "ec2:StopInstances*", "ec2:TerminateInstances" ], "Resource": [ "*" ] }

64

Page 73: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch 에서 경보 작업 사용

]}

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드..

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

경보에 대한 작업 생성 및 활성화만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.cloudWatchClient.js. 아래 코드를 복사하여 붙여넣으면 CloudWatch 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전에 있음.

import { CloudWatchClient } from "@aws-sdk/client-cloudwatch";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon CloudWatch service client object.export const cwClient = new CloudWatchClient({ region: REGION });

이 코드는 사용할 수 있습니다.(GitHub 에서 있음).

파일 이름이 enableAlarmActions.js인 Node.js 모듈을 생성합니다. CloudWatch 클라이언트 다운로드를 포함하여 위와 같이 SDK를 구성해야 합니다.

경보를 생성하기 위한 파라미터를 담을 JSON 객체를 생성하여ActionsEnabled로true경보가 트리거할작업에 대한 Amazon 리소스 이름 (ARN) 배열을 생성합니다. 를 호출합니다.PutMetricAlarmCommand메서드CloudWatch클라이언트 서비스 개체를 생성합니다. 이 객체는 경보가 없으면 생성하거나 경보가 있으면 업데이트합니다.

용 콜백 함수에서PutMetricAlarmCommand에서 CloudWatch 경보의 이름을 포함하는 JSON 객체를 생성합니다. EnableAlarmActionsCommand 메서드를 호출하여 경보 작업을 활성화합니다.

Note

Replace버버_버버경보의 이름을 바꾸고INSTANCE-IDAmazon EC2 인스턴스의 ID로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { PutMetricAlarmCommand, EnableAlarmActionsCommand,} from "@aws-sdk/client-cloudwatch";import { cwClient } from "./libs/cloudWatchClient.js";

// Set the parametersexport const params = { AlarmName: "ALARM_NAME", //ALARM_NAME ComparisonOperator: "GreaterThanThreshold", EvaluationPeriods: 1, MetricName: "CPUUtilization",

65

Page 74: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch 에서 경보 작업 사용

Namespace: "AWS/EC2", Period: 60, Statistic: "Average", Threshold: 70.0, ActionsEnabled: true, AlarmActions: ["ACTION_ARN"], //e.g., "arn:aws:automate:us-east-1:ec2:stop" AlarmDescription: "Alarm when server CPU exceeds 70%", Dimensions: [ { Name: "InstanceId", Value: "INSTANCE_ID", }, ], Unit: "Percent",};

export const run = async () => { try { const data = await cwClient.send(new PutMetricAlarmCommand(params)); console.log("Alarm action added; RequestID:", data); return data; const paramsEnableAlarmAction = { AlarmNames: [params.AlarmName], }; try { const data = await cwClient.send( new EnableAlarmActionsCommand(paramsEnableAlarmAction) ); console.log("Alarm action enabled; RequestID:", data.$metadata.requestId); } catch (err) { console.log("Error", err); return data; } } catch (err) { console.log("Error", err); }};// Uncomment this line to run execution within this file.// run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node enableAlarmActions.js

이 예제 코드는 에서 찾아볼 수 있습니다.(GitHub 에서 있음).

경보에 대한 작업 비활성화만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.cloudWatchClient.js. 아래 코드를 복사하여 붙여넣으면 CloudWatch 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전에 있음.

import { CloudWatchClient } from "@aws-sdk/client-cloudwatch";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon CloudWatch service client object.export const cwClient = new CloudWatchClient({ region: REGION });

이 코드는 사용할 수 있습니다.(GitHub 에서 있음).

66

Page 75: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch 에서 지표 가져오기

파일 이름이 disableAlarmActions.js인 Node.js 모듈을 생성합니다. CloudWatch 클라이언트 다운로드를 포함하여 위와 같이 SDK를 구성해야 합니다. CloudWatch 경보의 이름을 포함하는 JSON 객체를 생성합니다. DisableAlarmActionsCommand 메서드를 호출하여 이 경보에 대한 작업을 비활성화합니다.

Note

Replace버버_버버경보 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { DisableAlarmActionsCommand } from "@aws-sdk/client-cloudwatch";import { cwClient } from "./libs/cloudWatchClient.js";

// Set the parametersexport const params = { AlarmNames: "ALARM_NAME" }; // e.g., "Web_Server_CPU_Utilization"

export const run = async () => { try { const data = await cwClient.send(new DisableAlarmActionsCommand(params)); console.log("Success, alarm disabled:", data); return data; } catch (err) { console.log("Error", err); }};// Uncomment this line to run execution within this file.// run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node disableAlarmActions.js

이 예제 코드는 에서 찾아볼 수 있습니다.(GitHub 에서 있음).

Amazon CloudWatch 에서 지표 가져오기

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 게시된 CloudWatch 지표 목록을 검색하는 방법.• CloudWatch 지표에 데이터 포인트를 게시하는 방법.

시나리오지표는 시스템 성능에 대한 데이터입니다. Amazon EC2 인스턴스와 같은 일부 리소스 또는 고유의 애플리케이션 지표에 대한 세부 모니터링을 활성화할 수 있습니다.

이 예제에서는 일련의 Node.js 모듈을 사용하여 CloudWatch에서 지표를 가져오고 이벤트를 AmazonCloudWatch 이벤트로 전송합니다. 이 Node.js 모듈은 JavaScript 용 SDK를 사용하여 CloudWatch 에서 지표를 가져옵니다.CloudWatch클라이언트 클래스:

• ListMetricsCommand

• PutMetricDataCommand

67

Page 76: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch 에서 지표 가져오기

CloudWatch 지표에 대한 자세한 내용은 단원을 참조하십시오.Amazon CloudWatch 지표 사용의AmazonCloudWatch 사용 설명서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 및 타사 모듈. 안내를 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

이러한 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드..그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

지표 나열만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.cloudWatchClient.js. 아래 코드를 복사하여 붙여넣으면 CloudWatch 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전에 있음.

import { CloudWatchClient } from "@aws-sdk/client-cloudwatch";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon CloudWatch service client object.export const cwClient = new CloudWatchClient({ region: REGION });

이 코드는 사용할 수 있습니다.(GitHub 에서 있음).

파일 이름이 listMetrics.js인 Node.js 모듈을 생성합니다. CloudWatch 클라이언트 다운로드를 포함하여 위와 같이 SDK를 구성해야 합니다. 지표를 나열하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. ListMetricsCommand 메서드를 호출하여 IncomingLogEvents 지표를 나열합니다.

// Import required AWS SDK clients and commands for Node.jsimport { ListMetricsCommand } from "@aws-sdk/client-cloudwatch";import { cwClient } from "./libs/cloudWatchClient.js";

// Set the parametersexport const params = { Dimensions: [ { Name: "LogGroupName" /* required */, }, ], MetricName: "IncomingLogEvents", Namespace: "AWS/Logs",};

export const run = async () => { try { const data = await cwClient.send(new ListMetricsCommand(params)); console.log("Success. Metrics:", JSON.stringify(data.Metrics)); return data;

68

Page 77: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch 에서 지표 가져오기

} catch (err) { console.log("Error", err); }};// Uncomment this line to run execution within this file.// run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node listMetrics.js

이 예제 코드는 에서 찾아볼 수 있습니다.(GitHub 에서 있음).

사용자 지정 지표 제출만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.cloudWatchClient.js. 아래 코드를 복사하여 붙여넣으면 CloudWatch 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전에 있음.

import { CloudWatchClient } from "@aws-sdk/client-cloudwatch";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon CloudWatch service client object.export const cwClient = new CloudWatchClient({ region: REGION });

이 코드는 사용할 수 있습니다.(GitHub 에서 있음).

파일 이름이 putMetricData.js인 Node.js 모듈을 생성합니다. CloudWatch 클라이언트 다운로드를 포함하여 위와 같이 SDK를 구성해야 합니다. PAGES_VISITED 사용자 지정 지표에 대한 데이터 포인트를 제출하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. PutMetricDataCommand 메서드를 호출합니다.

// Import required AWS SDK clients and commands for Node.jsimport { PutMetricDataCommand } from "@aws-sdk/client-cloudwatch";import { cwClient } from "./libs/cloudWatchClient.js";

// Set the parametersexport const params = { MetricData: [ { MetricName: "PAGES_VISITED", Dimensions: [ { Name: "UNIQUE_PAGES", Value: "URLS", }, ], Unit: "None", Value: 1.0, }, ], Namespace: "SITE/TRAFFIC",};

export const run = async () => { try { const data = await cwClient.send(new PutMetricDataCommand(params));

69

Page 78: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch Events에 이벤트 전송

console.log("Success", data.$metadata.requestId); return data; } catch (err) { console.log("Error", err); }};// Uncomment this line to run execution within this file.// run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node putMetricData.js

이 예제 코드는 에서 찾아볼 수 있습니다.(GitHub 에서 있음).

Amazon CloudWatch Events에 이벤트 전송

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 이벤트를 트리거하는 데 사용되는 규칙을 생성하고 업데이트하는 방법.• 이벤트에 응답할 하나 이상의 대상을 정의하는 방법.• 처리를 위해 대상과 일치하는 이벤트를 전송하는 방법.

시나리오CloudWatch Events는 Amazon Web Services 리소스의 변경 사항을 설명하는 시스템 이벤트의 스트림을 거의 실시간으로 다양한 대상에 제공합니다. 단순한 규칙을 사용하여 이벤트를 하나 이상의 대상 함수 또는 스트림에 일치시키고 라우팅할 수 있습니다.

이 예제에서는 일련의 Node.js 모듈을 사용하여 CloudWatch 이벤트로 이벤트를 전송합니다. 이 Node.js 모듈은 JavaScript 용 SDK를 사용하여 인스턴스를 관리합니다.CloudWatchEvents클라이언트 클래스:

• PutRuleCommand

• PutTargetsCommand

• PutEventsCommand

CloudWatch Events에 대한 자세한 내용은 섹션을 참조하십시오.PutEvents를 사용하여 이벤트 추가의Amazon CloudWatch Events 사용 설명서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 및 타사 모듈. 안내를 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

70

Page 79: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch Events에 이벤트 전송

• 생성AWS Lambda함수 사용hello-worldBlueprint가 이벤트의 대상 역할을 하도록 합니다. 자세한 방법은단계 1: Lambda 함수 생성의Amazon CloudWatch Events 사용 설명서.

• 정책이 CloudWatch 이벤트에 권한을 부여하는 정책이 있고 다음을 포함하는 IAM 역할을 생성합니다.events.amazonaws.com신뢰할 수 있는 엔터티로. IAM 역할 생성에 대한 자세한 내용은 단원을 참조하십시오.역할을 만들어AWS서비스의IAM 사용 설명서.

IAM 역할을 생성할 때 다음 역할 정책을 사용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchEventsFullAccess", "Effect": "Allow", "Action": "events:*", "Resource": "*" }, { "Sid": "IAMPassRoleForCloudWatchEvents", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/AWS_Events_Invoke_Targets" } ]}

IAM 역할을 생성할 때 다음과 같은 신뢰 관계를 사용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드..

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

예약된 규칙 생성만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.cloudWatchEventsClient.js. 아래 코드를 복사하여 붙여넣으면 CloudWatch 이벤트 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전에 있음.

import { CloudWatchEventsClient } from "@aws-sdk/client-cloudwatch-events";

71

Page 80: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch Events에 이벤트 전송

// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon CloudWatch service client object.export const cweClient = new CloudWatchEventsClient({ region: REGION });

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 putRule.js인 Node.js 모듈을 생성합니다. CloudWatch 클라이언트 다운로드를 포함하여 위와 같이 SDK를 구성해야 합니다. CloudWatch 이벤트에 액세스하려면CloudWatchEvents클라이언트 서비스 객체를 생성합니다. 새로운 예약 규칙을 지정하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체에는 다음이 포함됩니다.

• 규칙의 이름입니다• 이전에 생성한 IAM 역할의 ARN• 5분마다 규칙 트리거링을 예약할 표현식

PutRuleCommand 메서드를 호출하여 규칙을 생성합니다. 콜백은 새로운 규칙 또는 업데이트된 규칙의ARN을 반환합니다.

// Import required AWS SDK clients and commands for Node.jsimport { PutRuleCommand } from "@aws-sdk/client-cloudwatch-events";import { cweClient } from "./libs/cloudWatchEventsClient.js";

// Set the parametersexport const params = { Name: "DEMO_EVENT", RoleArn: "IAM_ROLE_ARN", //IAM_ROLE_ARN ScheduleExpression: "rate(5 minutes)", State: "ENABLED",};

export const run = async () => { try { const data = await cweClient.send(new PutRuleCommand(params)); console.log("Success, scheduled rule created; Rule ARN:", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};// Uncomment this line to run execution within this file.// run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node putRule.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

Lambda 함수 대상 추가만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.cloudWatchEventsClient.js. 아래 코드를 복사하여 붙여넣으면 CloudWatch 이벤트 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전에 있음.

import { CloudWatchEventsClient } from "@aws-sdk/client-cloudwatch-events";

72

Page 81: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch Events에 이벤트 전송

// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon CloudWatch service client object.export const cweClient = new CloudWatchEventsClient({ region: REGION });

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 putTargets.js인 Node.js 모듈을 생성합니다. CloudWatch 클라이언트 다운로드를 포함하여위와 같이 SDK를 구성해야 합니다. CloudWatch 이벤트에 액세스하려면CloudWatchEvents서비스 객체를생성합니다. 생성한 Lambda 함수의 ARN을 포함하여 대상에 연결할 규칙을 지정하는 데 필요한 파라미터를포함하는 JSON 객체를 생성합니다. CloudWatchEvents 서비스 객체의 PutTargetsCommand 메서드를호출합니다.

Note

ReplaceLAMBDA_FUNCTION_ARN를 Lambda 함수의 ARN 으로 대체합니다.

// Import required AWS SDK clients and commands for Node.jsimport { PutTargetsCommand } from "@aws-sdk/client-cloudwatch-events";import { cweClient } from "./libs/cloudWatchEventsClient.js";

// Set the parametersexport const params = { Rule: "DEMO_EVENT", Targets: [ { Arn: "LAMBDA_FUNCTION_ARN", //LAMBDA_FUNCTION_ARN Id: "myCloudWatchEventsTarget", }, ],};

export const run = async () => { try { const data = await cweClient.send(new PutTargetsCommand(params)); console.log("Success, target added; requestID: ", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};// Uncomment this line to run execution within this file.// run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node putTargets.js

이 예제 코드는 에서 찾아볼 수 있습니다.(GitHub 에서 있음).

이벤트 전송만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.cloudWatchEventsClient.js. 아래 코드를 복사하여 붙여넣으면 CloudWatch 이벤트 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전에 있음.

import { CloudWatchEventsClient } from "@aws-sdk/client-cloudwatch-events";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"

73

Page 82: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch Logs 에서 구독 필터 사용

// Create an Amazon CloudWatch service client object.export const cweClient = new CloudWatchEventsClient({ region: REGION });

이 코드는 사용할 수 있습니다.(GitHub 에서 있음).

파일 이름이 putEvents.js인 Node.js 모듈을 생성합니다. CloudWatch 클라이언트 다운로드를 포함하여위와 같이 SDK를 구성해야 합니다. CloudWatch 이벤트에 액세스하려면CloudWatchEvents클라이언트 서비스 객체를 생성합니다. 이벤트를 전송하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이벤트마다 해당 이벤트의 소스, 해당 이벤트의 영향을 받은 모든 리소스의 ARN, 해당 이벤트의 세부 정보를포함시킵니다. 를 호출합니다.PutEventsCommands메서드CloudWatchEvents클라이언트 서비스 객체를생성합니다.

Note

Replace버버버_ARN이벤트의 영향을 받는 리소스로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { PutEventsCommand } from "@aws-sdk/client-cloudwatch-events";import { cweClient } from "./libs/cloudWatchEventsClient.js";

// Set the parametersexport const params = { Entries: [ { Detail: '{ "key1": "value1", "key2": "value2" }', DetailType: "appRequestSubmitted", Resources: [ "RESOURCE_ARN", //RESOURCE_ARN ], Source: "com.company.app", }, ],};

export const run = async () => { try { const data = await cweClient.send(new PutEventsCommand(params)); console.log("Success, event sent; requestID:", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};// Uncomment this line to run execution within this file.// run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node putEvents.js

이 예제 코드는 에서 찾아볼 수 있습니다.(GitHub 에서 있음).

Amazon CloudWatch Logs 에서 구독 필터 사용

74

Page 83: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch Logs 에서 구독 필터 사용

이 Node.js 코드 예제는 다음을 보여 줍니다.

• CloudWatch Logs Logs의 로그 이벤트에 대한 필터를 생성하고 삭제하는 방법.

시나리오구독을 사용하면 CloudWatch Logs 통해 로그 이벤트 실시간 피드에 액세스할 수 있으며 해당 피드를Amazon Kinesis 스트림 또는AWS Lambda, 사용자 정의 처리, 분석 또는 다른 시스템에 로딩하기 위해. 구독필터는 어떤 로그 이벤트를 필터링하는 데 사용할 패턴을 정의합니다.AWS리소스입니다.

이 예제에서는 CloudWatch Logs s의 구독 필터를 나열, 생성 및 삭제하는 데 일련의 Node.js 모듈을 사용합니다. 로그 이벤트의 대상은 Lambda 함수입니다. 이 Node.js 모듈은 JavaScript 용 SDK를 사용하여 구독 필터를 관리합니다.CloudWatchLogs클라이언트 클래스:

• PutSubscriptionFilterCommand

• DescribeSubscriptionFilterCommand

• DeleteSubscriptionFilterCommand

CloudWatch Logs s의 구독에 대한 자세한 내용은 단원을 참조하십시오구독을 통한 로그 데이터의 실시간처리의Amazon CloudWatch Logs 사용 설명서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 및 타사 모듈. 안내를 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

• 생성AWS Lambda함수를 로그 이벤트의 대상으로 지정합니다. 이 함수의 Amazon 리소스 이름 (ARN) 을사용해야 합니다. Lambda 함수를 설정하는 방법에 대한 자세한 내용은 단원을 참조하십시오.Lambda 를사용한 구독 필터의Amazon CloudWatch Logs 사용 설명서.

• 생성한 Lambda 함수를 호출할 권한을 부여하고 CloudWatch Logs 대한 모든 액세스 권한을 부여하는 정책이 있는 IAM 역할을 생성하거나, Lambda 함수에 대해 생성한 실행 역할에 다음 정책을 적용합니다. IAM역할 생성에 대한 자세한 내용은 단원을 참조하십시오.역할을 만들어AWS서비스의IAM 사용 설명서.

IAM 역할을 생성할 때 다음 역할 정책을 사용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CrateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [

75

Page 84: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch Logs 에서 구독 필터 사용

"*" ] } ]}

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드..

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

기존 구독 필터 설명만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.cloudWatchLogsClient.js. 아래 코드를 복사하여 붙여넣으면 CloudWatch Logs 클라이언트 객체가생성됩니다. ReplaceREGION와 함께AWS리전에 있음.

import { CloudWatchLogsClient } from "@aws-sdk/client-cloudwatch-logs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon CloudWatch Logs service client object.export const cwlClient = new CloudWatchLogsClient({ region: REGION });

이 코드는 사용할 수 있습니다.(GitHub 에서 있음).

파일 이름이 describeSubscriptionFilters.js인 Node.js 모듈을 생성합니다. CloudWatch 클라이언트 다운로드를 포함하여 위와 같이 SDK를 구성해야 합니다. 로그 그룹의 이름 및 설명할 최대필터 수를 포함하여 기존 필터를 설명하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다.DescribeSubscriptionFiltersCommand 메서드를 호출합니다.

Note

ReplaceGROUP_NAME그룹 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { DescribeSubscriptionFiltersCommand } from "@aws-sdk/client-cloudwatch-logs";import { cwlClient } from "./libs/cloudWatchLogsClient.js";

// Set the parametersexport const params = { logGroupName: "GROUP_NAME", //GROUP_NAME limit: 5};

export const run = async () => { try { const data = await cwlClient.send( new DescribeSubscriptionFiltersCommand(params) ); console.log("Success", data.subscriptionFilters); return data; // For unit tests. } catch (err) { console.log("Error", err);

76

Page 85: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch Logs 에서 구독 필터 사용

}};// Uncomment this line to run execution within this file.// run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node describeSubscriptionFilters.js

이 예제 코드는 에서 찾아볼 수 있습니다.(GitHub 에서 있음).

구독 필터 생성만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.cloudWatchLogsClient.js. 아래 코드를 복사하여 붙여넣으면 CloudWatch Logs 클라이언트 객체가생성됩니다. ReplaceREGION와 함께AWS리전에 있음.

import { CloudWatchLogsClient } from "@aws-sdk/client-cloudwatch-logs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon CloudWatch Logs service client object.export const cwlClient = new CloudWatchLogsClient({ region: REGION });

이 코드는 사용할 수 있습니다.(GitHub 에서 있음).

파일 이름이 describeSubscriptionFilters.js인 Node.js 모듈을 생성합니다. CloudWatch 클라이언트 다운로드를 포함하여 위와 같이 SDK를 구성해야 합니다. 대상 Lambda 함수의 ARN, 필터의 이름, 필터링을 위한 문자열 패턴, 로그 그룹의 이름 등을 포함하여 필터를 생성하는 데 필요한 파라미터를 포함하는JSON 객체를 생성합니다. PutSubscriptionFiltersCommand 메서드를 호출합니다.

Note

Replace버버 버버-ARNLambda 함수의 ARN 과 함께버버 버버필터의 이름을 바꾸고버버 버버로그 그룹과함께 합니다.

// Import required AWS SDK clients and commands for Node.jsimport { PutSubscriptionFilterCommand,} from "@aws-sdk/client-cloudwatch-logs";import { cwlClient } from "./libs/cloudWatchLogsClient.js";

// Set the parametersexport const params = { destinationArn: "LAMBDA_FUNCTION_ARN", //LAMBDA_FUNCTION_ARN filterName: "FILTER_NAME", //FILTER_NAME filterPattern: "ERROR", logGroupName: "LOG_GROUP", //LOG_GROUP};

export const run = async () => { try { const data = await cwlClient.send(new PutSubscriptionFilterCommand(params)); console.log("Success", data.subscriptionFilters); return data; //For unit tests. } catch (err) { console.log("Error", err); }};

77

Page 86: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon CloudWatch Logs 에서 구독 필터 사용

// Uncomment this line to run execution within this file.// run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node describeSubscriptionFilters.js

이 예제 코드는 에서 찾아볼 수 있습니다.(GitHub 에서 있음).

구독 필터 삭제만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.cloudWatchLogsClient.js. 아래 코드를 복사하여 붙여넣으면 CloudWatch Logs 클라이언트 객체가생성됩니다. ReplaceREGION와 함께AWS리전에 있음.

import { CloudWatchLogsClient } from "@aws-sdk/client-cloudwatch-logs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon CloudWatch Logs service client object.export const cwlClient = new CloudWatchLogsClient({ region: REGION });

이 코드는 사용할 수 있습니다.(GitHub 에서 있음).

파일 이름이 deletesubScriptionFilters.js인 Node.js 모듈을 생성합니다. CloudWatch 클라이언트다운로드를 포함하여 위와 같이 SDK를 구성해야 합니다. 필터 및 로그 그룹의 이름을 포함하여 필터를 삭제하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. DeleteSubscriptionFiltersCommand메서드를 호출합니다.

Note

Replace버버 버버필터의 이름을 바꾸고버버 버버로그 그룹과 함께 합니다.

// Import required AWS SDK clients and commands for Node.jsimport { DeleteSubscriptionFilterCommand} from "@aws-sdk/client-cloudwatch-logs";import { cwlClient } from "./libs/cloudWatchLogsClient.js";

// Set the parametersexport const params = { filterName: "FILTER", //FILTER logGroupName: "LOG_GROUP", //LOG_GROUP};

export const run = async () => { try { const data = await cwlClient.send( new DeleteSubscriptionFilterCommand(params) ); console.log( "Success, subscription filter deleted", data ); return data; //For unit tests. } catch (err) { console.log("Error", err); }};

78

Page 87: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon DynamoDB 예제

// Uncomment this line to run execution within this file.// run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node deletesubScriptionFilters.js

이 예제 코드는 에서 찾아볼 수 있습니다.(GitHub 에서 있음).

Amazon DynamoDB 예제Amazon DynamoDB 는 문서 모델과 키-값 스토어 모델을 모두 지원하는 완전 관리형 NoSQL 클라우드 데이터베이스입니다. 전용 데이터베이스 서버를 프로비저닝하거나 유지 관리할 필요 없이 데이터에 대해 스키마없는 테이블을 생성합니다.

DynamoDB 용 JavaScript API는DynamoDB,DynamoDBStreams, 및DynamoDB.DocumentClient클라이언트 클래스를 합니다. DynamoDB 클라이언트 클래스를 사용하는 방법에 대한 자세한 내용은 단원을 참조하십시오.클래스: DynamoDB,클래스: DynamoDB스트림, 및클래스: DynamoDB 유틸리티API 참조에서 합니다.

주제• DynamoDB 에서 테이블 생성 및 사용 (p. 79)• DynamoDB 에서 단일 항목 읽기 및 쓰기 (p. 84)• DynamoDB 에서 일괄적으로 항목 읽기 및 쓰기 (p. 88)• DynamoDB 테이블을 쿼리하고 스캔하는 중 (p. 91)• DynamoDB 문서 클라이언트 사용 (p. 94)

DynamoDB 에서 테이블 생성 및 사용

이 Node.js 코드 예제는 다음을 보여 줍니다.

• DynamoDB 에서 데이터를 저장하고 검색하는 데 사용되는 테이블을 생성하고 관리하는 방법.

시나리오다른 데이터베이스 시스템과 마찬가지로 DynamoDB 는 데이터를 테이블에 저장합니다. DynamoDB 테이블은 행과 유사한 항목으로 구성된 데이터의 모음입니다. DynamoDB 에 데이터를 저장하거나 액세스하려면테이블을 생성하고 테이블로 작업합니다.

79

Page 88: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 에서 테이블 생성 및 사용

이 예제에서는 일련의 Node.js 모듈을 사용하여 DynamoDB 테이블에 대한 기본 작업을 수행합니다. 이 코드는 JavaScript SDK를 사용하여 테이블을 생성하고 테이블로 작업합니다.DynamoDB클라이언트 클래스:

• CreateTableCommand

• ListTablesCommand

• DescribeTableCommand

• DeleteTableCommand

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.

• 이러한 Node.js 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript및 타사 모듈을 사용합니다. 의 지시 사항을 따릅니다.GitHub.

• JavaScript DynamoDB 클라이언트용 SDK를 설치합니다. 자세한 정보는 버전 3의 새로운 기능 (p. 1)을 참조하십시오.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

이러한 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

테이블 생성만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 ddb_createtable.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB 에 액세스하려면DynamoDB클라이언트 서비스 객체를 생성합니다. 테이블을 생성하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 각 속성의 이름과 데이터 형식, 키 스키마, 테이블의 이름, 프로비저닝할 처리량의 단위가 포함됩니다. 을 호출합니다.CreateTableCommandDynamoDB 서비스 객체의 메서드를 호출합니다.

Note

ReplaceTABLE_NAME테이블의 이름을 테이블 이름으로 바꿉니다.버버 버버_1파티션 키의 이름을 인경우버버_버버_2정렬 키의 이름 (선택 사항) 과버버 버버를 속성 유형 (예: N [숫자의 경우], S [문자열의경우] 등) 으로 바꿉니다.

Note

그 테이블의 기본 키는 다음 속성들로 구성됩니다.

80

Page 89: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 에서 테이블 생성 및 사용

• Season

• Episode

// Import required AWS SDK clients and commands for Node.jsimport { CreateTableCommand } from "@aws-sdk/client-dynamodb";import { ddbClient } from "./libs/ddbClient.js";

// Set the parametersconst params = { AttributeDefinitions: [ { AttributeName: "Season", //ATTRIBUTE_NAME_1 AttributeType: "N", //ATTRIBUTE_TYPE }, { AttributeName: "Episode", //ATTRIBUTE_NAME_2 AttributeType: "N", //ATTRIBUTE_TYPE }, ], KeySchema: [ { AttributeName: "Season", //ATTRIBUTE_NAME_1 KeyType: "HASH", }, { AttributeName: "Episode", //ATTRIBUTE_NAME_2 KeyType: "RANGE", }, ], ProvisionedThroughput: { ReadCapacityUnits: 1, WriteCapacityUnits: 1, }, TableName: "TEST_TABLE", //TABLE_NAME StreamSpecification: { StreamEnabled: false, },};

const run = async () => { try { const data = await ddbClient.send(new CreateTableCommand(params)); console.log("Table Created", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ddb_createtable.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

테이블 나열만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

81

Page 90: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 에서 테이블 생성 및 사용

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 ddb_listtables.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.DynamoDB 에 액세스하려면DynamoDB클라이언트 서비스 객체를 생성합니다. 테이블을 나열하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다, 이 예제에서는 나열되는 테이블 수를 10으로 제한합니다. 을 호출합니다.ListTablesCommandDynamoDB 서비스 객체의 메서드를 호출합니다.

// Import required AWS SDK clients and commands for Node.jsimport { ListTablesCommand } from "@aws-sdk/client-dynamodb";import { ddbClient } from "./libs/ddbClient.js";

const run = async () => { try { const data = await ddbClient.send(new ListTablesCommand({})); console.log(data.TableNames.join("\n")); return data; } catch (err) { console.error(err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ddb_listtables.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

테이블 설명만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 ddb_describetable.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.DynamoDB 에 액세스하려면DynamoDB클라이언트 서비스 객체를 생성합니다. 를 설명하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다.DescribeTableCommandDynamoDB 서비스 객체의 메서드를호출합니다.

Note

ReplaceTABLE_NAME테이블의 이름을 합니다.

82

Page 91: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 에서 테이블 생성 및 사용

// Import required AWS SDK clients and commands for Node.jsimport { DescribeTableCommand } from "@aws-sdk/client-dynamodb";import { ddbClient } from "./libs/ddbClient.js";

// Set the parametersconst params = { TableName: "TABLE_NAME" }; //TABLE_NAME

const run = async () => { try { const data = await ddbClient.send(new DescribeTableCommand(params)); console.log("Success", data.Table.KeySchema); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ddb_describetable.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

테이블 삭제만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 ddb_deletetable.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.DynamoDB 에 액세스하려면DynamoDB클라이언트 서비스 객체를 생성합니다. 테이블을 삭제하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예에서는 명령줄 파라미터로 제공되는 테이블의 이름을 포함합니다. 을 호출합니다.DeleteTableCommandDynamoDB 서비스 객체의 메서드를 호출합니다.

// Import required AWS SDK clients and commands for Node.jsimport { DeleteTableCommand } from "@aws-sdk/client-dynamodb";import { ddbClient } from "./libs/ddbClient.js";

// Set the parametersconst params = { TableName: "TABLE_NAME",};

const run = async () => { try { const data = await ddbClient.send(new DeleteTableCommand(params)); console.log("Success, table deleted", data); return data; } catch (err) { if (err && err.code === "ResourceNotFoundException") {

83

Page 92: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 에서 단일 항목 읽기 및 쓰기

console.log("Error: Table not found"); } else if (err && err.code === "ResourceInUseException") { console.log("Error: Table in use"); } }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ddb_deletetable.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

DynamoDB 에서 단일 항목 읽기 및 쓰기

이 Node.js 코드 예제는 다음을 보여 줍니다.

• DynamoDB 테이블에서 항목을 추가하는 방법.• DynamoDB 테이블의 항목을 검색하는 방법.• DynamoDB 테이블에서 항목을 삭제하는 방법.

시나리오이 예제에서는 일련의 Node.js 모듈을 사용하여 DynamoDB 테이블에서 항목 하나를 읽고 씁니다.DynamoDB클라이언트 클래스:

• 푸티템 명령• 게티템 명령• 삭제 항목 명령

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.

• 이러한 Node.js 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript및 타사 모듈을 사용합니다. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

• 해당 항목에 액세스할 수 있는 DynamoDB 테이블을 생성합니다. DynamoDB 테이블 생성에 대한 자세한내용은 단원을 참조하십시오.DynamoDB 에서 테이블 생성 및 사용 (p. 79).

Important

이러한 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

84

Page 93: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 에서 단일 항목 읽기 및 쓰기

항목 쓰기만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 ddb_putitem.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.DynamoDB 에 액세스하려면DynamoDB클라이언트 서비스 객체를 생성합니다. 항목을 추가하는 데 필요한파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블의 이름 및 설정할 속성과 각 속성의값을 정의하는 맵이 포함됩니다. 을 호출합니다.PutItemCommandDynamoDB 클라이언트 서비스 객체의 메서드를 호출합니다.

Note

ReplaceTABLE_NAME테이블의 이름을 합니다.Note

다음 코드 예제에서는 partion 키로만 구성된 기본 키가 있는 테이블에 씁니다.CUSTOMER_ID- 및 정렬 키CUSTOMER_NAME. 테이블의 기본 키가 파티션 키로만 구성된 경우에는 파티션 키만 지정합니다.

// Import required AWS SDK clients and commands for Node.jsimport { PutItemCommand } from "@aws-sdk/client-dynamodb";import { ddbClient } from "./libs/ddbClient.js";

// Set the parametersconst params = { TableName: "TABLE_NAME", Item: { CUSTOMER_ID: { N: "001" }, CUSTOMER_NAME: { S: "Richard Roe" }, },};

const run = async () => { try { const data = await ddbClient.send(new PutItemCommand(params)); console.log(data); return data; } catch (err) { console.error(err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ddb_putitem.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

85

Page 94: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 에서 단일 항목 읽기 및 쓰기

항목 가져오기만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 ddb_getitem.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.DynamoDB 에 액세스하려면DynamoDB클라이언트 서비스 객체를 생성합니다. 가져올 항목을 식별하려면테이블의 해당 항목에 대한 기본 키의 값을 제공해야 합니다. 기본적으로 GetItemCommand 메서드는 항목에 정의된 모든 속성 값을 반환합니다. 가능한 모든 속성 값의 일부만 가져오려면 프로젝션 표현식을 지정합니다.

항목을 가져오는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블의 이름,가져오는 항목에 대한 키의 이름과 값, 검색할 항목 속성을 식별하는 프로젝션 표현식이 포함됩니다. 을 호출합니다.GetItemCommandDynamoDB 클라이언트 서비스 객체의 메서드를 호출합니다.

Note

ReplaceTABLE_NAME테이블의 이름을 인 경우KEY_NAME테이블의 기본 키 인버 버버_버를 속성 값을포함하는 기본 키 행의 값으로 바꾸고버버 버버속성 값을 포함하는 속성 열의 이름.

다음 코드 예제에서는 partion 키로만 구성된 기본 키가 있는 테이블에서 항목을 검색합니다.KEY_NAME- 그리고 파션과 정렬 키가 아닙니다. 테이블에 파티션 키와 정렬 키로 구성된 기본 키가 있는 경우 정렬 키 이름과 속성도 지정해야 합니다.

// Import required AWS SDK clients and commands for Node.jsimport { GetItemCommand } from "@aws-sdk/client-dynamodb";import { ddbClient } from "./libs/ddbClient.js";

// Set the parametersconst params = { TableName: "TABLE_NAME", //TABLE_NAME Key: { KEY_NAME: { N: "KEY_VALUE" }, }, ProjectionExpression: "ATTRIBUTE_NAME",};

const run = async () => { const data = await ddbClient.send(new GetItemCommand(params)); console.log("Success", data.Item); return data;};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ddb_getitem.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

86

Page 95: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 에서 단일 항목 읽기 및 쓰기

항목 삭제만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 ddb_deleteitem.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.DynamoDB 에 액세스하려면DynamoDB클라이언트 서비스 객체를 생성합니다. 항목을 삭제하는 데 필요한파라미터를 포함하는 JSON 객체를 생성합니다. 이 예에서는 테이블의 이름과 삭제하려는 항목의 키 이름 및값을 포함합니다. 을 호출합니다.DeleteItemCommandDynamoDB 클라이언트 서비스 객체의 메서드를 호출합니다.

Note

ReplaceTABLE_NAME테이블의 이름을 합니다.Note

아래의 코드 예제에서는 partion 키로만 구성된 기본 키가있는 항목을 삭제합니다.KEY_NAME- 그리고 파션과 정렬 키가 아닙니다. 테이블에 파티션 키와 정렬 키로 구성된 기본 키가 있는 경우 정렬키 이름과 속성도 지정해야 합니다.

// Import required AWS SDK clients and commands for Node.jsimport { DeleteItemCommand } from "@aws-sdk/client-dynamodb";import { ddbClient } from "./libs/ddbClient.js";

// Set the parametersvar params = { TableName: "TABLE_NAME", Key: { KEY_NAME: { N: "VALUE" }, },};

const run = async () => { try { const data = await ddbClient.send(new DeleteItemCommand(params)); console.log("Success, table deleted", data); return data; } catch (err) { if (err && err.code === "ResourceNotFoundException") { console.log("Error: Table not found"); } else if (err && err.code === "ResourceInUseException") { console.log("Error: Table in use"); } }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ddb_deleteitem.js

87

Page 96: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 에서 일괄적으로 항목 읽기 및 쓰기

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

DynamoDB 에서 일괄적으로 항목 읽기 및 쓰기

이 Node.js 코드 예제는 다음을 보여 줍니다.

• DynamoDB 테이블에서 항목의 배치를 읽고 쓰는 방법.

시나리오이 예제에서는 일련의 Node.js 모듈을 사용하여 항목의 배치를 DynamoDB 테이블에 넣고 항목의 배치를 읽습니다. 이 코드는 JavaScript 용 SDK를 사용하여 DynamoDB 클라이언트 클래스의 다음 메서드를 사용하여배치 읽기 및 쓰기 작업을 수행합니다.

• 배치게타이템 명령• 일괄 쓰기 항목 명령

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.

• 이러한 노드 JypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript및타사 모듈을 사용합니다. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

• 해당 항목에 액세스할 수 있는 DynamoDB 테이블을 생성합니다. DynamoDB 테이블 생성에 대한 자세한내용은 단원을 참조하십시오.DynamoDB 에서 테이블 생성 및 사용 (p. 79).

Important

이러한 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

Batch 로 항목 읽기만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

88

Page 97: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 에서 일괄적으로 항목 읽기 및 쓰기

파일 이름이 ddb_batchgetitem.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB 에 액세스하려면DynamoDB클라이언트 서비스 객체를 생성합니다. 항목의 배치를 가져오는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 읽을 하나 이상 테이블의이름, 각 테이블에서 읽을 키의 값, 반환할 속성을 지정하는 프로젝션 표현식이 포함됩니다. 을 호출합니다.BatchGetItemCommandDynamoDB 서비스 객체의 메서드를 호출합니다.

Note

ReplaceTABLE_NAME테이블의 이름을 인 경우KEY_NAME테이블의 기본 키 인버 버를 속성 값을 포함하는 기본 키 행의 값으로 바꾸고버버 버버속성 값을 포함하는 속성 열의 이름.Note

이 배치 아래의 다음 코드는 partion 키만으로 구성된 기본 키가있는 테이블에서 항목을 검색합니다.KEY_NAME- 그리고 파션과 정렬 키가 아닙니다. 테이블에 파티션 키와 정렬 키로 구성된 기본 키가 있는 경우 각 항목에 대한 정렬 키 이름과 속성도 지정해야 합니다.

// Import required AWS SDK clients and commands for Node.jsimport { BatchGetItemCommand } from "@aws-sdk/client-dynamodb";import { ddbClient } from "./libs/ddbClient.js";

// Set the parametersconst params = { RequestItems: { TABLE_NAME: { Keys: [ { KEY_NAME_1: { N: "KEY_VALUE" }, KEY_NAME_2: { N: "KEY_VALUE" }, KEY_NAME_3: { N: "KEY_VALUE" }, }, ], ProjectionExpression: "ATTRIBUTE_NAME", }, },};

const run = async () => { try { const data = await ddbClient.send(new BatchGetItemCommand(params)); console.log("Success, items retrieved", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ddb_batchgetitem.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

Batch 로 항목 쓰기만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";

89

Page 98: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 에서 일괄적으로 항목 읽기 및 쓰기

// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 ddb_batchwriteitem.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.DynamoDB 에 액세스하려면DynamoDB클라이언트 서비스 객체를 생성합니다. 항목의 배치를 가져오는 데필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 항목을 쓰려는 테이블, 각 항목에 대해 쓰려는 키, 속성 및 해당 값이 이러한 객체입니다. 을 호출합니다.BatchWriteItemCommandDynamoDB서비스 객체의 메서드를 호출합니다.

Note

ReplaceTABLE_NAME테이블의 이름을 인 경우버항목의 기본 키인버 버를 속성 값을 포함하는 기본키 행의 값으로 바꾸고버버 버버속성 값을 포함하는 속성 열의 이름.

다음 코드 예제에서는 partion 키로만 구성된 기본 키가 있는 테이블에 항목을 일괄 씁니다.KEY_NAME- 그리고 파션과 정렬 키가 아닙니다. 테이블에 파티션 키와 정렬 키로 구성된 기본 키가 있는 경우 각 항목에 대한정렬 키 이름과 속성도 지정해야 합니다.

// Import required AWS SDK clients and commands for Node.jsimport { BatchWriteItemCommand } from "@aws-sdk/client-dynamodb";import { ddbClient } from "./libs/ddbClient.js";

// Set the parametersconst params = { RequestItems: { TABLE_NAME: [ { PutRequest: { Item: { KEY: { N: "KEY_VALUE" }, ATTRIBUTE_1: { S: "ATTRIBUTE_1_VALUE" }, ATTRIBUTE_2: { N: "ATTRIBUTE_2_VALUE" }, }, }, }, { PutRequest: { Item: { KEY: { N: "KEY_VALUE" }, ATTRIBUTE_1: { S: "ATTRIBUTE_1_VALUE" }, ATTRIBUTE_2: { N: "ATTRIBUTE_2_VALUE" }, }, }, }, ], },};

const run = async () => { try { const data = await ddbClient.send(new BatchWriteItemCommand(params)); console.log("Success, items inserted", data); return data; } catch (err) { console.log("Error", err); }};run();

90

Page 99: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 테이블을 쿼리하고 스캔하는 중

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ddb_batchwriteitem.js

이 예제 코드는 찾아볼 수 있습니다.여기 GitHub 에서.

DynamoDB 테이블을 쿼리하고 스캔하는 중

이 Node.js 코드 예제는 다음을 보여 줍니다.

• DynamoDB 테이블에서 항목을 쿼리하고 스캔하는 방법.

시나리오쿼리는 기본 키 속성 값만 사용하여 테이블 또는 보조 인덱스에서 항목을 찾습니다. 검색할 파티션 키 이름과값을 제공해야 합니다. 정렬 키 이름과 값도 제공할 수 있으며, 비교 연산자를 사용하여 검색 결과를 좁힐 수있습니다. 스캔은 지정된 테이블에서 모든 항목을 확인하여 항목을 찾습니다.

이 예제에서는 일련의 Node.js 모듈을 사용하여 DynamoDB 테이블에서 검색할 하나 이상의 항목을 식별합니다. 이 코드는 JavaScript 용 SDK를 사용하여 DynamoDB 클라이언트 클래스의 다음 메서드를 사용하여테이블을 쿼리하고 스캔합니다.

• 쿼리 명령• 스캔 명령

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.

• 이러한 Node.js 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript및 타사 모듈을 사용합니다. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

• 해당 항목에 액세스할 수 있는 DynamoDB 테이블을 생성합니다. DynamoDB 테이블을 생성하는 방법에대한 자세한 내용은 섹션을 참조하십시오.DynamoDB 에서 테이블 생성 및 사용 (p. 79).

Important

이러한 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

테이블 쿼리이 예제에서는 비디오 시리즈에 대한 에피소드 정보가 포함된 테이블을 쿼리하여 지정된 어구가 자막에 포함되어 있는 에피소드 9 이후 두 번째 시즌 에피소드의 에피소드 제목과 자막을 반환합니다.

91

Page 100: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 테이블을 쿼리하고 스캔하는 중

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 ddb_query.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면DynamoDB클라이언트 서비스 개체입니다. 테이블을 쿼리하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블 이름, 쿼리에 필요한 ExpressionAttributeValues,해당 값을 사용하여 쿼리에서 반환되는 항목을 정의하는 KeyConditionExpression, 각 항목에 대해 반환할 속성 값의 이름이 포함됩니다. 을 호출합니다.QueryCommandDynamoDB 서비스 객체의 메서드를 호출합니다.

그 테이블의 기본 키는 다음 속성들로 구성됩니다.

• Season

• Episode

코드를 실행할 수 있습니다.GitHub 에 있음이 쿼리가 대상으로하는 테이블을 만들고 코드GitHub 에 있음테이블을 채우기.

// Import required AWS SDK clients and commands for Node.jsimport { QueryCommand } from "@aws-sdk/client-dynamodb";import { ddbClient } from "./libs/ddbClient.js";

// Set the parametersconst params = { KeyConditionExpression: "Season = :s and Episode > :e", FilterExpression: "contains (Subtitle, :topic)", ExpressionAttributeValues: { ":s": { N: "1" }, ":e": { N: "2" }, ":topic": { S: "SubTitle" }, }, ProjectionExpression: "Episode, Title, Subtitle", TableName: "EPISODES_TABLE",};

const run = async () => { try { const data = await ddbClient.send(new QueryCommand(params)); data.Items.forEach(function (element, index, array) { console.log(element.Title.S + " (" + element.Subtitle.S + ")"); return data; }); } catch (err) { console.error(err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

92

Page 101: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 테이블을 쿼리하고 스캔하는 중

node ddb_query.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

테이블 스캔만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 ddb_scan.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DynamoDB에 액세스하려면DynamoDB클라이언트 서비스 객체를 생성합니다. 테이블에서 항목을 스캔하는 데 필요한파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블의 이름, 일치하는 각 항목에 대해 반환할 속성 값의 목록, 결과 집합을 필터링하여 지정된 어구가 포함된 항목을 찾는 표현식이 포함됩니다. 을호출합니다.ScanQueryDynamoDB 서비스 객체의 메서드를 호출합니다.

// Import required AWS SDK clients and commands for Node.jsimport { ScanCommand } from "@aws-sdk/client-dynamodb";import { ddbClient } from "./libs/ddbClient.js";

// Set the parameters.const params = { // Specify which items in the results are returned. FilterExpression: "Subtitle = :topic AND Season = :s AND Episode = :e", // Define the expression attribute value, which are substitutes for the values you want to compare. ExpressionAttributeValues: { ":topic": { S: "SubTitle2" }, ":s": { N: "1" }, ":e": { N: "2" }, }, // Set the projection expression, which the the attributes that you want. ProjectionExpression: "Season, Episode, Title, Subtitle", TableName: "EPISODES_TABLE",};

// Create an AWS DynamoDB service object.const dbclient = new DynamoDBClient({ region: REGION });

async function run() { try { const data = await ddbClient.send(new ScanCommand(params)); data.Items.forEach(function (element, index, array) { console.log(element.Title.S + " (" + element.Subtitle.S + ")"); return data; }); } catch (err) { console.log("Error", err); }}

93

Page 102: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 문서 클라이언트 사용

run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ddb_scan.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

DynamoDB 문서 클라이언트 사용

이 Node.js 코드 예제는 다음을 보여 줍니다.

• DynamoDB 유틸리티를 사용하여 DynamoDB 테이블에 액세스하는 방법.

시나리오DynamoDB Document 클라이언트는 속성 값의 개념을 추상화하여 항목 작업을 간소화합니다. 이 추상화는입력 파라미터로 제공되는 기본 JavaScript 유형에 주석을 달고, 주석이 달린 응답 데이터를 기본 JavaScript유형으로 변환합니다.

DynamoDB 문서 클라이언트에 대한 자세한 내용은 단원을 참조하십시오.@aws -SDK - 동적 데이터베이스읽어보기(GitHub에 있음). Amazon DynamoDB 를 사용하여 프로그래밍하는 방법에 대한 자세한 내용은 단원을 참조하십시오.DynamoDB 를 사용한 프로그래밍의Amazon DynamoDB Developer Guide.

이 예제에서는 일련의 Node.js 모듈을 사용하여 DynamoDB 테이블에서 기본 작업을 수행합니다. 이 코드는JavaScript SDK를 사용하여 DynamoDB 클래스의 다음 메서드를 사용하여 테이블을 쿼리하고 스캔합니다.

• getItem• putItem• UpdateItem• query• deleteItem

DynamoDB 문서 클라이언트 구성에 대한 자세한 내용은 단원을 참조하십시오.@aws -SDK - 동적 데이터베이스.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.

• 이러한 Node.js 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript및 타사 모듈을 사용합니다. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

• 해당 항목에 액세스할 수 있는 DynamoDB 테이블을 생성합니다. JavaSJavaScript 용 SDK를 사용하여DynamoDB 테이블을 생성하는 방법에 대한 자세한 내용은 단원을 참조하십시오.DynamoDB 에서 테이블생성 및 사용 (p. 79). 또한 사용할 수 있습니다.DynamoDB 콘솔테이블을 생성합니다.

94

Page 103: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 문서 클라이언트 사용

Important

이러한 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

테이블에서 항목 가져오기만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbDocClient.js. 아래 코드를 복사하여 여기에 붙여넣으면 DynamoDB 문서 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBDocumentClient} from "@aws-sdk/lib-dynamodb";import {ddbClient} from "./ddbClient.js";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"

const marshallOptions = { // Whether to automatically convert empty strings, blobs, and sets to `null`. convertEmptyValues: false, // false, by default. // Whether to remove undefined values while marshalling. removeUndefinedValues: false, // false, by default. // Whether to convert typeof object to map attribute. convertClassInstanceToMap: false, // false, by default.};

const unmarshallOptions = { // Whether to return numbers as a string instead of converting them to native JavaScript numbers. wrapNumbers: false, // false, by default.};

const translateConfig = { marshallOptions, unmarshallOptions };

// Create the DynamoDB Document client.const ddbDocClient = DynamoDBDocumentClient.from(ddbClient, translateConfig);

export { ddbDocClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

에서libs디렉토리는 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를 복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 ddbdoc_get_item.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 여기에는 다음이 포함됩니다.@aws-sdk/lib-dynamodb, 문서 클라이언트 기능을 제공하는 라이브러리 패키지@aws-sdk/client-dynamodb. 그런 다음 문서 클라이언트를 만드는 동안 마샬링 및 비 마샬링을 위해아래 그림과 같이 구성을 설정합니다. 그런 다음, 클라이언트를 생성합니다. 테이블에서 항목을 가져오는 데필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블의 이름, 해당 테이블에 있는해시 키의 이름, 가져올 항목에 대한 해시 키의 값이 포함됩니다. 을 호출합니다.GetCommand메서드를 사용할 DynamoDB 있습니다.

95

Page 104: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 문서 클라이언트 사용

import { GetCommand } from "@aws-sdk/lib-dynamodb";import { ddbDocClient } from "./libs/ddbDocClient.js";

// Set the parameters.const params = { TableName: "TABLE_NAME", /* Convert the key JavaScript object you are retrieving to the required Amazon DynamoDB record. The format of values specifies the datatype. The following list demonstrates different datatype formatting requirements: String: "String", NumAttribute: 1, BoolAttribute: true, ListAttribute: [1, "two", false], MapAttribute: { foo: "bar" }, NullAttribute: null */ Key: { primaryKey: "VALUE", // For example, 'Season': 2. sortKey: "VALUE", // For example, 'Episode': 1; (only required if table has sort key). },};

const run = async () => { try { const data = await ddbDocClient.send(new GetCommand(params)); console.log("Success :", data.Item); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ddbdoc_get_item.js // To use JavaScript, enter 'node ddbdoc_get_item.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

테이블에 항목 넣기만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbDocClient.js. 아래 코드를 복사하여 여기에 붙여넣으면 DynamoDB 문서 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBDocumentClient} from "@aws-sdk/lib-dynamodb";import {ddbClient} from "./ddbClient.js";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"

const marshallOptions = { // Whether to automatically convert empty strings, blobs, and sets to `null`. convertEmptyValues: false, // false, by default. // Whether to remove undefined values while marshalling. removeUndefinedValues: false, // false, by default. // Whether to convert typeof object to map attribute. convertClassInstanceToMap: false, // false, by default.

96

Page 105: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 문서 클라이언트 사용

};

const unmarshallOptions = { // Whether to return numbers as a string instead of converting them to native JavaScript numbers. wrapNumbers: false, // false, by default.};

const translateConfig = { marshallOptions, unmarshallOptions };

// Create the DynamoDB Document client.const ddbDocClient = DynamoDBDocumentClient.from(ddbClient, translateConfig);

export { ddbDocClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

에서libs디렉토리는 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를 복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 ddbdoc_put_item.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 여기에는 다음이 포함됩니다.@aws-sdk/lib-dynamodb, 문서 클라이언트 기능을 제공하는 라이브러리 패키지@aws-sdk/client-dynamodb. 그런 다음 문서 클라이언트를 만드는 동안 마샬링 및 비 마샬링을 위해 아래 그림과 같이 구성을 설정합니다. 그런 다음, 클라이언트를 생성합니다. 항목을 테이블에 쓰는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블의 이름과 업데이트할 항목에대한 설명, 항목에서 설정할 속성의 이름과 값이 포함됩니다. 을 호출합니다.PutCommand메서드를 사용할DynamoDB 있습니다.

import { PutCommand } from "@aws-sdk/lib-dynamodb";import { ddbDocClient } from "./libs/ddbDocClient.js";

// Set the parameters.const params = { TableName: "TABLE_NAME", /* Convert the key JavaScript object you are adding to the required Amazon DynamoDB record. The format of values specifies the datatype. The following list demonstrates different datatype formatting requirements: String: "String", NumAttribute: 1, BoolAttribute: true, ListAttribute: [1, "two", false], MapAttribute: { foo: "bar" }, NullAttribute: null */ Item: { primaryKey: "VALUE_1", // For example, 'Season': 2 sortKey: "VALUE_2", // For example, 'Episode': 2 (only required if table has sort key) NEW_ATTRIBUTE_1: "NEW_ATTRIBUTE_1_VALUE", //For example 'Title': 'The Beginning' },

97

Page 106: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 문서 클라이언트 사용

};

const run = async () => { try { const data = await ddbDocClient.send(new PutCommand(params)); console.log("Success - item added or updated", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ddbdoc_put_item.js // To use JavaScript, enter 'node ddbdoc_put_item.js'

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

테이블에서 항목 업데이트만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbDocClient.js. 아래 코드를 복사하여 여기에 붙여넣으면 DynamoDB 문서 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBDocumentClient} from "@aws-sdk/lib-dynamodb";import {ddbClient} from "./ddbClient.js";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"

const marshallOptions = { // Whether to automatically convert empty strings, blobs, and sets to `null`. convertEmptyValues: false, // false, by default. // Whether to remove undefined values while marshalling. removeUndefinedValues: false, // false, by default. // Whether to convert typeof object to map attribute. convertClassInstanceToMap: false, // false, by default.};

const unmarshallOptions = { // Whether to return numbers as a string instead of converting them to native JavaScript numbers. wrapNumbers: false, // false, by default.};

const translateConfig = { marshallOptions, unmarshallOptions };

// Create the DynamoDB Document client.const ddbDocClient = DynamoDBDocumentClient.from(ddbClient, translateConfig);

export { ddbDocClient };

에서libs디렉토리는 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를 복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });

98

Page 107: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 문서 클라이언트 사용

export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 ddbdoc_update_item.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 여기에는 다음이 포함됩니다.@aws-sdk/lib-dynamodb, 문서 클라이언트 기능을 제공하는 라이브러리 패키지@aws-sdk/client-dynamodb. 그런 다음 문서 클라이언트를 만드는 동안 마샬링 및 비마샬링을 위해 아래 그림과 같이 구성을 설정합니다. 그런 다음, 클라이언트를 생성합니다. 항목을 테이블에 쓰는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블의 이름, 업데이트할 항목의 키,UpdateExpressions에서 값을 할당하는 토큰으로 업데이트할 항목의 속성을 정의하는ExpressionAttributeValues매개 변수를 호출합니다.UpdateCommand메서드를 사용할 DynamoDB있습니다.

import { UpdateCommand } from "@aws-sdk/lib-dynamodb";import { ddbDocClient } from "./libs/ddbDocClient.js";

// Set the parametersconst params = { TableName: "TABLE_NAME", /* Convert the attribute JavaScript object you are updating to the required Amazon DynamoDB record. The format of values specifies the datatype. The following list demonstrates different datatype formatting requirements: String: "String", NumAttribute: 1, BoolAttribute: true, ListAttribute: [1, "two", false], MapAttribute: { foo: "bar" }, NullAttribute: null */ Key: { primaryKey: "VALUE_1", // For example, 'Season': 2. sortKey: "VALUE_2", // For example, 'Episode': 1; (only required if table has sort key). }, // Define expressions for the new or updated attributes UpdateExpression: "set ATTRIBUTE_NAME_1 = :t, ATTRIBUTE_NAME_2 = :s", // For example, "'set Title = :t, Subtitle = :s'" ExpressionAttributeValues: { ":t": "NEW_ATTRIBUTE_VALUE_1", // For example ':t' : 'NEW_TITLE' ":s": "NEW_ATTRIBUTE_VALUE_2", // For example ':s' : 'NEW_SUBTITLE' },};

const run = async () => { try { const data = await ddbDocClient.send(new UpdateCommand(params)); console.log("Success - item added or updated", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ddbdoc_update_item.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

99

Page 108: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 문서 클라이언트 사용

테이블 쿼리만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbDocClient.js. 아래 코드를 복사하여 여기에 붙여넣으면 DynamoDB 문서 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBDocumentClient} from "@aws-sdk/lib-dynamodb";import {ddbClient} from "./ddbClient.js";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"

const marshallOptions = { // Whether to automatically convert empty strings, blobs, and sets to `null`. convertEmptyValues: false, // false, by default. // Whether to remove undefined values while marshalling. removeUndefinedValues: false, // false, by default. // Whether to convert typeof object to map attribute. convertClassInstanceToMap: false, // false, by default.};

const unmarshallOptions = { // Whether to return numbers as a string instead of converting them to native JavaScript numbers. wrapNumbers: false, // false, by default.};

const translateConfig = { marshallOptions, unmarshallOptions };

// Create the DynamoDB Document client.const ddbDocClient = DynamoDBDocumentClient.from(ddbClient, translateConfig);

export { ddbDocClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

에서libs디렉토리는 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를 복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

이 예제에서는 비디오 시리즈에 대한 에피소드 정보가 포함된 테이블을 쿼리하여 지정된 어구가 자막에 포함되어 있는 에피소드 9 이후 두 번째 시즌 에피소드의 에피소드 제목과 자막을 반환합니다.

파일 이름이 ddbdoc_query_item.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 여기에는 다음이 포함됩니다.@aws-sdk/lib-dynamodb, 문서 클라이언트 기능을 제공하는 라이브러리 패키지@aws-sdk/client-dynamodb. 테이블을 쿼리하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 테이블 이름, 쿼리에 필요한 ExpressionAttributeValues, 해당 값을사용하여 쿼리에서 반환되는 항목을 정의하는 KeyConditionExpression이 포함됩니다. 을 호출합니다.QueryCommand메서드를 사용할 수 DynamoDB.

import { QueryCommand } from "@aws-sdk/lib-dynamodb";import { ddbDocClient } from "./libs/ddbDocClient.js";

100

Page 109: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 문서 클라이언트 사용

// Set the parametersconst params = { TableName: "TABLE_NAME", /* Convert the JavaScript object defining the objects to the required Amazon DynamoDB record. The format of values specifies the datatype. The following list demonstrates different datatype formatting requirements: String: "String", NumAttribute: 1, BoolAttribute: true, ListAttribute: [1, "two", false], MapAttribute: { foo: "bar" }, NullAttribute: null */ ExpressionAttributeValues: { ":s": 1, ":e": 1, ":topic": "Title2", }, // Specifies the values that define the range of the retrieved items. In this case, items in Season 2 before episode 9. KeyConditionExpression: "Season = :s and Episode > :e", // Filter that returns only episodes that meet previous criteria and have the subtitle 'The Return' FilterExpression: "contains (Subtitle, :topic)",};

const run = async () => { try { const data = await ddbDocClient.send(new QueryCommand(params)); console.log("Success. Item details: ", data.Items); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ddbdoc_query_item.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

테이블에서 항목 삭제만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ddbDocClient.js. 아래 코드를 복사하여 여기에 붙여넣으면 DynamoDB 문서 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBDocumentClient} from "@aws-sdk/lib-dynamodb";import {ddbClient} from "./ddbClient.js";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"

const marshallOptions = { // Whether to automatically convert empty strings, blobs, and sets to `null`. convertEmptyValues: false, // false, by default. // Whether to remove undefined values while marshalling. removeUndefinedValues: false, // false, by default. // Whether to convert typeof object to map attribute. convertClassInstanceToMap: false, // false, by default.

101

Page 110: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 문서 클라이언트 사용

};

const unmarshallOptions = { // Whether to return numbers as a string instead of converting them to native JavaScript numbers. wrapNumbers: false, // false, by default.};

const translateConfig = { marshallOptions, unmarshallOptions };

// Create the DynamoDB Document client.const ddbDocClient = DynamoDBDocumentClient.from(ddbClient, translateConfig);

export { ddbDocClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

에서libs디렉토리는 파일 이름이 인 Node.js 모듈을 생성합니다.ddbClient.js. 아래 코드를 복사하여 여기에 붙여넣으면 DynamoDB 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS지역으로 이동합니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const ddbClient = new DynamoDBClient({ region: REGION });export { ddbClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 ddbdoc_delete_item.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.여기에는 다음이 포함됩니다.@aws-sdk/lib-dynamodb, 문서 클라이언트 기능을 제공하는 라이브러리 패키지@aws-sdk/client-dynamodb. 그런 다음 문서 클라이언트를 만드는 동안 마샬링 및 비 마샬링을 위해 아래 그림과 같이 구성을 설정합니다. 그런 다음, 클라이언트를 생성합니다. DynamoDB 에 액세스하려면DynamoDB객체를 반환합니다. 테이블에서 항목을 삭제하는 데 필요한 파라미터를 포함하는 JSON 객체를생성합니다. 이 예제에서는 테이블의 이름, 삭제할 항목에 대한 해시 키의 이름과 값이 포함됩니다. 을 호출합니다.DeleteCommand메서드를 사용할 수 DynamoDB.

import { DeleteCommand } from "@aws-sdk/lib-dynamodb";import { ddbDocClient } from "./libs/ddbDocClient.js";

// Set the parametersconst params = { TableName: "TABLE_NAME", /* Convert the key JavaScript object you are deleting to the required Amazon DynamoDB record. The format of values specifies the datatype. The following list demonstrates different datatype formatting requirements: String: "String", NumAttribute: 1, BoolAttribute: true, ListAttribute: [1, "two", false], MapAttribute: { foo: "bar" }, NullAttribute: null */ Key: { primaryKey: "VALUE_1", // For example, 'Season': 2. sortKey: "VALUE_2", // For example, 'Episode': 1; (only required if table has sort key). },

102

Page 111: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 예제

};

const run = async () => { try { const data = await ddbDocClient.send(new DeleteCommand(params)); console.log("Success - item deleted"); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ddbdoc_delete_item.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

Amazon EC2 예제Amazon Elastic Compute Cloud (Amazon EC2) 는 클라우드에서 가상 서버 호스팅을 제공하는 웹 서비스입니다. 이 서비스는 크기 조정 가능한 컴퓨팅 파워를 제공하여 개발자가 더 쉽게 웹 규모 클라우드 컴퓨팅을수행할 수 있도록 설계되었습니다.

Amazon EC2 JavaScript API는EC2클라이언트 클래스입니다. Amazon EC2 클라이언트 클래스 사용에 대한자세한 내용은 다음 단원을 참조하십시오.클래스: EC2API 참조입니다.

주제• Amazon EC2 인스턴스 생성 (p. 103)• Amazon EC2 인스턴스 관리 (p. 105)• Amazon EC2 키 페어 작업 (p. 110)• Amazon EC2 리전 및 가용 영역 사용 (p. 113)• Amazon EC2 보안 그룹 작업 (p. 114)• Amazon EC2 탄력적 IP 주소 사용 (p. 118)

Amazon EC2 인스턴스 생성

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 퍼블릭 Amazon Machine Image (AMI) 에서 Amazon EC2 인스턴스를 생성하는 방법.

103

Page 112: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 인스턴스 생성

• 새 Amazon EC2 인스턴스를 생성하고 해당 인스턴스에 태그를 할당하는 방법.

예제 소개이 예제에서는 Node.js 모듈을 사용하여 Amazon EC2 인스턴스를 생성하고 해당 인스턴스에 key pair 어와태그를 모두 할당합니다. 이 코드는 JavaScript SDK를 사용하여 Amazon EC2 클라이언트 클래스의 다음 메서드를 사용하여 인스턴스를 생성하고 인스턴스에 태그를 지정합니다.

• RunInstancesCommand

• CreateTagsCommand

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

• 키 페어를 생성합니다. 자세한 내용은 단원을 참조하세요Amazon EC2 키 페어 작업 (p. 110) 이 예제에서는 키 페어의 이름을 사용합니다.

Important

이러한 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

인스턴스 생성 및 태그 지정만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ec2Client.js. 아래 코드를복사하여 붙여넣으면 Amazon EC2 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

const { EC2Client } = require( "@aws-sdk/client-ec2");// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create anAmazon EC2 service client object.const ec2Client = new EC2Client({ region: REGION });module.exports = { ec2Client };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 ec2_createinstances.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 필요한 클라이언트와 패키지 설치를 포함하여 위와 같이 SDK를 구성해야 합니다.

용 파라미터를 전달할 객체를 생성합니다.RunInstancesCommand메서드EC2할당할 key pair 어의 이름과실행할 AMI 의 ID를 포함하여 클라이언트 클래스를 생성합니다. 를 호출합니다.RunInstancesCommand메서드를 호출하려면 파라미터를 전달하는 Amazon EC2 클라이언트 서비스 객체를 호출하기 위한 비동기 함수를 생성합니다.

다음 코드는Name태그를 새 인스턴스로 추가할 수 있습니다. 이 인스턴스는 Amazon EC2 콘솔에서 인식하고이름필드 인스턴스 목록의. 한 인스턴스에 최대 50개의 태그를 추가할 수 있으며, CreateTagsCommand메서드에 대한 단일 호출에서 모두 추가할 수 있습니다.

Note

ReplaceAMI_ID실행할 Amazon 머신 이미지 (AMI) ID를 입력하고버 버 버버를 사용하여 AMI ID에 할당할 수 있습니다.

104

Page 113: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 인스턴스 관리

// Import required AWS SDK clients and commands for Node.jsconst { CreateTagsCommand, RunInstancesCommand} = require("@aws-sdk/client-ec2");import { ec2Client } from "./libs/ec2Client";

// Set the parametersconst instanceParams = { ImageId: "AMI_ID", //AMI_ID InstanceType: "t2.micro", KeyName: "KEY_PAIR_NAME", //KEY_PAIR_NAME MinCount: 1, MaxCount: 1,};

const run = async () => { try { const data = await ec2Client.send(new RunInstancesCommand(instanceParams)); console.log(data.Instances[0].InstanceId); const instanceId = data.Instances[0].InstanceId; console.log("Created instance", instanceId); // Add tags to the instance const tagParams = { Resources: [instanceId], Tags: [ { Key: "Name", Value: "SDK Sample", }, ], }; try { const data = await ec2Client.send(new CreateTagsCommand(tagParams)); console.log("Instance tagged"); } catch (err) { console.log("Error", err); } } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ec2_createinstances.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

Amazon EC2 인스턴스 관리

이 Node.js 코드 예제는 다음을 보여 줍니다.

• Amazon EC2 인스턴스에 대한 기본 정보를 가져오는 방법.

105

Page 114: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 인스턴스 관리

• Amazon EC2 인스턴스의 세부 모니터링을 시작하고 중지하는 방법.• Amazon EC2 인스턴스를 시작하고 중지하는 방법.• Amazon EC2 인스턴스를 재부팅하는 방법.

시나리오이 예제에서는 일련의 Node.js 모듈을 사용하여 여러 가지 기본 인스턴스 관리 작업을 수행합니다. 이Node.js 모듈은 JavaScript SDK를 사용하여 다음 Amazon EC2 클라이언트 클래스 메서드를 사용하여 인스턴스를 관리합니다.

• DescribeInstancesCommand

• MonitorInstancesCommand

• UnmonitorInstancesCommand

• StartInstancesCommand

• StopInstancesCommand

• RebootInstancesCommand

Amazon EC2 인스턴스의 수명 주기에 대한 자세한 내용은 다음 단원을 참조하세요.인스턴스 수명 주기의Linux 인스턴스용 Amazon EC2 사용 설명서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

• Amazon EC2 인스턴스를 생성합니다. Amazon EC2 인스턴스 생성에 대한 자세한 내용은 단원을 참조하십시오.Amazon EC2 인스턴스의Linux 인스턴스용 Amazon EC2 사용 설명서또는Amazon EC2 인스턴스의Windows 인스턴스에 대한 Amazon EC2 사용 설명서.

Important

이러한 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

인스턴스 설명만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ec2Client.js. 아래 코드를복사하여 붙여넣으면 Amazon EC2 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

const { EC2Client } = require( "@aws-sdk/client-ec2");// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create anAmazon EC2 service client object.const ec2Client = new EC2Client({ region: REGION });module.exports = { ec2Client };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 ec2_describeinstances.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 를 호출합니다.DescribeInstancesCommand메서드를 호출하여 인스턴스에 대한 세부 설명을 검색합니다.

106

Page 115: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 인스턴스 관리

// Import required AWS SDK clients and commands for Node.jsimport { DescribeInstancesCommand } from "@aws-sdk/client-ec2";import { ec2Client } from "./libs/ec2Client";const run = async () => { try { const data = await ec2Client.send(new DescribeInstancesCommand({})); console.log("Success", JSON.stringify(data)); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ec2_describeinstances.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

인스턴스 모니터링 관리만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ec2Client.js. 아래 코드를복사하여 붙여넣으면 Amazon EC2 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

const { EC2Client } = require( "@aws-sdk/client-ec2");// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create anAmazon EC2 service client object.const ec2Client = new EC2Client({ region: REGION });module.exports = { ec2Client };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 ec2_monitorinstances.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 모니터링을 제어하려는 인스턴스의 인스턴스 ID를 추가합니다.

명령 줄 인수의 값 (ON또는OFF) 를 호출하려면MonitorInstancesCommand메서드를 호출하려면 지정된인스턴스에 대한 세부 모니터링을 시작하거나UnmonitorInstancesCommand메서드를 사용합니다.

Note

ReplaceINSTANCE-ID모니터링을 제어하려는 인스턴스의 ID와STATE다음 중 하나를 사용하여ON또는OFF.

// Import required AWS SDK clients and commands for Node.jsimport { MonitorInstancesCommand, UnmonitorInstancesCommand,} from "@aws-sdk/client-ec2";import { ec2Client } from "./libs/ec2Client";

// Set the parametersconst params = { InstanceIds: ["INSTANCE_ID"] }; // Array of INSTANCE_IDsconst state = "STATE"; // STATE; i.e., 'ON' or 'OFF'

const run = async () => { if (process.argv[4].toUpperCase() === "ON") { try { const data = await ec2Client.send(new MonitorInstancesCommand(params));

107

Page 116: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 인스턴스 관리

console.log("Success", data.InstanceMonitorings); return data; } catch (err) { console.log("Error", err); } } else if (process.argv[4].toUpperCase() === "OFF") { try { const data = await ec2Client.send(new UnmonitorInstancesCommand(params)); console.log("Success", data.InstanceMonitorings); return data; } catch (err) { console.log("Error", err); } }};run();

이 예제를 실행하려면 명령 프롬프트에서 다음을 입력하고ON를 클릭하여 세부 모니터링을 시작하거나OFF을 클릭하여 모니터링을 중단합니다.

node ec2_monitorinstances.js ON

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

인스턴스 시작 및 중지만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ec2Client.js. 아래 코드를복사하여 붙여넣으면 Amazon EC2 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

const { EC2Client } = require( "@aws-sdk/client-ec2");// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create anAmazon EC2 service client object.const ec2Client = new EC2Client({ region: REGION });module.exports = { ec2Client };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 ec2_startstopinstances.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 시작하거나 중지할 인스턴스의 인스턴스 ID를 추가합니다.

명령 줄 인수의 값 (START또는STOP) 를 호출하려면StartInstancesCommand메서드를 사용하여 지정된인스턴스를 시작하거나StopInstancesCommand메서드를 사용하여 중지할 수 있습니다.

Note

ReplaceINSTANCE-ID시작하거나 중지할 인스턴스의 인스턴스 ID를 추가하고STATE다음으로 바꿉니다.START또는STOP.

// Import required AWS SDK clients and commands for Node.js.import { StartInstancesCommand, StopInstancesCommand,} from "@aws-sdk/client-ec2";import { ec2Client } from "./libs/ec2Client";

// Set the parametersconst params = { InstanceIds: ["INSTANCE_ID"] }; // Array of INSTANCE_IDsconst command = "STATE"; // STATE i.e. "START" or "STOP"

108

Page 117: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 인스턴스 관리

const run = async () => { if (command.toUpperCase() === "START") { try { const data = await ec2Client.send(new StartInstancesCommand(params)); console.log("Success", data.StartingInstances); return data; } catch (err) { console.log("Error2", err); } } else if (process.argv[2].toUpperCase() === "STOP") { try { const data = await ec2Client.send(new StopInstancesCommand(params)); console.log("Success", data.StoppingInstances); return data; } catch (err) { console.log("Error", err); } }};run();

이 예제를 실행하려면 명령 프롬프트에서 다음을 입력하여 다음을 지정합니다.START를 클릭하여 인스턴스를 시작하거나STOP그들을 막을 수 있습니다.

node ec2_startstopinstances.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

인스턴스 재부팅만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ec2Client.js. 아래 코드를복사하여 붙여넣으면 Amazon EC2 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

const { EC2Client } = require( "@aws-sdk/client-ec2");// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create anAmazon EC2 service client object.const ec2Client = new EC2Client({ region: REGION });module.exports = { ec2Client };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 ec2_rebootinstances.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 재부팅할 인스턴스의 인스턴스 ID를 추가합니다. 를 호출합니다.RebootInstancesCommand메서드EC2클라이언트 서비스 개체를 사용하여 지정된 인스턴스를 재부팅합니다.

Note

ReplaceINSTANCE-ID재부팅할 인스턴스의 ID를 입력합니다.

// Import required AWS SDK clients and commands for Node.jsimport { RebootInstancesCommand } from "@aws-sdk/client-ec2";import { ec2Client } from "./libs/ec2Client.js";

// Set the parametersconst params = { InstanceIds: ["INSTANCE_ID"] }; // Array of INSTANCE_IDs

const run = async () => { try { const data = await ec2Client.send(new RebootInstancesCommand(params));

109

Page 118: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 키 페어 작업

console.log("Success", data.InstanceMonitorings); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ec2_rebootinstances.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

Amazon EC2 키 페어 작업

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 키 페어에 대한 정보를 검색하는 방법.• key pair 어를 생성하여 Amazon EC2 인스턴스에 액세스하는 방법.• 기존 키 페어를 삭제하는 방법.

시나리오Amazon EC2는 퍼블릭 키 암호화 기법을 사용하여 로그인 정보를 암호화 및 해독합니다. 퍼블릭 키 암호화기법에서는 퍼블릭 키를 사용하여 데이터를 암호화한 후 수신자가 개인 키를 사용하여 해당 데이터를 해독합니다. 퍼블릭 키와 프라이빗 키를 키 페어라고 합니다.

이 예제에서는 일련의 Node.js 모듈을 사용하여 여러 가지 Amazon EC2 key pair 관리 작업을 수행합니다.이 Node.js 모듈은 JavaScript SDK를 사용하여 Amazon EC2 클라이언트 클래스의 다음 메서드를 사용하여인스턴스를 관리합니다.

• CreateKeyPairCommand

• DeleteKeyPairCommand

• DescribeKeyPairsCommand

Amazon EC2 키 페어에 대한 자세한 내용은 다음 단원을 참조하십시오.Amazon EC2 키 페어의Linux 인스턴스용 Amazon EC2 사용 설명서또는Amazon EC2 키 페어 및 Windows 인스턴스의Windows 인스턴스에 대한 Amazon EC2 사용 설명서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.

• JavaScript Amazon EC2 클라이언트 용 SDK를 설치합니다. 자세한 정보는 버전 3의 새로운 기능 (p. 1)을참조하십시오.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

110

Page 119: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 키 페어 작업

Important

이러한 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

키 페어 설명만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ec2Client.js. 아래 코드를복사하여 붙여넣으면 Amazon EC2 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

const { EC2Client } = require( "@aws-sdk/client-ec2");// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create anAmazon EC2 service client object.const ec2Client = new EC2Client({ region: REGION });module.exports = { ec2Client };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 ec2_describekeypairs.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. DescribeKeyPairsCommand 메서드가 모든 키 페어에 대한 설명을 반환하는 데 필요한 파라미터를 담을 비어 있는 JSON 객체를 생성합니다. JSON 파일에 포함된 파라미터의 KeyName 부분에 있는 키 페어의이름 배열을 DescribeKeyPairsCommand 메서드에 제공할 수도 있습니다.

// Import required AWS SDK clients and commands for Node.jsimport { DescribeKeyPairsCommand } from "@aws-sdk/client-ec2";import { ec2Client } from "./libs/ec2Client";const run = async () => { try { const data = await ec2Client.send(new DescribeKeyPairsCommand({})); console.log("Success", JSON.stringify(data.KeyPairs)); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ec2_describekeypairs.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

키 페어 생성만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ec2Client.js. 아래 코드를복사하여 붙여넣으면 Amazon EC2 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

const { EC2Client } = require( "@aws-sdk/client-ec2");// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create anAmazon EC2 service client object.const ec2Client = new EC2Client({ region: REGION });module.exports = { ec2Client };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

111

Page 120: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 키 페어 작업

각 키 페어에는 이름이 필요합니다. Amazon EC2는 사용자가 키 이름으로 지정한 이름에 퍼블릭 키를 연결합니다. 파일 이름이 ec2_createkeypair.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야합니다. 필요한 클라이언트와 패키지 설치를 포함하여 위와 같이 SDK를 구성해야 합니다. 키 페어의 이름을지정할 JSON 파라미터를 생성한 다음 해당 파라미터를 전달하여 CreateKeyPairCommand 메서드를 호출합니다.

Note

Replace버버 버 버버를 key pair 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { CreateKeyPairCommand } from "@aws-sdk/client-ec2";import { ec2Client } from "./libs/ec2Client";

// Set the parametersconst params = { KeyName: "MY_KEY_PAIR" }; //MY_KEY_PAIR

const run = async () => { try { const data = await ec2Client.send(new CreateKeyPairCommand(params)); console.log(JSON.stringify(data)); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ec2_createkeypair.js

예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

key pair 삭제만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ec2Client.js. 아래 코드를복사하여 붙여넣으면 Amazon EC2 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

const { EC2Client } = require( "@aws-sdk/client-ec2");// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create anAmazon EC2 service client object.const ec2Client = new EC2Client({ region: REGION });module.exports = { ec2Client };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 ec2_deletekeypair.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.필요한 클라이언트와 패키지 설치를 포함하여 위와 같이 SDK를 구성해야 합니다. Amazon EC2 액세스하려면EC2클라이언트 서비스 객체를 생성합니다. 삭제하려는 키 페어의 이름을 지정할 JSON 파라미터를 생성합니다. 그런 다음 DeleteKeyPairCommand 메서드를 호출합니다.

Note

Replace버 버 버버삭제할 key pair 어의 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { DeleteKeyPairCommand } from "@aws-sdk/client-ec2";

112

Page 121: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 리전 및 가용 영역 사용

import { ec2Client } from "./libs/ec2Client";

// Set the parametersconst params = { KeyName: "KEY_PAIR_NAME" }; //KEY_PAIR_NAME

const run = async () => { try { const data = await ec2Client.send(new DeleteKeyPairCommand(params)); console.log("Key Pair Deleted"); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ec2_deletekeypair.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

Amazon EC2 리전 및 가용 영역 사용

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 에 대한 설명을 검색하는 방법AWS리전 및 가용 영역

시나리오Amazon EC2 전 세계 여러 위치에서 호스팅되고 있습니다. 이 위치들은 리전과 가용 영역으로 구성됩니다.각 리전은 개별 지리 영역입니다. 각 리전은 가용 영역이라고 알려진 격리된 위치를 여러 개 가지고 있습니다. Amazon EC2 여러 위치에 인스턴스와 데이터를 배치할 수 있는 기능을 제공합니다.

이 예제에서는 일련의 Node.js 모듈을 사용하여 리전과 가용 영역에 대한 세부 정보를 검색합니다. 이Node.js 모듈은 JavaScript SDK를 사용하여 Amazon EC2 클라이언트 클래스의 다음 메서드를 사용하여 인스턴스를 관리합니다.

• DescribeAvailabilityZonesCommand

• DescribeRegionsCommand

리전 및 가용 영역에 대한 자세한 내용은 다음 단원을 참조하세요.리전 및 가용 영역의Linux 인스턴스용Amazon EC2 사용 설명서또는리전 및 가용 영역의Windows 인스턴스에 대한 Amazon EC2 사용 설명서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

113

Page 122: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 보안 그룹 작업

Important

이러한 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

리전 및 가용 영역 설명만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ec2Client.js. 아래 코드를복사하여 붙여넣으면 Amazon EC2 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

const { EC2Client } = require( "@aws-sdk/client-ec2");// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create anAmazon EC2 service client object.const ec2Client = new EC2Client({ region: REGION });module.exports = { ec2Client };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 ec2_describeregionsandzones.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 파라미터로 전달할 비어 있는 JSON 객체를 생성합니다. 이 객체는 사용 가능한 모든 설명을 반환합니다. 그런 다음 DescribeRegionsCommand 및 DescribeAvailabilityZonesCommand 메서드를호출합니다.

// Import required AWS SDK clients and commands for Node.jsimport { DescribeRegionsCommand } from "@aws-sdk/client-ec2";import { ec2Client } from "./libs/ec2Client";

const run = async () => { try { const data = await ec2Client.send(new DescribeRegionsCommand({})); console.log("Availability Zones: ", data.Regions); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ec2_describeregionsandzones.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

Amazon EC2 보안 그룹 작업

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 보안 그룹에 대한 정보를 검색하는 방법.• Amazon EC2 인스턴스에 액세스하기 위해 보안 그룹을 생성하는 방법.

114

Page 123: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 보안 그룹 작업

• 기존 보안 그룹을 삭제하는 방법.

시나리오Amazon EC2 보안 그룹은 하나 이상의 인스턴스에 대한 트래픽을 제어하는 가상 방화벽 역할을 합니다. 연결된 인스턴스에서 트래픽을 주고 받을 수 있도록 각 보안 그룹에 규칙을 추가합니다. 언제든지 보안 그룹에대한 규칙을 수정할 수 있습니다. 새 규칙은 보안 그룹과 연결된 모든 인스턴스에 자동으로 적용됩니다.

이 예제에서는 일련의 Node.js 모듈을 사용하여 보안 그룹과 관련된 여러 가지 Amazon EC2 작업을 수행합니다. 이 Node.js 모듈은 JavaScript SDK를 사용하여 Amazon EC2 클라이언트 클래스의 다음 메서드를 사용하여 인스턴스를 관리합니다.

• DescribeSecurityGroupsCommand

• AuthorizeSecurityGroupIngressCommand

• CreateSecurityGroupCommand

• DescribeVpcsCommand

• DeleteSecurityGroupCommand

Amazon EC2 보안 그룹에 대한 자세한 내용은 단원을 참조하십시오.Linux 인스턴스에 대한 Amazon EC2Amazon EC2 Amazon 보안 그룹의Linux 인스턴스용 Amazon EC2 사용 설명서또는Windows 인스턴스에 대한 Amazon EC2 보안 그룹의Amazon EC2 사용 설명서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

이러한 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

보안 그룹 설명만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ec2Client.js. 아래 코드를복사하여 붙여넣으면 Amazon EC2 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

const { EC2Client } = require( "@aws-sdk/client-ec2");// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create anAmazon EC2 service client object.const ec2Client = new EC2Client({ region: REGION });module.exports = { ec2Client };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 ec2_describesecuritygroups.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 설명하려는 보안 그룹의 그룹 ID를 포함하여 파라미터로 전달할 JSON 객체를 생성합니다. 를 호출합니다.DescribeSecurityGroupsCommandAmazon EC2 서비스 객체의 메서드를 호출합니다.

Note

Replace버버_GROUP_ID설명하려는 보안 그룹의 그룹 ID를 입력합니다.

115

Page 124: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 보안 그룹 작업

// Import required AWS SDK clients and commands for Node.jsimport { DescribeSecurityGroupsCommand } from "@aws-sdk/client-ec2";import { ec2Client } from "./libs/ec2Client";

// Set the parametersconst params = { GroupIds: ["SECURITY_GROUP_ID"] }; //SECURITY_GROUP_ID

const run = async () => { try { const data = await ec2Client.send( new DescribeSecurityGroupsCommand(params) ); console.log("Success", JSON.stringify(data.SecurityGroups)); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ec2_describesecuritygroups.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

보안 그룹 및 규칙 생성만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.ec2Client.js. 아래 코드를복사하여 붙여넣으면 Amazon EC2 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

const { EC2Client } = require( "@aws-sdk/client-ec2");// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create anAmazon EC2 service client object.const ec2Client = new EC2Client({ region: REGION });module.exports = { ec2Client };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 ec2_createsecuritygroup.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야합니다. 보안 그룹의 이름, 설명, VPC의 ID를 지정하는 파라미터를 위한 JSON 객체를 생성합니다. 이 파라미터를 CreateSecurityGroupCommand 메서드에 전달합니다.

보안 그룹을 성공적으로 생성한 후 인바운드 트래픽을 허용하기 위한 규칙을 정의할 수 있습니다. AmazonEC2 인스턴스가 트래픽을 수신할 IP 프로토콜과 인바운드 포트를 지정하는 파라미터를 위한 JSON 객체를생성합니다. 이 파라미터를 AuthorizeSecurityGroupIngressCommand 메서드에 전달합니다.

Note

Replace버 버 버버를 key pair 이름,DESCRIPTION보안 그룹에 대한 설명을 표시합니다.버버 버버 버버보안 그룹의 이름으로 바꾸고버버_GROUP_ID보안 그룹의 ID로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { DescribeVpcsCommand, CreateSecurityGroupCommand, AuthorizeSecurityGroupIngressCommand,

116

Page 125: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 보안 그룹 작업

} from "@aws-sdk/client-ec2";import { ec2Client } from "./libs/ec2Client";

// Set the parametersconst params = { KeyName: "KEY_PAIR_NAME" }; //KEY_PAIR_NAME

// Variable to hold a ID of a VPCconst vpc = null;

const run = async () => { try { const data = await ec2Client.send(new DescribeVpcsCommand(params)); return data; const vpc = data.Vpcs[0].VpcId; const paramsSecurityGroup = { Description: "DESCRIPTION", //DESCRIPTION GroupName: "SECURITY_GROUP_NAME", // SECURITY_GROUP_NAME VpcId: vpc, }; } catch (err) { console.log("Error", err); } try { const data = await ec2Client.send(new CreateSecurityGroupCommand(params)); const SecurityGroupId = data.GroupId; console.log("Success", SecurityGroupId); return data; } catch (err) { console.log("Error", err); } try { const paramsIngress = { GroupId: "SECURITY_GROUP_ID", //SECURITY_GROUP_ID IpPermissions: [ { IpProtocol: "tcp", FromPort: 80, ToPort: 80, IpRanges: [{ CidrIp: "0.0.0.0/0" }], }, { IpProtocol: "tcp", FromPort: 22, ToPort: 22, IpRanges: [{ CidrIp: "0.0.0.0/0" }], }, ], }; const data = await ec2Client.send( new AuthorizeSecurityGroupIngressCommand(paramsIngress) ); console.log("Ingress Successfully Set", data); return data; } catch (err) { console.log("Cannot retrieve a VPC", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ec2_createsecuritygroup.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

117

Page 126: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 탄력적 IP 주소 사용

보안 그룹 삭제파일 이름이 ec2_deletesecuritygroup.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야합니다. Amazon EC2 액세스하려면EC2클라이언트 서비스 객체를 생성합니다. 삭제할 보안 그룹의 이름을지정할 JSON 파라미터를 생성합니다. 그런 다음 DeleteSecurityGroupCommand 메서드를 호출합니다.

Note

Replace버버_GROUP_ID보안 그룹 ID로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { DeleteSecurityGroupCommand } from "@aws-sdk/client-ec2";import { ec2Client } from "./libs/ec2Client";// Set the parametersconst params = { GroupId: "SECURITY_GROUP_ID" }; //SECURITY_GROUP_ID

const run = async () => { try { const data = await ec2Client.send(new DeleteSecurityGroupCommand(params)); console.log("Security Group Deleted"); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ec2_deletesecuritygroup.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

Amazon EC2 탄력적 IP 주소 사용

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 탄력적 IP 주소에 대한 설명을 검색하는 방법.• 탄력적 IP 주소를 할당하고 릴리스하는 방법.• Amazon EC2 인스턴스와 탄력적 IP 주소를 연결하는 방법.

시나리오탄력적 IP 주소는 동적 클라우드 컴퓨팅을 위해 설계된 정적 IP 주소입니다. 탄력적 IP 주소는AWS계정에 로그인합니다. 퍼블릭 IP 주소로, 인터넷에서 연결할 수 있습니다. 인스턴스에 퍼블릭 IP 주소가 없는 경우 탄력적 IP 주소를 인스턴스에 연결하여 인터넷과의 통신을 활성화할 수 있습니다.

이 예제에서는 일련의 Node.js 모듈을 사용하여 탄력적 IP 주소와 관련된 여러 가지 Amazon EC2 작업을 수행합니다. 이 Node.js 모듈은 JavaScript SDK를 사용하여 Amazon EC2 클라이언트 클래스의 다음 메서드를사용하여 탄력적 IP 주소를 관리합니다.

118

Page 127: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 탄력적 IP 주소 사용

• DescribeAddressesCommand

• AllocateAddressCommand

• AssociateAddressCommand

• ReleaseAddressCommand

Amazon EC2 탄력적 IP 주소에 대한 자세한 내용은 단원을 참조하십시오.탄력적 IP 주소의Linux 인스턴스용Amazon EC2 사용 설명서또는탄력적 IP 주소의Windows 인스턴스에 대한 Amazon EC2 사용 설명서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

• Amazon EC2 인스턴스를 생성합니다. Amazon EC2 인스턴스 생성에 대한 자세한 내용은 단원을 참조하십시오.Amazon EC2 인스턴스의Linux 인스턴스용 Amazon EC2 사용 설명서또는Amazon EC2 인스턴스의Windows 인스턴스에 대한 Amazon EC2 사용 설명서.

Important

이러한 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

탄력적 IP 주소 설명파일 이름이 ec2_describeaddresses.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야합니다. VPC에 있는 항목에서 반환되는 주소를 필터링하는 파라미터로 전달할 JSON 객체를 생성합니다. 모든 탄력적 IP 주소에 대한 설명을 검색하려면 파라미터 JSON에서 필터를 생략합니다. 를 호출합니다.DescribeAddressesCommandAmazon EC2 서비스 객체의 메서드를 호출합니다.

// Import required AWS SDK clients and commands for Node.jsimport { EC2Client, DescribeAddressesCommand } from "@aws-sdk/client-ec2";import { ec2Client } from "./libs/ec2Client";// Set the parametersconst params = { Filters: [{ Name: "domain", Values: ["vpc"] }],};

const run = async () => { try { const data = await ec2Client.send(new DescribeAddressesCommand(params)); console.log(JSON.stringify(data.Addresses)); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ec2_describeaddresses.js

119

Page 128: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 탄력적 IP 주소 사용

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

탄력적 IP 주소를 Amazon EC2 인스턴스와 할당 및 연결파일 이름이 ec2_allocateaddress.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. Amazon EC2 액세스하려면EC2클라이언트 서비스 객체를 생성합니다. 탄력적 IP 주소를 할당하는 데 사용되는 파라미터를 위한 JSON 객체를 생성합니다. 이 경우에는 Domain을 VPC로 지정합니다. 를 호출합니다.AllocateAddressCommandAmazon EC2 서비스 객체의 메서드를 호출합니다.

호출이 성공하는 경우 콜백 함수에 대한 data 파라미터에는 할당된 탄력적 IP 주소를 식별하는AllocationId 속성이 있습니다.

Amazon EC2 인스턴스에 탄력적 IP 주소를 연결하는 데 사용되는 파라미터를 위한 JSON 객체를 생성합니다.AllocationId새로 할당된 주소의InstanceIdAmazon EC2 인스턴스의 인스턴스를 생성합니다. 를 호출합니다.AssociateAddressesCommandAmazon EC2 서비스 객체의 메서드를 호출합니다.

Note

ReplaceINSTANCE-IDAmazon EC2 인스턴스의 ID로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { AllocateAddressCommand, AssociateAddressCommand,} from "@aws-sdk/client-ec2";import { ec2Client } from "./libs/ec2Client";

// Set the parametersconst paramsAllocateAddress = { Domain: "vpc" };

const run = async () => { try { const data = await ec2Client.send( new AllocateAddressCommand(paramsAllocateAddress) ); console.log("Address allocated:", data.AllocationId); return data; var paramsAssociateAddress = { AllocationId: data.AllocationId, InstanceId: "INSTANCE_ID", //INSTANCE_ID }; } catch (err) { console.log("Address Not Allocated", err); } try { const results = await ec2Client.send( new AssociateAddressCommand(paramsAssociateAddress) ); console.log("Address associated:", results.AssociationId); return results; } catch (err) { console.log("Address Not Associated", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ec2_allocateaddress.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

120

Page 129: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드MediaConvert

탄력적 IP 주소 해제파일 이름이 ec2_releaseaddress.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야합니다. 필요한 클라이언트와 패키지 설치를 포함하여 위와 같이 SDK를 구성해야 합니다. AmazonEC2 액세스하려면EC2클라이언트 서비스 객체를 생성합니다. 탄력적 IP 주소를 릴리스하는 데 사용되는 파라미터를 위한 JSON 객체를 생성합니다. 이 경우에는 탄력적 IP 주소의 AllocationId가 지정됩니다. 탄력적 IP 주소를 릴리스하면 Amazon EC2 인스턴스에서 연결이 해제됩니다. 를 호출합니다.ReleaseAddressCommandAmazon EC2 서비스 객체의 메서드를 호출합니다.

Note

Replace버버 ID탄력적 IP 주소에 대한 할당 ID로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { ReleaseAddressCommand } from "@aws-sdk/client-ec2";import { ec2Client } from "./libs/ec2Client";

// Set the parametersconst paramsReleaseAddress = { AllocationId: "ALLOCATION_ID" }; //ALLOCATION_ID

const run = async () => { try { const data = await ec2Client.send(new ReleaseAddressCommand({})); console.log("Address released"); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ec2_releaseaddress.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

AWS Elemental MediaConvert 예제AWS Elemental MediaConvert t는 브로드캐스트급 기능을 갖춘 파일 기반 비디오 트랜스코딩 서비스입니다.이 서비스를 사용하여 인터넷에서 브로드캐스트 및 비디오 온디맨드(VOD) 전달용 자산을 생성할 수 있습니다. 자세한 내용은 AWS Elemental MediaConvert 사용 설명서를 참조하십시오.

MediaConvert 용 JavaScript API는MediaConvert클라이언트 클래스입니다. 자세한 내용은 단원을 참조하십시오.클래스: MediaConvertAPI 참조입니다.

주제• MediaConvert 용 계정별 엔드포인트입니다. (p. 122)• MediaConvert t에서 트랜스코딩 작업 만들기 및 관리 (p. 123)

121

Page 130: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드계정별 엔드포인트입니다.

• 미디어에서 작업 템플릿 사용 변환하기 (p. 129)

MediaConvert 용 계정별 엔드포인트입니다.

이 Node.js 코드 예제는 다음을 보여 줍니다.

• MediaConvert t에서 계정별 엔드포인트를 검색하는 방법.

시나리오이 예제에서는 Node.js 모듈을 사용하여 MediaConvert t를 호출하고 계정별 엔드포인트를 검색합니다. 서비스 기본 엔드포인트에서 엔드포인트 URL을 검색할 수 있으므로 계정별 엔드포인트가 필요 없습니다. 이 코드는 JavaScript SDK를 사용하여 MediaConvert 클라이언트 클래스의 다음 메서드를 사용하여 엔드포인트를 검색합니다.

• DescribeEndpointsCommand

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈입니다. 안내를 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

• 출력 파일이 저장된 Amazon S3 버킷 및 입력 파일에 대한 액세스 권한을 MediaConvert t에 부여하는 IAM역할을 생성합니다. 자세한 내용은 단원을 참조하십시오.IAM 권한 설정의AWS Elemental MediaConvert사용자 안내서.

Important

이 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드가 있습니다..그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

엔드포인트 URL만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.emcClientGet.js. 아래 코드를 복사하여 붙여넣으면 MediaConvert 클라이언트 객체가 만들어집니다. ReplaceREGION와 함께AWS리전.

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert";// Set the AWS Region.const REGION = "REGION";//Set the account end point.const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com" };

122

Page 131: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드작업 생성 및 관리

//Set the MediaConvert Service Objectconst emcClient = new MediaConvertClient(ENDPOINT);export { emcClient };

이 예제 코드는(GitHub 에 있음).

파일 이름이 emc_getendpoint.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.

용 빈 요청 파라미터를 전달할 객체를 생성합니다.DescribeEndpointsCommand메서드를 호출합니다. 를호출하려면DescribeEndpointsCommand메서드를 호출하려면 파라미터를 전달하는 MediaConvert 클라이언트 서비스 객체를 호출하기 위한 promise를 생성합니다.

Note

ReplaceAMI_ID를 실행할 AMI 의 ID로 바꾸고버 버 버버를 사용하여 AMI ID에 할당할 수 있습니다.

// Import required AWS-SDK clients and commands for Node.jsimport { DescribeEndpointsCommand } from "@aws-sdk/client-mediaconvert";import { emcClientGet } from "./libs/emcClientGet.js";

//set the parametersconst params = { MaxResults: 0 };

const run = async () => { try { // Load the required SDK for JavaScript modules // Create a new service object and set MediaConvert to customer endpoint const params = { MaxResults: 0 }; const data = await emcClientGet.send(new DescribeEndpointsCommand(params)); console.log("Your MediaConvert endpoint is ", data.Endpoints); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node emc_getendpoint.js

이 예제 코드는(GitHub 에 있음).

MediaConvert t에서 트랜스코딩 작업 만들기 및 관리

이 Node.js 코드 예제는 다음을 보여 줍니다.

• MediaConvert t에서 사용할 계정별 엔드포인트를 지정하는 방법.• MediaConvert 작업을 생성하는 방법.• 트랜스코딩 작업을 취소하는 방법.• 완료된 트랜스코딩 작업에 대한 JSON을 검색하는 방법.

123

Page 132: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드작업 생성 및 관리

• 최근에 생성된 최대 20개 작업에 대한 JSON 배열을 검색하는 방법.

시나리오이 예제에서는 Node.js 모듈을 사용하여 트랜스코딩 작업을 생성하고 관리할 MediaConvert t를 호출합니다.이 코드는 JavaScript SDK를 사용하여 MediaConvert 클라이언트 클래스의 다음 메서드를 사용하여 이 작업을 수행합니다.

• CreateJobCommand

• CancelJobCommand

• GetJobCommand

• ListJobsCommand

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈입니다. 안내를 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

• 작업 입력 파일 및 출력 파일을 위한 스토리지를 제공하는 Amazon S3 버킷을 생성하고 구성합니다. 자세한 내용은 단원을 참조하십시오.파일 저장소 만들기의AWS Elemental MediaConvert 사용자 안내서.

• 입력 스토리지를 위해 프로비저닝한 Amazon S3 버킷에 입력 비디오를 업로드합니다. 지원되는 입력 비디오 코덱 및 컨테이너 목록은 단원을 참조하십시오.지원되는 입력 코덱 및 컨테이너의AWS ElementalMediaConvert 사용자 안내서.

• 출력 파일이 저장된 Amazon S3 버킷 및 입력 파일에 대한 액세스 권한을 MediaConvert t에 부여하는 IAM역할을 생성합니다. 자세한 내용은 단원을 참조하십시오.IAM 권한 설정의AWS Elemental MediaConvert사용자 안내서.

Important

이 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드가 있습니다..그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

SDK 구성필요한 클라이언트 및 패키지 다운로드를 포함하여 이전에 표시된 대로 SDK를 구성합니다. MediaConvert t는 각 계정에 사용자 지정 엔드포인트를 사용하므로MediaConvert클라이언트 클래스를 생성하여 계정별엔드포인트를 사용할 수 있습니다. 이렇게 하려면 mediaconvert(endpoint)에서 endpoint 파라미터를설정합니다.

// Import required AWS-SDK clients and commands for Node.jsimport { CreateJobCommand } from "@aws-sdk/client-mediaconvert";import { emcClient } from "./libs/emcClient.js";

간단한 트랜스코딩 작업 정의만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.emcClient.js. 아래 코드를 복사하여 붙여넣으면 MediaConvert 클라이언트 객체가 만들어집니다. ReplaceREGION와 함께AWS

124

Page 133: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드작업 생성 및 관리

리전. Replace버버버버버를 MediaConvert 계정 끝점과 함께 사용할 수 있습니다. 이 끝점은Account콘솔의MediaConvert 페이지

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert";// Set the AWS Region.const REGION = "REGION";//Set the account end point.const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com" };//Set the MediaConvert Service Objectconst emcClient = new MediaConvertClient(ENDPOINT);export { emcClient };

이 예제 코드는(GitHub 에 있음).

파일 이름이 emc_createjob.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 트랜스코드 작업 파라미터를 정의하는 JSON을 생성합니다.

이러한 파라미터는 매우 세부적입니다. 이AWS Elemental MediaConvert 콘솔를 선택하여 JSON 작업 매개변수를 생성한 다음 콘솔에서 작업 설정을 선택하고작업 표시 JSON의 하단에서작업섹션을 참조합니다. 이예제는 단순 작업용 JSON을 보여줍니다.

Note

Replace버버 버버버를 MediaConvert 작업 큐로 바꿉니다.버: 버버버 버버IAM 역할의 Amazon 리소스 이름 (ARN) 을 적어둡니다.버버_버버_버버를 대상 버킷 이름으로 바꿉니다 (예: “s3: //OUTPUT_BUCCET_이름/”).버버_버버_버버 버버를 입력 버킷과 파일 이름으로 바꿉니다 (예: “s3: //INPUT_BUCCET/FILE_NAME”).

const params = { Queue: "JOB_QUEUE_ARN", //JOB_QUEUE_ARN UserMetadata: { Customer: "Amazon", }, Role: "IAM_ROLE_ARN", //IAM_ROLE_ARN Settings: { OutputGroups: [ { Name: "File Group", OutputGroupSettings: { Type: "FILE_GROUP_SETTINGS", FileGroupSettings: { Destination: "OUTPUT_BUCKET_NAME", //OUTPUT_BUCKET_NAME, e.g., "s3://BUCKET_NAME/" }, }, Outputs: [ { VideoDescription: { ScalingBehavior: "DEFAULT", TimecodeInsertion: "DISABLED", AntiAlias: "ENABLED", Sharpness: 50, CodecSettings: { Codec: "H_264", H264Settings: { InterlaceMode: "PROGRESSIVE", NumberReferenceFrames: 3, Syntax: "DEFAULT", Softness: 0, GopClosedCadence: 1, GopSize: 90, Slices: 1,

125

Page 134: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드작업 생성 및 관리

GopBReference: "DISABLED", SlowPal: "DISABLED", SpatialAdaptiveQuantization: "ENABLED", TemporalAdaptiveQuantization: "ENABLED", FlickerAdaptiveQuantization: "DISABLED", EntropyEncoding: "CABAC", Bitrate: 5000000, FramerateControl: "SPECIFIED", RateControlMode: "CBR", CodecProfile: "MAIN", Telecine: "NONE", MinIInterval: 0, AdaptiveQuantization: "HIGH", CodecLevel: "AUTO", FieldEncoding: "PAFF", SceneChangeDetect: "ENABLED", QualityTuningLevel: "SINGLE_PASS", FramerateConversionAlgorithm: "DUPLICATE_DROP", UnregisteredSeiTimecode: "DISABLED", GopSizeUnits: "FRAMES", ParControl: "SPECIFIED", NumberBFramesBetweenReferenceFrames: 2, RepeatPps: "DISABLED", FramerateNumerator: 30, FramerateDenominator: 1, ParNumerator: 1, ParDenominator: 1, }, }, AfdSignaling: "NONE", DropFrameTimecode: "ENABLED", RespondToAfd: "NONE", ColorMetadata: "INSERT", }, AudioDescriptions: [ { AudioTypeControl: "FOLLOW_INPUT", CodecSettings: { Codec: "AAC", AacSettings: { AudioDescriptionBroadcasterMix: "NORMAL", RateControlMode: "CBR", CodecProfile: "LC", CodingMode: "CODING_MODE_2_0", RawFormat: "NONE", SampleRate: 48000, Specification: "MPEG4", Bitrate: 64000, }, }, LanguageCodeControl: "FOLLOW_INPUT", AudioSourceName: "Audio Selector 1", }, ], ContainerSettings: { Container: "MP4", Mp4Settings: { CslgAtom: "INCLUDE", FreeSpaceBox: "EXCLUDE", MoovPlacement: "PROGRESSIVE_DOWNLOAD", }, }, NameModifier: "_1", }, ], },

126

Page 135: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드작업 생성 및 관리

], AdAvailOffset: 0, Inputs: [ { AudioSelectors: { "Audio Selector 1": { Offset: 0, DefaultSelection: "NOT_DEFAULT", ProgramSelection: 1, SelectorType: "TRACK", Tracks: [1], }, }, VideoSelector: { ColorSpace: "FOLLOW", }, FilterEnable: "AUTO", PsiControl: "USE_PSI", FilterStrength: 0, DeblockFilter: "DISABLED", DenoiseFilter: "DISABLED", TimecodeSource: "EMBEDDED", FileInput: "INPUT_BUCKET_AND_FILENAME", //INPUT_BUCKET_AND_FILENAME, e.g., "s3://BUCKET_NAME/FILE_NAME" }, ], TimecodeConfig: { Source: "EMBEDDED", }, },};

트랜스코딩 작업 생성JSON을 작업 파라미터를 생성한 후 비동기run메서드를 호출하여MediaConvert클라이언트 서비스 객체를 생성하여 파라미터를 전달합니다. 생성된 작업의 ID는 응답 data에서 반환됩니다.

const run = async () => { try { const data = await emcClient.send(new CreateJobCommand(params)); console.log("Job created!", data); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node emc_createjob.js

이 예제 코드는(GitHub 에 있음).

트랜스코딩 작업 취소만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.emcClient.js. 아래 코드를 복사하여 붙여넣으면 MediaConvert 클라이언트 객체가 만들어집니다. ReplaceREGION와 함께AWS리전. Replace버버버버버를 MediaConvert 계정 끝점과 함께 사용할 수 있습니다. 이 끝점은Account콘솔의MediaConvert 페이지

127

Page 136: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드작업 생성 및 관리

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert";// Set the AWS Region.const REGION = "REGION";//Set the account end point.const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com" };//Set the MediaConvert Service Objectconst emcClient = new MediaConvertClient(ENDPOINT);export { emcClient };

이 예제 코드는(GitHub 에 있음).

파일 이름이 emc_canceljob.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 취소할 작업의 ID가 포함된 JSON을 생성합니다. 그런 다음CancelJobCommand메서드를 호출하기 위한promise를 생성하여MediaConvert클라이언트 서비스 객체를 생성하여 파라미터를 전달합니다. promise콜백에서 응답을 처리합니다.

Note

Replace버버 ID을 취소할 작업의 ID로 바꿉니다.

// Import required AWS-SDK clients and commands for Node.jsimport { CancelJobCommand } from "@aws-sdk/client-mediaconvert";import { emcClient } from "./libs/emcClient.js";

// Set the parametersconst params = { Id: "JOB_ID" }; //JOB_ID

const run = async () => { try { const data = await emcClient.send(new CancelJobCommand(params)); console.log("Job " + params.Id + " is canceled"); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ec2_canceljob.js

이 예제 코드는(GitHub 에 있음).

최근 트랜스코딩 작업 나열만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.emcClient.js. 아래 코드를 복사하여 붙여넣으면 MediaConvert 클라이언트 객체가 만들어집니다. ReplaceREGION와 함께AWS리전. Replace버버버버버를 MediaConvert 계정 끝점과 함께 사용할 수 있습니다. 이 끝점은Account콘솔의MediaConvert 페이지

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert";// Set the AWS Region.const REGION = "REGION";//Set the account end point.const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com" };//Set the MediaConvert Service Objectconst emcClient = new MediaConvertClient(ENDPOINT);

128

Page 137: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드작업 템플릿 사용

export { emcClient };

이 예제 코드는(GitHub 에 있음).

파일 이름이 emc_listjobs.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.

목록을 정렬할지 여부를 지정하는 값을 포함하여 파라미터 JSON을 생성합니다.ASCENDING또는DESCENDING주문, 확인할 작업 대기열의 Amazon 리소스 이름 (ARN), 포함할 작업의 상태 등을 확인합니다. 그런 다음ListJobsCommand메서드를 호출하기 위한 promise를 생성하여MediaConvert클라이언트서비스 객체를 생성하여 파라미터를 전달합니다.

Note

Replace버버버확인할 작업 대기열의 Amazon 리소스 이름 (ARN) 을 추가하고버버를 대기열의 상태로바꿉니다.

// Import required AWS-SDK clients and commands for Node.jsimport { ListJobsCommand } from "@aws-sdk/client-mediaconvert";import { emcClient } from "./libs/emcClient.js";

// Set the parametersconst params = { MaxResults: 10, Order: "ASCENDING", Queue: "QUEUE_ARN", Status: "SUBMITTED" // e.g., "SUBMITTED"};

const run = async () => { try { const data = await emcClient.send(new ListJobsCommand(params)); console.log("Success. Jobs: ", data.Jobs); } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node emc_listjobs.js

이 예제 코드는(GitHub 에 있음).

미디어에서 작업 템플릿 사용 변환하기

이 Node.js 코드 예제는 다음을 보여 줍니다.

• AWS Elemental MediaConvert 작업 템플릿을 생성하는 방법.• 작업 템플릿을 사용하여 트랜스코딩 작업을 생성하는 방법.• 모든 작업 템플릿의 목록을 표시하는 방법.

129

Page 138: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드작업 템플릿 사용

• 작업 템플릿을 삭제하는 방법.

시나리오MediaConvert t에서 트랜스코딩 작업을 생성하는 데 필요한 JSON은 많은 수의 설정을 포함하여 세부적입니다. 후속 작업을 생성하는 데 사용할 수 있는 작업 템플릿에 알려진 좋은 설정을 저장하여 작업 생성을대폭 간소화할 수 있습니다. 이 예제에서는 Node.js 모듈을 사용하여 작업 템플릿을 생성, 사용 및 관리할MediaConvert t를 호출합니다. 이 코드는 JavaScript SDK를 사용하여 MediaConvert 클라이언트 클래스의다음 메서드를 사용하여 이 작업을 수행합니다.

• CreateJobTemplateCommand

• CreateJobCommand

• DeleteJobTemplateCommand

• ListJobTemplatesCommand

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈입니다. 안내를 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

• 출력 파일이 저장된 Amazon S3 버킷 및 입력 파일에 대한 액세스 권한을 MediaConvert t에 부여하는 IAM역할을 생성합니다. 자세한 내용은 단원을 참조하십시오.IAM 권한 설정의AWS Elemental MediaConvert사용자 안내서.

Important

이러한 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드가 있습니다..그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

작업 템플릿 생성만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.emcClient.js. 아래 코드를 복사하여 붙여넣으면 MediaConvert 클라이언트 객체가 만들어집니다. ReplaceREGION와 함께AWS리전. Replace버버버버버를 MediaConvert 계정 끝점과 함께 사용할 수 있습니다. 이 끝점은Account콘솔의MediaConvert 페이지

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert";// Set the AWS Region.const REGION = "REGION";//Set the account end point.const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com" };//Set the MediaConvert Service Objectconst emcClient = new MediaConvertClient(ENDPOINT);export { emcClient };

이 예제 코드는(GitHub 에 있음).

파일 이름이 emc_create_jobtemplate.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.

130

Page 139: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드작업 템플릿 사용

템플릿 생성을 위한 파라미터 JSON을 지정합니다. 이전에 성공한 작업에서 대부분의 JSON 파라미터를 사용하여 템플릿에서 Settings 값을 지정할 수 있습니다. 이 예제에서는 MediaConvert t에서 트랜스코딩 작업 만들기 및 관리 (p. 123)의 작업 설정을 사용합니다.

를 호출합니다.CreateJobTemplateCommand메서드를 호출하기 위한 promise를 생성하여MediaConvert클라이언트 서비스 객체를 생성하여 파라미터를 전달합니다.

Note

Replace버버 버버버확인할 작업 대기열의 Amazon 리소스 이름 (ARN) 을 추가하고버버_버버를 대상Amazon S3 버킷의 이름으로 바꿉니다 (예: “s3: //BUCKET_NAME/”).

// Import required AWS-SDK clients and commands for Node.jsimport { CreateJobTemplateCommand } from "@aws-sdk/client-mediaconvert";import { emcClient } from "./libs/emcClient.js";

const params = { Category: "YouTube Jobs", Description: "Final production transcode", Name: "DemoTemplate", Queue: "JOB_QUEUE_ARN", //JOB_QUEUE_ARN Settings: { OutputGroups: [ { Name: "File Group", OutputGroupSettings: { Type: "FILE_GROUP_SETTINGS", FileGroupSettings: { Destination: "BUCKET_NAME", // BUCKET_NAME e.g., "s3://BUCKET_NAME/" }, }, Outputs: [ { VideoDescription: { ScalingBehavior: "DEFAULT", TimecodeInsertion: "DISABLED", AntiAlias: "ENABLED", Sharpness: 50, CodecSettings: { Codec: "H_264", H264Settings: { InterlaceMode: "PROGRESSIVE", NumberReferenceFrames: 3, Syntax: "DEFAULT", Softness: 0, GopClosedCadence: 1, GopSize: 90, Slices: 1, GopBReference: "DISABLED", SlowPal: "DISABLED", SpatialAdaptiveQuantization: "ENABLED", TemporalAdaptiveQuantization: "ENABLED", FlickerAdaptiveQuantization: "DISABLED", EntropyEncoding: "CABAC", Bitrate: 5000000, FramerateControl: "SPECIFIED", RateControlMode: "CBR", CodecProfile: "MAIN", Telecine: "NONE", MinIInterval: 0, AdaptiveQuantization: "HIGH", CodecLevel: "AUTO", FieldEncoding: "PAFF", SceneChangeDetect: "ENABLED", QualityTuningLevel: "SINGLE_PASS",

131

Page 140: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드작업 템플릿 사용

FramerateConversionAlgorithm: "DUPLICATE_DROP", UnregisteredSeiTimecode: "DISABLED", GopSizeUnits: "FRAMES", ParControl: "SPECIFIED", NumberBFramesBetweenReferenceFrames: 2, RepeatPps: "DISABLED", FramerateNumerator: 30, FramerateDenominator: 1, ParNumerator: 1, ParDenominator: 1, }, }, AfdSignaling: "NONE", DropFrameTimecode: "ENABLED", RespondToAfd: "NONE", ColorMetadata: "INSERT", }, AudioDescriptions: [ { AudioTypeControl: "FOLLOW_INPUT", CodecSettings: { Codec: "AAC", AacSettings: { AudioDescriptionBroadcasterMix: "NORMAL", RateControlMode: "CBR", CodecProfile: "LC", CodingMode: "CODING_MODE_2_0", RawFormat: "NONE", SampleRate: 48000, Specification: "MPEG4", Bitrate: 64000, }, }, LanguageCodeControl: "FOLLOW_INPUT", AudioSourceName: "Audio Selector 1", }, ], ContainerSettings: { Container: "MP4", Mp4Settings: { CslgAtom: "INCLUDE", FreeSpaceBox: "EXCLUDE", MoovPlacement: "PROGRESSIVE_DOWNLOAD", }, }, NameModifier: "_1", }, ], }, ], AdAvailOffset: 0, Inputs: [ { AudioSelectors: { "Audio Selector 1": { Offset: 0, DefaultSelection: "NOT_DEFAULT", ProgramSelection: 1, SelectorType: "TRACK", Tracks: [1], }, }, VideoSelector: { ColorSpace: "FOLLOW", }, FilterEnable: "AUTO",

132

Page 141: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드작업 템플릿 사용

PsiControl: "USE_PSI", FilterStrength: 0, DeblockFilter: "DISABLED", DenoiseFilter: "DISABLED", TimecodeSource: "EMBEDDED", }, ], TimecodeConfig: { Source: "EMBEDDED", }, },};

const run = async () => { try { // Create a promise on a MediaConvert object const data = await emcClient.send(new CreateJobTemplateCommand(params)); console.log("Success!", data); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node emc_create_jobtemplate.js

이 예제 코드는(GitHub 에 있음).

작업 템플릿에서 트랜스코딩 작업 만들기만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.emcClient.js. 아래 코드를 복사하여 붙여넣으면 MediaConvert 클라이언트 객체가 만들어집니다. ReplaceREGION와 함께AWS리전. Replace버버버버버를 MediaConvert 계정 끝점과 함께 사용할 수 있습니다. 이 끝점은Account콘솔의MediaConvert 페이지

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert";// Set the AWS Region.const REGION = "REGION";//Set the account end point.const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com" };//Set the MediaConvert Service Objectconst emcClient = new MediaConvertClient(ENDPOINT);export { emcClient };

이 예제 코드는(GitHub 에 있음).

파일 이름이 emc_template_createjob.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.

사용할 작업 템플릿의 이름, 생성하는 작업에 특정하게 사용할 Settings를 포함하여 작업 생성 파라미터 JSON을 생성합니다. 그런 다음CreateJobsCommand메서드를 호출하기 위한 promise를 생성하여MediaConvert클라이언트 서비스 객체를 생성하여 파라미터를 전달합니다.

Note

Replace버버 버버버확인할 작업 대기열의 Amazon 리소스 이름 (ARN) 을 사용하여버 버 버버와 함께,버버버 버버와 함께,ROLE_ARN역할의 Amazon 리소스 이름 (ARN) 과버버_버버_버버 버버를 입력 버킷과 파일이름으로 바꿉니다 (예: “s3: //버켓_이름/FILE_이름”).

133

Page 142: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드작업 템플릿 사용

// Import required AWS-SDK clients and commands for Node.jsimport { CreateJobCommand } from "@aws-sdk/client-mediaconvert";import { emcClient } from "./libs/emcClient.js";

const params = { Queue: "QUEUE_ARN", //QUEUE_ARN JobTemplate: "TEMPLATE_NAME", //TEMPLATE_NAME Role: "ROLE_ARN", //ROLE_ARN Settings: { Inputs: [ { AudioSelectors: { "Audio Selector 1": { Offset: 0, DefaultSelection: "NOT_DEFAULT", ProgramSelection: 1, SelectorType: "TRACK", Tracks: [1], }, }, VideoSelector: { ColorSpace: "FOLLOW", }, FilterEnable: "AUTO", PsiControl: "USE_PSI", FilterStrength: 0, DeblockFilter: "DISABLED", DenoiseFilter: "DISABLED", TimecodeSource: "EMBEDDED", FileInput: "INPUT_BUCKET_AND_FILENAME", //INPUT_BUCKET_AND_FILENAME, e.g., "s3://BUCKET_NAME/FILE_NAME" }, ], },};

const run = async () => { try { const data = await emcClient.send(new CreateJobCommand(params)); console.log("Success! ", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node emc_template_createjob.js

이 예제 코드는(GitHub 에 있음).

작업 템플릿을 나열하려면만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.emcClient.js. 아래 코드를 복사하여 붙여넣으면 MediaConvert 클라이언트 객체가 만들어집니다. ReplaceREGION와 함께AWS리전. Replace버버버버버를 MediaConvert 계정 끝점과 함께 사용할 수 있습니다. 이 끝점은Account콘솔의MediaConvert 페이지

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert";

134

Page 143: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드작업 템플릿 사용

// Set the AWS Region.const REGION = "REGION";//Set the account end point.const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com" };//Set the MediaConvert Service Objectconst emcClient = new MediaConvertClient(ENDPOINT);export { emcClient };

이 예제 코드는(GitHub 에 있음).

파일 이름이 emc_listtemplates.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.

MediaConvert 클라이언트 클래스의 listTemplates 메서드에 대한 요청 파라미터를 전달할 객체를생성합니다. 나열할 템플릿(NAME, CREATION DATE, SYSTEM), 나열할 개수 및 정렬 순서를 결정하는 값을 포함시킵니다. 를 호출하려면ListTemplatesCommand메서드를 호출하려면 파라미터를 전달하는MediaConvert 클라이언트 서비스 객체를 호출하기 위한 promise를 생성합니다.

// Import required AWS-SDK clients and commands for Node.jsimport { ListJobTemplatesCommand } from "@aws-sdk/client-mediaconvert";import { emcClient } from "./libs/emcClient.js";

const params = { ListBy: "NAME", MaxResults: 10, Order: "ASCENDING",};

const run = async () => { try { const data = await emcClient.send(new ListJobTemplatesCommand(params)); console.log("Success ", data.JobTemplates); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node emc_listtemplates.js

이 예제 코드는(GitHub 에 있음).

작업 템플릿 삭제만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.emcClient.js. 아래 코드를 복사하여 붙여넣으면 MediaConvert 클라이언트 객체가 만들어집니다. ReplaceREGION와 함께AWS리전. Replace버버버버버를 MediaConvert 계정 끝점과 함께 사용할 수 있습니다. 이 끝점은Account콘솔의MediaConvert 페이지

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert";// Set the AWS Region.const REGION = "REGION";//Set the account end point.const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com" };//Set the MediaConvert Service Object

135

Page 144: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Glacier

const emcClient = new MediaConvertClient(ENDPOINT);export { emcClient };

이 예제 코드는(GitHub 에 있음).

파일 이름이 emc_deletetemplate.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.

삭제하려는 작업 템플릿의 이름을 MediaConvert 클라이언트 클래스의 DeleteJobTemplateCommand메서드에 대한 파라미터로 전달할 객체를 생성합니다. 를 호출하려면DeleteJobTemplateCommand메서드를 호출하려면 파라미터를 전달하는 MediaConvert 클라이언트 서비스 객체를 호출하기 위한 promise를 생성합니다.

// Import required AWS-SDK clients and commands for Node.jsimport { DeleteJobTemplateCommand } from "@aws-sdk/client-mediaconvert";import { emcClient } from "./libs/emcClient.js";

// Set the parametersconst params = { Name: "test" }; //TEMPLATE_NAME

const run = async () => { try { const data = await emcClient.send(new DeleteJobTemplateCommand(params)); console.log( "Success, template deleted! Request ID:", data.$metadata.requestId ); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node emc_deletetemplate.js

이 예제 코드는(GitHub 에 있음).

Amazon S3 GlacierAmazon S3 Glacier는 데이터 보관 및 장기 백업을 위한 보안 클라우드 스토리지 서비스입니다. 이 서비스는몇 시간 정도의 검색 시간이면 적절한 자주 액세스하지 않는 데이터에 맞게 최적화되어 있습니다.

Amazon S3 Glacier 용 JavaScript API는Glacier클라이언트 클래스입니다. S3 Glacier 클라이언트 클래스사용에 대한 자세한 내용은클래스: GlacierAPI 참조입니다.

주제• S3 Glacier 볼트 생성 (p. 137)

136

Page 145: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드S3 Glacier 볼트 생성

• S3 Glacier (p. 138)

S3 Glacier 볼트 생성

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 볼트를 생성하는 방법CreateVaultCommandAmazon S3 Glacier 서비스 객체의 메서드를 호출합니다.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript및타사 모듈을 참조하세요. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 버전을 다운로드하고설치하려면Node.js 다운로드는.

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57).

볼트 생성만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.glacierClient.js. 아래 코드를 복사하여 붙여넣으면 S3 Glacier 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { GlacierClient } from "@aws-sdk/client-glacier";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create Glacier service object.const glacierClient = new GlacierClient({ region: REGION });export { glacierClient };

이 예제 코드는(GitHub 에 있음).

파일 이름이 createVault.js인 Node.js 모듈을 생성합니다. 아래 코드를 복사하여 붙여 넣습니다.

Note

Replace버버 버버를 S3 빙하 금고의 이름으로 바꿉니다.

// Load the SDK for JavaScript

137

Page 146: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드S3 Glacier

import { CreateVaultCommand } from "@aws-sdk/client-glacier";import { glacierClient } from "./libs/glacierClient.js";

// Set the parametersconst vaultname = "VAULT_NAME"; // VAULT_NAMEconst params = { vaultName: vaultname };

const run = async () => { try { const data = await glacierClient.send(new CreateVaultCommand(params)); console.log("Success, vault created!"); return data; // For unit tests. } catch (err) { console.log("Error"); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node createVault.js

이 예제 코드는(GitHub 에 있음).

S3 Glacier

이 Node.js 코드 예제는 다음을 보여 줍니다.

• Amazon S3 GlacieruploadArchiveS3 Glacier 서비스 객체의 메서드를 호출합니다.

다음은 단일Buffer개체를 사용하여 전체 아카이브로UploadArchiveCommandS3 Glacier 서비스 객체의메서드를 호출합니다.

이 예제에서는 VAULT_NAME이라는 볼트를 이미 생성했다고 가정합니다. SDK는 자동으로 트리 해시를 계산합니다.checksum하지만, 고유의 체크섬 파라미터를 전달하여 이 값을 재정의할 수 있습니다.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript및타사 모듈을 참조하세요. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

138

Page 147: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드AWS Identity and Access Management 예제

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 버전을 다운로드하고설치하려면Node.js 다운로드는.

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57).

아카이브 업로드만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.glacierClient.js. 아래 코드를 복사하여 붙여넣으면 S3 Glacier 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { GlacierClient } from "@aws-sdk/client-glacier";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create Glacier service object.const glacierClient = new GlacierClient({ region: REGION });export { glacierClient };

이 예제 코드는(GitHub 에 있음).

파일 이름이 uploadArchive.js인 Node.js 모듈을 생성합니다. 아래 코드를 복사하여 붙여 넣습니다.

Note

Replace버버 버버를 S3 빙하 금고의 이름으로 바꿉니다.

// Load the SDK for JavaScriptimport { UploadArchiveCommand } from "@aws-sdk/client-glacier";import { glacierClient } from "./libs/glacierClient.js";

// Set the parametersconst vaultname = "VAULT_NAME"; // VAULT_NAME

// Create a new service object and bufferconst buffer = new Buffer.alloc(2.5 * 1024 * 1024); // 2.5MB bufferconst params = { vaultName: vaultname, body: buffer };

const run = async () => { try { const data = await glacierClient.send(new UploadArchiveCommand(params)); console.log("Archive ID", data.archiveId); return data; // For unit tests. } catch (err) { console.log("Error uploading archive!", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node uploadArchive.js

이 예제 코드는(GitHub 에 있음).

AWS Identity and Access Management 예제AWS Identity and Access Management(IAM) 은 Amazon Web Services (AWS) 고객을 생성하고 각 사용자권한을 관리하는 데 사용할 수 있습니다.AWS. 이 서비스는 클라우드에서 여러 사용자 또는 시스템이 있는

139

Page 148: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 사용자 관리

조직을 대상으로 합니다.AWS제품입니다. IAM을 사용하면 사용자, 액세스 키와 같은 보안 자격 증명,AWS사용자가 액세스할 수 있는 리소스

IAM용 JavaScript API는 를 통해 노출됩니다.IAM클라이언트 클래스입니다. IAM 클라이언트 클래스 사용에대한 자세한 내용은 단원을 참조하십시오.클래스: IAMAPI 참조입니다.

주제• IAM 사용자 관리 (p. 140)• IAM 정책 작업 (p. 144)• IAM 액세스 키 관리 (p. 150)• IAM 서버 인증서 작업 (p. 155)• IAM 계정 별칭 관리 (p. 159)

IAM 사용자 관리

이 Node.js 코드 예제는 다음을 보여 줍니다.

• IAM 사용자의 목록을 검색하는 방법.• 사용자를 생성하고 삭제하는 방법.• 사용자 이름을 업데이트하는 방법.

시나리오이 예제에서는 일련의 Node.js 모듈을 사용하여 IAM에서 사용자를 생성하고 관리합니다. 이 Node.js 모듈은JavaScript SDK를 사용하여 사용자를 생성합니다.IAM클라이언트 클래스:

• CreateUserCommand

• ListUsersCommand

• UpdateUserCommand

• GetUserCommand

• DeleteUserCommand

IAM 사용자에 대한 자세한 내용은 단원을 참조하십시오.IAM 사용자의IAM 사용 설명서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

140

Page 149: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 사용자 관리

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면 단원을 참조하십시오.Node.js 다운로드..

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

사용자 생성만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 iam_createuser.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체에는 새 사용자에 사용하려는 사용자 이름이 명령줄 파라미터로 포함됩니다.

를 호출합니다.GetUserCommand메서드IAM클라이언트 서비스 개체를 실행하여 사용자 이름이 이미 있는지 확인합니다. 사용자 이름이 현재 없는 경우 CreateUserCommand 메서드를 호출하여 사용자 이름을 생성합니다. 이름이 이미 있는 경우에는 그런 취지의 메시지를 콘솔에 표시합니다.

Note

ReplaceUSER_NAME를 생성할 사용자 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { GetUserCommand, CreateUserCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = { UserName: "USER_NAME" }; //USER_NAME

const run = async () => { try { const data = await iamClient.send(new GetUserCommand(params)); console.log( "User " + process.argv[3] + " already exists", data.User.UserId ); return data; } catch (err) { try { const results = await iamClient.send(new CreateUserCommand(params));

141

Page 150: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 사용자 관리

console.log("Success", results); return results; } catch (err) { console.log("Error", err); } }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_createuser.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

계정의 사용자 목록 표시만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 iam_listusers.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 사용자 목록을 표시하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서는 MaxItems 파라미터를 10으로 설정하여 반환되는 수를 제한합니다. 를 호출합니다.ListUsersCommand메서드IAM클라이언트 서비스 객체를 생성합니다. 첫 번째 사용자의 이름과 생성 날짜를 콘솔에 씁니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { ListUsersCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = { MaxItems: 10 };

const run = async () => { try { const data = await iamClient.send(new ListUsersCommand(params)); return data; const users = data.Users || []; users.forEach(function (user) { console.log("User " + user.UserName + " created", user.CreateDate); }); } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_listusers.js

142

Page 151: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 사용자 관리

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

사용자 이름 업데이트만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 iam_updateuser.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 사용자 목룍을 표시하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성하고, 현재 및 새 사용자 이름을 모두명령줄 파라미터로 지정합니다. 를 호출합니다.UpdateUserCommand메서드IAM클라이언트 서비스 객체를생성합니다.

Note

Replace버버버_버버버_버버을 업데이트 할 사용자 이름으로 바꾸고버 버버버 버버을 새 사용자 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { UpdateUserCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = { UserName: "ORIGINAL_USER_NAME", //ORIGINAL_USER_NAME NewUserName: "NEW_USER_NAME", //NEW_USER_NAME};

const run = async () => { try { const data = await iamClient.send(new UpdateUserCommand(params)); console.log("Success, username updated"); return data; } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 사용자의 현재 이름을 지정한 다음 새 사용자 이름을 지정하여 명령 프롬프트에 다음을입력합니다.

node iam_updateuser.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

사용자 삭제만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

143

Page 152: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 정책 작업

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 iam_deleteuser.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체에는 삭제하려는 사용자 이름이 명령줄 파라미터로 포함됩니다.

를 호출합니다.GetUserCommand메서드IAM클라이언트 서비스 개체를 사용하여 사용자 이름이 이미있는지 확인합니다. 사용자 이름이 없는 경우 이를 알리는 메시지를 콘솔에 씁니다. 사용자가 있는 경우DeleteUserCommand 메서드를 호출하여 사용자를 삭제합니다.

Note

ReplaceUSER_NAME를 삭제할 사용자의 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { DeleteUserCommand, GetUserCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = { UserName: "USER_NAME" }; //USER_NAME

const run = async () => { try { const data = await iamClient.send(new GetUserCommand(params)); return data; try { const results = await iamClient.send(new DeleteUserCommand(params)); console.log("Success", results); return results; } catch (err) { console.log("Error", err); } } catch (err) { console.log("User " + process.argv[2] + " does not exist."); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_deleteuser.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

IAM 정책 작업

144

Page 153: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 정책 작업

이 Node.js 코드 예제는 다음을 보여 줍니다.

• IAM 정책을 생성하고 삭제하는 방법.• IAM 정책을 연결하고 분리하는 방법.

시나리오정책을 생성하여 사용자에게 권한을 부여합니다. 정책은 사용자가 수행할 수 있는 작업과 해당 작업이 영향을 미칠 수 있는 리소스 목록을 표시하는 문서입니다. 명시적으로 허용되지 않은 작업 또는 리소스는 기본적으로 모두 거부됩니다. 정책을 생성하여 사용자, 사용자 그룹, 사용자가 맡는 역할, 리소스에 연결할 수 있습니다.

이 예제에서는 일련의 Node.js 모듈을 사용하여 IAM의 정책을 관리합니다. 이 Node.js 모듈은 JavaScript 용SDK를 사용하여 정책을 생성하고 삭제하며 역할 정책을 연결하고 분리합니다.IAM클라이언트 클래스:

• CreatePolicyCommand

• GetPolicyCommand

• ListAttachedRolePoliciesCommand

• AttachRolePolicyCommand

• DetachRolePolicyCommand

IAM 사용자에 대한 자세한 내용은 단원을 참조하십시오.액세스 관리 개요: 권한 및 정책의IAM 사용 설명서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

• 정책을 연결할 수 있는 IAM 역할을 생성합니다. 역할 생성에 대한 자세한 내용은 단원을 참조하십시오.IAM 역할 생성의IAM 사용 설명서.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면 단원을 참조하십시오.Node.js 다운로드..

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

IAM 정책 생성만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"

145

Page 154: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 정책 작업

// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 iam_createpolicy.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 두개의 JSON 객체를 생성합니다. 하나는 생성하려는 정책 문서를 포함하고 다른 하나는 정책 JSON과 정책에지정할 이름을 포함하여 정책을 생성하는 데 필요한 파라미터를 포함합니다. 파라미터에서 정책 JSON 객체를 문자열로 만들어야 합니다. 를 호출합니다.CreatePolicyCommand메서드IAM클라이언트 서비스 객체를 생성합니다.

Note

Replace버버버_ARN을 권한을 부여하려는 리소스의 Amazon 리소스 이름 (ARN) 으로 바꾸고버버 버버버버버버 버버 버버를 DynamoDB 정책 이름의 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { CreatePolicyCommand } from "@aws-sdk/client-iam";

// Set the parametersconst myManagedPolicy = { Version: "2012-10-17", Statement: [ { Effect: "Allow", Action: "logs:CreateLogGroup", Resource: "RESOURCE_ARN", // RESOURCE_ARN }, { Effect: "Allow", Action: [ "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Scan", "dynamodb:UpdateItem", ], Resource: "DYNAMODB_POLICY_NAME", // DYNAMODB_POLICY_NAME; e.g., "myDynamoDBName" }, ],};const params = { PolicyDocument: JSON.stringify(myManagedPolicy), PolicyName: process.argv[4],};

const run = async () => { try { const data = await iamClient.send(new CreatePolicyCommand(params)); console.log("Success", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_createpolicy.js

146

Page 155: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 정책 작업

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

IAM 정책 받기만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 iam_getpolicy.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 정책을 검색하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체에는 가져오려는 정책의ARN 이 포함됩니다. 를 호출합니다.GetPolicyCommand메서드IAM클라이언트 서비스 객체를 생성합니다.정책 설명을 콘솔에 씁니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { GetPolicyCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = { PolicyArn: "arn:aws:iam::aws:policy/AWSLambdaExecute",};

const run = async () => { try { const data = await iamClient.send(new GetPolicyCommand(params)); console.log("Success", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_getpolicy.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

관리되는 역할 정책 연결만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

147

Page 156: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 정책 작업

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 iam_attachrolepolicy.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 역할에 연결된 관리형 IAM 정책의 목록을 가져오는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체는 역할의 이름으로 구성됩니다. 역할 이름을 명령줄 파라미터로 제공합니다. 를 호출합니다.ListAttachedRolePoliciesCommand메서드IAM클라이언트 서비스 객체를 호출합니다. 그러면 관리형 정책 배열이 콜백 함수에 반환됩니다.

배열 구성원을 점검하여 역할에 연결할 정책이 이미 연결되어 있는지 확인합니다. 정책이 연결되어 있지 않은 경우 AttachRolePolicyCommand 메서드를 호출하여 정책을 연결합니다.

Note

Replace버버 버버을 연결할 역할의 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { ListAttachedRolePoliciesCommand, AttachRolePolicyCommand,} from "@aws-sdk/client-iam";

// Set the parametersconst ROLENAME = "ROLE_NAME";const paramsRoleList = { RoleName: ROLENAME }; //ROLE_NAMEconst params = { PolicyArn: "arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess", RoleName: ROLENAME,};const run = async () => { try { const data = await iamClient.send( new ListAttachedRolePoliciesCommand(paramsRoleList) ); return data; const myRolePolicies = data.AttachedPolicies; myRolePolicies.forEach(function (val, index, array) { if (myRolePolicies[index].PolicyName === "AmazonDynamoDBFullAccess") { console.log( "AmazonDynamoDBFullAccess is already attached to this role." ); process.exit(); } }); try { const data = await iamClient.send(new AttachRolePolicyCommand(params)); console.log("Role attached successfully"); return data; } catch (err) { console.log("Error", err); } } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_attachrolepolicy.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

148

Page 157: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 정책 작업

관리되는 역할 정책 분리만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 iam_detachrolepolicy.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 역할에 연결된 관리형 IAM 정책의 목록을 가져오는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체는 역할의 이름으로 구성됩니다. 역할 이름을 명령줄 파라미터로 제공합니다. 를 호출합니다.ListAttachedRolePoliciesCommand메서드IAM클라이언트 서비스 객체를 반환합니다. 그러면 관리형 정책 배열이 콜백 함수에서 반환됩니다.

배열 구성원을 점검하여 역할에서 분리하려는 정책이 연결되어 있는지 확인합니다. 정책이 연결되어 있는 경우 DetachRolePolicyCommand 메서드를 호출하여 정책을 분리합니다.

Note

Replace버버 버버분리 할 역할의 이름이 인 경우.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { ListAttachedRolePoliciesCommand, DetachRolePolicyCommand,} from "@aws-sdk/client-iam";

// Set the parametersconst params = { RoleName: "ROLE_NAME" }; //ROLE_NAME

const run = async () => { try { const data = await iamClient.send( new ListAttachedRolePoliciesCommand(params) ); return data; const myRolePolicies = data.AttachedPolicies; myRolePolicies.forEach(function (val, index, array) { if (myRolePolicies[index].PolicyName === "AmazonDynamoDBFullAccess") { const params = { PolicyArn: "arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess", paramsRoleList, }; try { const results = iamClient.send( new DetachRolePolicyCommand(paramsRoleList) ); console.log("Policy detached from role successfully"); process.exit(); } catch (err) { console.log("Unable to detach policy from role", err); } } else { } }); } catch (err) {

149

Page 158: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 액세스 키 관리

console.log("User " + process.argv[2] + " does not exist."); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_detachrolepolicy.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

IAM 액세스 키 관리

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 사용자의 액세스 키를 관리하는 방법.

시나리오사용자가 프로그래밍 방식으로 호출하기 위해 고유의 액세스 키가 필요합니다.AWSJavaScript 용 SDK. 이요구를 충족하기 위해 IAM 사용자에 대한 액세스 키(액세스 키 ID 및 보안 액세스 키)를 생성, 수정, 확인 또는 교체할 수 있습니다. 기본적으로 액세스 키를 생성할 때 액세스 키의 상태는 Active이므로 사용자는 액세스 키를 API 호출에 사용할 수 있습니다.

이 예제에서는 일련의 Node.js 모듈을 사용하여 에서 액세스 키를 관리합니다. 이 Node.js 모듈은 JavaScript용 SDK를 사용하여 IAM 액세스 키를 관리합니다.IAM클라이언트 클래스:

• 액세스키 만들기 명령• 목록액세스키 명령• 액세스키래스터드된 명령• 업데이트액세스키 명령• 삭제액세스키 명령

IAM 액세스 키에 대한 자세한 내용은 단원을 참조하십시오.액세스 키의IAM 사용 설명서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

150

Page 159: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 액세스 키 관리

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면 단원을 참조하십시오.Node.js 다운로드..

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

사용자의 액세스 키 생성만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 iam_createaccesskeys.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 새 액세스 키를 생성하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체에는 IAM 사용자의 이름이 포함됩니다. 를 호출합니다.CreateAccessKeyCommand메서드IAM클라이언트 서비스 객체를 생성합니다.

Note

Replace버버버 버버IAM 사용자 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { CreateAccessKeyCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = {UserName: "IAM_USER_NAME"}; //IAM_USER_NAME

const run = async () => { try { const data = await iamClient.send(new CreateAccessKeyCommand(params)); console.log("Success", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. 한 번만 제공할 수 있는 보안 키를 잃어버리지 않도록 반환된 데이터를 텍스트 파일에 파이프해야 합니다.

node iam_createaccesskeys.js > newuserkeysV3.txt

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

사용자의 액세스 키 나열만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";

151

Page 160: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 액세스 키 관리

// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 iam_listaccesskeys.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 사용자의 액세스 키를 검색하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체에는 IAM 사용자의 이름과 목록에 표시할 액세스 키 페어의 최대 수 (선택 사항) 가 포함됩니다. 를 호출합니다.ListAccessKeysCommand메서드IAM클라이언트 서비스 객체를 생성합니다.

Note

Replace버버버 버버IAM 사용자 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { ListAccessKeysCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = { MaxItems: 5, UserName: "IAM_USER_NAME", //IAM_USER_NAME};

const run = async () => { try { const data = await iamClient.send(new ListAccessKeysCommand(params)); console.log("Success", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_listaccesskeys.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

액세스 키에 대한 마지막 사용 얻기만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 iam_accesskeylastused.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 새 액세스 키를 생성하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체에는 마지막 사용 정보가 포함됩니다. IAM 서비스 객체의 GetAccessKeyLastUsedCommand 메서드를 호출합니다.

152

Page 161: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 액세스 키 관리

Note

ReplaceACCESS_KEY_ID를 마지막 사용 정보가 있는 액세스 키 ID로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { GetAccessKeyLastUsedCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = { AccessKeyId: "ACCESS_KEY_ID" }; //ACCESS_KEY_ID

const run = async () => { try { const data = await iamClient.send(new GetAccessKeyLastUsedCommand(params)); console.log("Success", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_accesskeylastused.js

이 예제 코드는 찾아볼 수 있습니다.(GitHub 에 있음).

액세스 키 상태 업데이트만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.(GitHub 에 있음).

파일 이름이 iam_updateaccesskey.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 액세스 키의 상태를 업데이트하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체에는 액세스 키 ID와 업데이트된 상태가 포함됩니다. 상태는 Active 또는 Inactive일 수 있습니다. 를 호출합니다.updateAccessKey메서드IAM클라이언트 서비스 객체를 생성합니다.

Note

ReplaceACCESS_KEY_ID액세스 키 ID와 업데이트된 상태,USER_NAME사용자의 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { UpdateAccessKeyCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = { AccessKeyId: "ACCESS_KEY_ID", //ACCESS_KEY_ID Status: "Active",

153

Page 162: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 액세스 키 관리

UserName: "USER_NAME", //USER_NAME};

const run = async () => { try { const data = await iamClient.send(new UpdateAccessKeyCommand(params)); console.log("Success", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_updateaccesskey.js

이 예제 코드는 찾아볼 수 있습니다.(GitHub 에 있음).

액세스 키 삭제만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.(GitHub 에 있음).

파일 이름이 iam_deleteaccesskey.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 액세스 키를 삭제하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체에는 액세스 키ID와 사용자의 이름이 포함됩니다. 를 호출합니다.DeleteAccessKeyCommand메서드IAM클라이언트 서비스 객체를 생성합니다.

Note

ReplaceACCESS_KEY_ID을 (를) 액세스 키 ID로USER_NAME을 사용자 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { DeleteAccessKeyCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = { AccessKeyId: "ACCESS_KEY_ID", // ACCESS_KEY_ID UserName: "USER_NAME", // USER_NAME};

const run = async () => { try { const data = await iamClient.send(new DeleteAccessKeyCommand(params)); console.log("Success", data); return data; } catch (err) { console.log("Error", err); }

154

Page 163: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 서버 인증서 작업

};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_deleteaccesskey.js

이 예제 코드는 찾아볼 수 있습니다.(GitHub 에 있음).

IAM 서버 인증서 작업

이 Node.js 코드 예제는 다음을 보여 줍니다.

• HTTPS 연결을 위해 서버 인증서를 관리하는 기본 작업을 수행하는 방법.

시나리오에서 웹 사이트나 애플리케이션에 대한 HTTPS 연결을 활성화하려면AWSSSL/TLS가 필요합니다.서버 인증서. 외부 공급자에게서 얻은 인증서를 웹 사이트 또는 애플리케이션에서 사용하려면AWS를 사용하려면 인증서를 IAM에 업로드하거나AWS Certificate Manager.

이 예제에서는 일련의 Node.js 모듈을 사용하여 IAM의 서버 인증서를 처리합니다. 이 Node.js 모듈은JavaScript SDK를 사용하여 서버 인증서를 관리합니다.IAM클라이언트 클래스:

• ListServerCertificatesCommand

• GetServerCertificateCommand

• UpdateServerCertificateCommand

• DeleteServerCertificatecommand

서버 인증서에 대한 자세한 내용은 단원을 참조하십시오.서버 인증서 작업의IAM 사용 설명서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면 단원을 참조하십시오.Node.js 다운로드..

155

Page 164: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 서버 인증서 작업

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

서버 인증서 나열만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.(GitHub 에 있음).

파일 이름이 iam_listservercerts.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 를 호출합니다.ListServerCertificatesCommand메서드IAM클라이언트 서비스 객체를 생성합니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { ListServerCertificatesCommand } from "@aws-sdk/client-iam";

const run = async () => { try { const data = await iamClient.send(new ListServerCertificatesCommand({})); console.log("Success", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_listservercers.js

이 예제 코드는 찾아볼 수 있습니다.(GitHub 에 있음).

서버 인증서 조회만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.(GitHub 에 있음).

파일 이름이 iam_getservercert.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.인증서를 가져오는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체는 서버 인증서의 이름

156

Page 165: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 서버 인증서 작업

으로 구성됩니다. 를 호출합니다.GetServerCertificatesCommand메서드IAM클라이언트 서비스 객체를생성합니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { GetServerCertificateCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = { ServerCertificateName: "CERTIFICATE_NAME" }; //CERTIFICATE_NAME

const run = async () => { try { const data = await iamClient.send(new GetServerCertificateCommand(params)); console.log("Success", data); return data; } catch (err) { console.log("Error", err); }};

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_getservercert.js

이 예제 코드는 찾아볼 수 있습니다.(GitHub 에 있음).

서버 인증서 업데이트만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.(GitHub 에 있음).

파일 이름이 iam_updateservercert.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를구성해야 합니다. 인증서를 업데이트하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체는 기존 서버 인증서의 이름과 새 인증서의 이름으로 구성됩니다. 를 호출합니다.UpdateServerCertificateCommand메서드IAM클라이언트 서비스 객체를 생성합니다.

Note

Replace버버버 버버업데이트 할 서비스 인증 이름으로 바꾸고버 버버버 버버새 인증서 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { UpdateServerCertificateCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = { ServerCertificateName: "CERTIFICATE_NAME", //CERTIFICATE_NAME NewServerCertificateName: "NEW_CERTIFICATE_NAME", //NEW_CERTIFICATE_NAME};

157

Page 166: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 서버 인증서 작업

const run = async () => { try { const data = await iamClient.send( new UpdateServerCertificateCommand(params) ); console.log("Success", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_updateservercert.js

이 예제 코드는 찾아볼 수 있습니다.(GitHub 에 있음).

서버 인증서 삭제만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.(GitHub 에 있음).

파일 이름이 iam_deleteservercert.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 서버 인증서를 삭제하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체는 삭제하려는 인증서의 이름으로 구성됩니다. 를 호출합니다.DeleteServerCertificatesCommand메서드IAM클라이언트 서비스 객체를 생성합니다.

Note

Replace버버버 버버를 삭제할 서버 인증서의 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { DeleteServerCertificateCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = { ServerCertificateName: "CERTIFICATE_NAME" }; // CERTIFICATE_NAME

const run = async () => { try { const data = await iamClient.send( new DeleteServerCertificateCommand(params) ); console.log("Success", data); return data; } catch (err) { console.log("Error", err); }};

158

Page 167: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 계정 별칭 관리

run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_deleteservercert.js

이 예제 코드는 찾아볼 수 있습니다.(GitHub 에 있음).

IAM 계정 별칭 관리

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 별칭을 관리하는 방법AWS계정 ID입니다.

시나리오대신 회사 이름이나 기타 친숙한 식별자를 로그인 페이지의 URL에 포함하려는 경우AWS계정 ID에 대한 별칭을 생성할 수 있습니다.AWS계정 ID입니다. AWS 계정 별칭을 생성할 경우 명칭을 적용하기 위해 로그인페이지 URL이 변경됩니다.

이 예제에서는 일련의 Node.js 모듈을 사용하여 IAM 계정 별칭을 생성하고 관리합니다. 이 Node.js 모듈은다음과 같은 메서드를 사용하여 별칭을 관리합니다.IAM클라이언트 클래스:

• CreateAccountAliasCommand

• ListAccountAliasesCommand

• DeleteAccountAliasCommand

IAM 계정 별칭에 대한 자세한 내용은 단원을 참조하십시오.귀하의AWS계정 ID 및 별칭의IAM 사용 설명서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면 단원을 참조하십시오.Node.js 다운로드..

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

159

Page 168: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 계정 별칭 관리

계정 별칭 생성만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.(GitHub 에 있음).

파일 이름이 iam_createaccountalias.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 계정 별칭을 생성하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체에는 생성할별칭이 포함됩니다. 를 호출합니다.CreateAccountAliasCommand메서드IAM클라이언트 서비스 객체를생성합니다.

Note

Replace버버_버버만들 별칭을 사용합니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { CreateAccountAliasCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = { AccountAlias: "ACCOUNT_ALIAS" }; //ACCOUNT_ALIAS

const run = async () => { try { const data = await iamClient.send(new CreateAccountAliasCommand(params)); console.log("Success", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_createaccountalias.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

계정 별칭 조회만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

160

Page 169: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IAM 계정 별칭 관리

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 iam_listaccountaliases.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 계정 별칭 목록을 표시하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체에는 반환할 항목의 최대 수가 포함되어 있습니다. 를 호출합니다.ListAccountAliasesCommand메서드IAM클라이언트 서비스 객체를 생성합니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { ListAccountAliasesCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = { MaxItems: 5 };

const run = async () => { try { const data = await iamClient.send(new ListAccountAliasesCommand(params)); console.log("Success", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_listaccountaliases.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

계정 별칭 삭제만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.iamClient.js. 아래 코드를복사하여 붙여넣으면 IAM 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { IAMClient } from "@aws-sdk/client-iam";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an IAM service client object.const iamClient = new IAMClient({ region: REGION });export { iamClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 iam_deleteaccountalias.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 계정 별칭을 삭제하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체에는 삭제하려는 별칭이 포함됩니다. IAM 서비스 객체의 DeleteAccountAliasCommand 메서드를 호출합니다.

Note

Replace버버를 삭제할 별칭의 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { iamClient } from "./libs/iamClient.js";import { DeleteAccountAliasCommand } from "@aws-sdk/client-iam";

// Set the parametersconst params = { AccountAlias: "ALIAS" }; // ALIAS

161

Page 170: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Kinesis 예제

const run = async () => { try { const data = await iamClient.send(new DeleteAccountAliasCommand(params)); console.log("Success", data); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node iam_deleteaccountalias.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

Amazon Kinesis 예제Amazon Kinesis 는 에서 데이터를 스트리밍하는 플랫폼입니다.AWS는 스트리밍 데이터를 로드하고 분석하기 위한 강력한 서비스를 제공하며 전문화된 필요에 맞게 사용자 지정 스트리밍 데이터 애플리케이션을 빌드할 수 있는 기능도 제공합니다.

Kinesis 용 JavaScript API는Kinesis클라이언트 클래스입니다. Kinesis 클라이언트 클래스 사용에 대한 자세한 내용은 단원을 참조하십시오.클래스: KinesisAPI 참조입니다.

주제• Amazon Kinesis 를 사용하여 웹 페이지 스크롤 진행률 캡처 (p. 162)

Amazon Kinesis 를 사용하여 웹 페이지 스크롤 진행률캡처이 예제에서는 단순 HTML 페이지에서 블로그 페이지의 콘텐츠를 시뮬레이션합니다. 독자가 시뮬레이션된블로그 게시물을 스크롤하면 브라우저 스크립트는 JavaSJavaScript 용 SDK와 페이지 아래쪽 스크롤 거리를기록하고 해당 데이터를PutRecordsCommandKinesis 클라이언트 클래스의 메서드를 호출합니다. 그런 다음 Amazon Kinesis Data Streams 에 의해 캡처된 스트리밍 데이터를 Amazon EC2 인스턴스에서 처리하고Amazon DynamoDB 및 Amazon Redshift 를 포함한 여러 데이터 스토어 중 하나에 저장할 수 있습니다.

앱을 빌드하려면 다음과 같이 하십시오.

1. 사전 조건 작업 완료 (p. 163)2. 생성AWS리소스 (p. 163)3. HTML 생성 (p. 165)4. 브라우저 스크립트를 준비합니다. (p. 166)

162

Page 171: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Kinesis 를 사용하여 웹 페이지 스크롤 진행률 캡처

5. 예제 실행 (p. 169)6. 리소스 삭제 (p. 169)

사전 조건 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript을비롯한 타사 모듈Webpack. 의 안내를 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드가 가능합니다..

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

생성AWS리소스이 주제는 Amazon Kinesis 를 사용하여 브라우저 이벤트 데이터를 캡처하고 처리하는 방법을 보여 주는 예제의 일부입니다. 이 예제의 시작 부분에서 시작하려면 단원을 참조하십시오.Amazon Kinesis 를 사용하여웹 페이지 스크롤 진행률 캡처 (p. 162).

이 예제에는 다음 리소스가 필요합니다.

• Amazon Kinesis 스트림입니다.• 인증되지 않은 자격 증명에 대해 활성화된 액세스 권한이 있는 Amazon Cognito 자격 증명 풀입니다.• 원래 요청 ping에 대한AWS Identity and Access ManagementAmazon Kinesis 스트림에 데이터를 제출할

수 있는 권한을 부여하는 정책이 있는 역할을 생성합니다.

이러한 리소스는 수동으로 만들 수 있지만AWS CloudFormation이 주제의 설명에 따라 이동합니다.

생성AWS리소스를 사용하여AWS CloudFormation

사용 하 여 리소스를 만들려면AWS CloudFormation:

AWS CloudFormation을 사용하면 생성 및 프로비저닝할 수 있습니다.AWS인프라 배포를 예상한 대로 및반복적으로 수행할 수 있습니다. 에 대한 자세한 내용AWS CloudFormation에 대한 자세한 내용은AWSCloudFormation개발자 안내서를 참조하십시오..

1. 설치 및 구성AWS CloudFormation의 지침에 따라AWS CLI사용 설명서.2. 이라는 이름의 파일을 만듭니다.setup.yaml프로젝트 폴더의 루트 디렉터리에 있는 내용을 복사하

고(GitHub 에 있음)를 그것으로 가져옵니다.

Note

이AWS CloudFormation템플릿을 사용하여 생성 된AWS CDK사용 가능(GitHub 에 있음). AWSCDK에 대한 자세한 내용은 AWS Cloud Development Kit (CDK) 개발자 안내서를 참조하세요.

3. 명령 줄에서 다음 명령을 실행하여STACK_NAME스택의 고유한 이름으로 바꿉니다.

163

Page 172: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Kinesis 를 사용하여 웹 페이지 스크롤 진행률 캡처

Important

스택 이름은 내에서 고유해야 합니다.AWS리전 및AWS계정에 액세스합니다. 최대 128자여야하며 숫자와 하이픈은 허용됩니다.

aws cloudformation create-stack --stack-name STACK_NAME --template-body file://setup.yaml --capabilities CAPABILITY_IAM

에 대한 자세한 내용은create-stack명령 파라미터에 대한 자세한 내용은AWS CLI명령 참조 안내서,그리고AWS CloudFormation사용 설명서.

Note

이 템플릿을 사용하여 anoher 스택을 만드는 경우setup.yaml오류가 발생합니다.

리소스가 만들어질 때 리소스를 보려면스택페이지의AWS AWS CloudFormation콘솔에서 스택을 선택하고리소스탭을 선택합니다.

이 예제에서는 다음이 필요합니다.

• Amazon Kinesis 스트림입니다. 브라우저 스크립트를 스트림의 이름을 포함시켜야 합니다.• 인증되지 않은 자격 증명에 대해 활성화된 액세스 권한이 있는 Amazon Cognito 자격 증명 풀입니다. 브

라우저 스크립트에 대한 자격 증명을 획득하려면 자격 증명 풀 ID를 코드에 포함시켜야 합니다. AmazonCognito 자격 증명 풀에 대한 자세한 내용은 단원을 참조하십시오.자격 증명 풀의Amazon Cognito 개발자안내서.

• Amazon Kinesis 스트림에 데이터를 제출할 수 있는 권한을 부여하는 IAM 정책이 첨부된 IAM 역할입니다. IAM 역할 생성에 대한 자세한 내용은 단원을 참조하십시오.역할을 만들어 권한을 위임할AWS서비스의IAM 사용 설명서.

Note

IAM 역할에 연결된 역할 정책입니다. CDK는 자동으로버버버_버버버.

{ "Version": "2012-10-17", "Statement": [

164

Page 173: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Kinesis 를 사용하여 웹 페이지 스크롤 진행률 캡처

{ "Effect": "Allow", "Action": [ "mobileanalytics:PutEvents", "cognito-sync:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "kinesis:Put*" ], "Resource": [ "STREAM_RESOURCE_ARN" ] } ]}

Note

CDK는 자동으로버버버_버버버.

생성AWSAmazon Web Services 관리 콘솔을 사용하는 리소스

콘솔에서 앱에 대한 리소스를 생성하려면AWS CloudFormation사용 설명서. 제공된 템플릿을 사용하여 다음과 같은 이름의 파일을 만듭니다.setup.yaml을 클릭하고 내용을 복사하십시오.(GitHub 에 있음).

Important

스택 이름은 내에서 고유해야 합니다.AWS리전 및AWS계정에 액세스합니다. 최대 128자여야 하며숫자와 하이픈은 허용됩니다.

콘솔에서 스택을 열어 콘솔의 리소스 목록을 봅니다.AWS CloudFormation대시보드를 선택하고리소스탭을선택합니다. 예를 들어 이러한 항목이 필요합니다.

HTML로 블로그 페이지 만들기블로그 페이지용 HTML은 주로 <div> 요소 내에 포함된 일련의 단락으로 구성됩니다. 이 <div>의 스크롤 가능한 높이는 독자가 필요에 따라 콘텐츠를 스크롤한 거리를 계산하는 데 사용됩니다. HTML에는<script>추가 요소를main.js.이 파일에는 페이지에서 스크롤 진행 상황을 캡처하여 Kinesis 및 필요한AWS SDK for JavaScript모듈을 생성합니다. 다음을 사용하여 이 스크립트를 만듭니다.Webpack단원에서설명한 대로브라우저 스크립트 번들링 (p. 168)섹션을 참조하십시오.

<!DOCTYPE html><html><head> <title>AWS SDK for JavaScript (V3) - Amazon Kinesis Application</title></head><body><div id="BlogContent" style="width: 60%; height: 800px; overflow: auto;margin: auto; text-align: center;"> <div> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nulla eget nisl bibendum feugiat. Fusce rhoncus felis at ultricies luctus. Vivamus fermentum cursus sem at interdum. Proin vel lobortis nulla. Aenean rutrum odio in tellus semper rhoncus. Nam eu felis ac augue dapibus laoreet vel in erat. Vivamus vitae mollis turpis.

165

Page 174: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Kinesis 를 사용하여 웹 페이지 스크롤 진행률 캡처

Integer sagittis dictum odio. Duis nec sapien diam. In imperdiet sem nec ante laoreet, vehicula facilisis sem placerat. Duis ut metus egestas, ullamcorper neque et, accumsan quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p> <!-- Additional paragraphs in the blog page appear here --> </div></div><script src="main.js"></script></body></html>

브라우저 스크립트를 작성합니다.SDK 구성

만들기libs디렉터리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.kinesisClient.js. 아래 코드를 복사하여 붙여넣으면 Kinesis 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.Replace버버버 버 버버버생성한 Amazon Cognito 자격 증명 풀 ID를생성AWS리소스 (p. 163).

// Import the required AWS SDK clients and commands for Node.js.const {CognitoIdentityClient} = require("@aws-sdk/client-cognito-identity");const { fromCognitoIdentityPool,} = require("@aws-sdk/credential-provider-cognito-identity");const { KinesisClient, PutRecordsCommand } = require("@aws-sdk/client-kinesis");

// Configure Credentials to use Cognitoconst REGION = "REGION";const kinesisClient = new KinesisClient({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({region: REGION}), identityPoolId: "IDENTITY_POOL_ID" // IDENTITY_POOL_ID })});export {kinesisClient}

이 코드를 찾을 수 있습니다.(GitHub 에 있음).

스크롤 레코드 생성

스크롤 진행 상황은 블로그 게시물의 콘텐츠를 포함하는 <div>의 scrollHeight 및 scrollTop 속성을 사용하여 계산됩니다. 각 스크롤 레코드는 이벤트 리스너 함수에서 생성된scroll이벤트를 생성한 다음 Kinesis 에 정기적으로 제출하기 위한 레코드 배열에 추가됩니다. ReplacePARTITION_KEY문자열이어야 하는 parition 키를 사용합니다. 파티션 문자열에 대한 자세한 내용은 단원을 참조하십시오.PutRecord의Amazon Kinesis Data Analytics 개발자 안내서.

다음 코드 조각은 이 단계를 보여줍니다. (전체 예제는 브라우저 스크립트 번들링 (p. 168) 섹션을 참조하십시오.)

import { PutRecordsCommand } from "@aws-sdk/client-kinesis";import { kinesisClient } from "./libs/kinesisClient.js";// Get the ID of the web page element.var blogContent = document.getElementById('BlogContent');

// Get scrollable height.var scrollableHeight = blogContent.clientHeight;

var recordData = [];

166

Page 175: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Kinesis 를 사용하여 웹 페이지 스크롤 진행률 캡처

var TID = null;blogContent.addEventListener('scroll', function(event) { console.log('scrolled'); clearTimeout(TID); // Prevent creating a record while a user is actively scrolling. TID = setTimeout(function() { // Calculate the percentage. var scrollableElement = event.target; var scrollHeight = scrollableElement.scrollHeight; var scrollTop = scrollableElement.scrollTop;

var scrollTopPercentage = Math.round((scrollTop / scrollHeight) * 100); var scrollBottomPercentage = Math.round(((scrollTop + scrollableHeight) / scrollHeight) * 100);

// Create the Amazon Kinesis record. var record = { Data: JSON.stringify({ blog: window.location.href, scrollTopPercentage: scrollTopPercentage, scrollBottomPercentage: scrollBottomPercentage, time: new Date() }), PartitionKey: 'PARTITION_KEY' // Must be a string. }; recordData.push(record); }, 100);});

Kinesis 레코드 제출배열에 레코드가 있는 경우 1초에 한 번씩 해당 보류 레코드가 Kinesis 에 전송됩니다.ReplaceSTREAM_NAME에서 생성한 스트림 이름을생성AWS리소스 (p. 163)섹션을 참조하십시오.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하십시오V3 명령 사용 (p. 3)

다음 코드 조각은 이 단계를 보여줍니다. (전체 예제는 브라우저 스크립트 번들링 (p. 168) 섹션을 참조하십시오.)

// Helper function to upload data to Amazon Kinesis.const uploadData = async () => { try { const data = await client.send(new PutRecordsCommand({ Records: recordData, StreamName: 'STREAM_NAME' })); console.log('data', data); console.log("Kinesis updated", data); } catch (err) { console.log("Error", err); }};// Run uploadData every second if data exists.setInterval(function() { if (!recordData.length) { return; } uploadData(); // clear record data recordData = [];

167

Page 176: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Kinesis 를 사용하여 웹 페이지 스크롤 진행률 캡처

}, 1000);

브라우저 스크립트 번들링

이 항목에서는 페이지에서 스크롤 진행 상황을 캡처하여 Kinesis 및 필수AWS SDK for JavaScript모듈을 참조하십시오.

아직 수행하지 않았다면사전 조건 작업 (p. 163)를 사용하여 webpack을 설치할 수 있습니다.

Note

에 대한 자세한 정보Webpack에 대한 자세한 내용은webpack으로 애플리케이션 번들링 (p. 42).

명령 줄에서 다음을 실행하여 이 예제의 JavaScript<main.js>:

webpack kinesis-example.js --mode development --target web --devtool false -o main.js

다음은 Kinesis 웹 페이지 스크롤 진행 상황 예제를 캡처하는 용 전체 브라우저 스크립트 코드입니다.

// Configure Credentials to use Cognitoconst { CognitoIdentityClient } = require("@aws-sdk/client-cognito-identity");const { fromCognitoIdentityPool,} = require("@aws-sdk/credential-provider-cognito-identity");const { Kinesis, PutRecordsCommand } = require("@aws-sdk/client-kinesis");

const REGION = "REGION";const client = new Kinesis({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({region: REGION}), identityPoolId: "IDENTITY_POOL_ID" // IDENTITY_POOL_ID })});// Get the ID of the web page element.var blogContent = document.getElementById('BlogContent');

// Get scrollable height.var scrollableHeight = blogContent.clientHeight;

var recordData = [];var TID = null;blogContent.addEventListener('scroll', function(event) { console.log('scrolled'); clearTimeout(TID); // Prevent creating a record while a user is actively scrolling. TID = setTimeout(function() { // Calculate the percentage. var scrollableElement = event.target; var scrollHeight = scrollableElement.scrollHeight; var scrollTop = scrollableElement.scrollTop;

var scrollTopPercentage = Math.round((scrollTop / scrollHeight) * 100); var scrollBottomPercentage = Math.round(((scrollTop + scrollableHeight) / scrollHeight) * 100);

// Create the Amazon Kinesis record. var record = { Data: JSON.stringify({ blog: window.location.href, scrollTopPercentage: scrollTopPercentage, scrollBottomPercentage: scrollBottomPercentage,

168

Page 177: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드AWS Lambda 예제

time: new Date() }), PartitionKey: 'PARTITION_KEY' // Must be a string. }; recordData.push(record); }, 100);});

// Helper function to upload data to Amazon Kinesis.const uploadData = async () => { try { const data = await client.send(new PutRecordsCommand({ Records: recordData, StreamName: 'STREAM_NAME' })); console.log('data', data); console.log("Kinesis updated", data); } catch (err) { console.log("Error", err); }};// Run uploadData every second if data exists.setInterval(function() { if (!recordData.length) { return; } uploadData(); // clear record data recordData = [];}, 1000);

예제 실행이 주제는 Amazon Kinesis 를 사용하여 브라우저 이벤트 데이터를 캡처하고 처리하는 방법을 보여 주는 예제의 일부입니다. 예제 시작 부분에서 시작하려면 단원을 참조하십시오.Amazon Kinesis 를 사용하여 웹 페이지 스크롤 진행률 캡처 (p. 162).

열기blog_page.html브라우저에서 선택합니다. 텍스트 주위에 스크롤 막대가 표시될 때까지 브라우저 창의 크기를 조정합니다. 스크롤 막대를 스크롤하면 Kinesis 에서 이벤트 데이터가 캐핑됩니다. 기록된 데이터를 보려면 Amazon 명령 콘솔에서 스트림을 열고모니터링탭을 클릭하고스트림 측정치창에서 액세스합니다.

리소스 삭제이 주제는 Amazon Kinesis 를 사용하여 브라우저 이벤트 데이터를 캡처하고 처리하는 방법을 보여 주는 예제의 일부입니다. 예제 시작 부분에서 시작하려면 단원을 참조하십시오.Amazon Kinesis 를 사용하여 웹 페이지 스크롤 진행률 캡처 (p. 162).

예제를 마치면 불필요한 비용이 발생하지 않도록 리소스를 삭제해야 합니다. 이 작업은 다음 중 하나를 수행하여 수행할 수 있습니다.스택 삭제Amazon Web Services 관리 콘솔의 관리스택 삭제명령줄로 이동합니다.

AWS Lambda 예제AWS Lambda는 서버를 프로비저닝하거나 관리하거나 워크로드 인식 클러스터 확장 로직을 생성하거나 이벤트 통합을 유지하거나 런타임을 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다.

Important

AWS SDK for JavaScriptv2는 v3이 아닌 기본 Lambda Node.js 환경에 설치됩니다. 여기에 링크 된예제는 필요한AWS SDK for JavaScriptv3 모듈을 예제 코드와 함께 사용하십시오.

169

Page 178: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Lex 예제

에 대한 JavaScript APIAWS Lambda를 통해 노출되는람다세르클라이언트 클래스입니다.

다음은 Lambda 함수를 생성 및 사용하는 방법을 보여 주는 예제 목록입니다.AWS SDK for JavaScriptv3:

• Lambda 함수 만들기 및 사용 (p. 342)(예제 단순화)• API Gateway 사용하여 Lambda 호출 (p. 312)• 실행할 예약된 이벤트 만들기AWS Lambda함수 (p. 334)

Amazon Lex 예제Amazon LexAWS서비스를 통해 음성 및 텍스트를 사용하는 애플리케이션에 대화형 인터페이스를 구축합니다.

Amazon Lex 용 JavaScript API는Lex 런타임 서비스클라이언트 클래스입니다.

• Amazon Lex 챗봇 구축 (p. 349)

Amazon Polly 예제

이 Node.js 코드 예제는 다음을 보여 줍니다.

• Amazon Polly 를 사용하여 녹음된 오디오를 Amazon S3

시나리오이 예제에서는 일련의 Node.js 모듈을 사용하여 Amazon Polly에서 녹음한 오디오를 Amazon S3 클라이언트클래스의 다음 메서드를 사용하여 Amazon S3에 자동으로 업로드합니다.

• StartSpeechSynthesisTaskCommand

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 에 대한 지침에 따라 노드 JavaScript 예제를 실행하는 프로젝트 환경을 설정GitHub.• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용

은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.• 템플릿을 사용하여 예제에 대한 리소스 만들기(GitHub 에 있음)를 생성하려면AWS CDK스택 중 하나를 사

용하여AWS웹 서비스 관리 콘솔또는AWS CLI. 자습서를 마쳤을 때 스택을 수정하거나 스택과 관련 리소스를 삭제하는 방법에 대한 지침은(GitHub 에 있음).

Note

스택 이름은AWS리전 및AWS계정을 생성합니다. 최대 128자여야 하며, 숫자와 하이픈은 허용됩니다.

170

Page 179: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Polly 를 사용하여 녹음된 오디오를 Amazon S3

이 결과AWS CloudFormation스택은 다음 리소스를 생성합니다.• 한AWS Identity and Access Management역할에 Amazon Polly 에 대한 모든 액세스 권한을 부여해야

합니다.• IAM 역할이 연결된 Amazon Cognito 자격 증명 풀입니다.

Amazon Polly 를 사용하여 녹음된 오디오를 AmazonS3파일 이름이 polly_synthesize_to_s3.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지설치를 포함하여 위와 같이 SDK를 구성해야 합니다. 코드에서REGION, 그리고버버_버버. Amazon Polly 액세스하려면Polly클라이언트 서비스 객체입니다. Replace“버버버버버 버 버버버”를 사용하여IdentityPoolId( 사용)예제 페이지이 예제에서는 생성한 Amazon Cognito 자격 증명 풀의 이것은 또한 각 클라이언트 객체로 전달됩니다.

Note

를 호출합니다.StartSpeechSynthesisCommand메서드가 음성 메시지를 합성하여 Amazon S3 버킷에 업로드합니다.

const { CognitoIdentityClient } = require("@aws-sdk/client-cognito-identity");const { fromCognitoIdentityPool,} = require("@aws-sdk/credential-provider-cognito-identity");const { Polly, StartSpeechSynthesisTaskCommand,} = require("@aws-sdk/client-polly");

// Set the AWS Regionconst REGION = "REGION"; //e.g. "us-east-1"

// Create the parametersvar s3Params = { OutputFormat: "mp3", OutputS3BucketName: "BUCKET_NAME", Text: "Hello David, How are you?", TextType: "text", VoiceId: "Joanna", SampleRate: "22050",};// Create the Polly service client, assigning your credentialsconst polly = new Polly({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: REGION }), identityPoolId: "IDENTITY_POOL_ID", // IDENTITY_POOL_ID }),});

const run = async () => { try { const data = await polly.send( new StartSpeechSynthesisTaskCommand(s3Params) );

171

Page 180: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 예제

console.log("Audio file added to " + s3Params.OutputS3BucketName); } catch (err) { console.log("Error putting object", err); }};run();

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon S3 예제Amazon Simple Storage Service (Amazon S3) 는 확장성이 뛰어난 클라우드 스토리지를 제공하는 웹 서비스입니다. Amazon S3 는 간단한 웹 서비스 인터페이스를 통해 웹 어디서나 원하는 양의 데이터를 저장 및 검색할 수 있어 사용하기 편리한 객체 스토리지를 제공합니다.

주제• Amazon S3 브라우저 예제 (p. 172)• Amazon S3 Node.js 예제 (p. 197)

Amazon S3 용 JavaScript API는S3클라이언트 클래스입니다. Amazon S3 클라이언트 클래스 사용에 대한자세한 내용은 단원을 참조하십시오.클래스: S3API 참조의

Amazon S3 브라우저 예제다음 주제에서는 두 가지 방법을 보여줍니다.AWS SDK for JavaScriptAmazon S3 버킷과의 상호 작용을 위해 브라우저에서 사용할 수 있습니다.

• 첫 번째 예제는 Amazon S3 버킷의 기존 사진을 (인증되지 않은) 사용자도 볼 수 있는 간단한 시나리오를보여줍니다.

• 두 번째 예제는 버킷의 사진에 대해 업로드, 삭제 등의 작업을 수행할 수 있는 복잡한 시나리오를 보여줍니다.

주제• 브라우저에서 Amazon S3 버킷의 사진 보기 (p. 172)• 브라우저에서 Amazon S3에 사진 업로드 (p. 182)

브라우저에서 Amazon S3 버킷의 사진 보기

172

Page 181: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

이 브라우저 스크립트 코드 예제는 다음을 보여 줍니다.

• Amazon Simple Storage Service (Amazon S3) 버킷에서 사진 앨범을 생성하고 인증되지 않은 사용자가사진을 볼 수 있도록 허용하는 방법.

시나리오

이 예제에서는 단순한 HTML 페이지를 통해 사진 앨범의 사진을 볼 수 있는 브라우저 기반 애플리케이션이제공됩니다. 사진 앨범은 사진이 업로드되는 Amazon S3 버킷에 있습니다.

브라우저 스크립트는 JavaSJavaScript 용 SDK를 사용하여 Amazon S3 버킷과 상호 작용합니다. 이 스크립트는ListObjectsCommand메서드를 Amazon S3 사진 앨범을 볼 수 있습니다.

사전 필수 작업

이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.

Note

이 예제에서는 동일한 사용 해야 합니다.AWSAmazon S3 버킷과 Amazon S3 버킷과 AmazonCognito 자격 증명 풀의 리전입니다.

로컬 환경 설정

이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사모듈입니다. 의 지시 사항을 따릅니다.GitHub.

버킷 생성

에서Amazon S3 콘솔에서 앨범과 사진을 저장할 수 있는 Amazon S3 버킷을 생성합니다. 콘솔을 사용하여S3 버킷을 생성하는 방법에 대한 자세한 내용은 단원을 참조하세요.버킷 생성의Amazon Simple StorageService 콘솔 사용 안내서.

Amazon S3 버킷을 생성할 때 다음을 수행합니다.

• 후속 사전 필수 작업에서 사용할 수 있도록 버킷 이름을 메모해 둡니다.역할 권한 구성 (p. 174).• 버킷을 생성할 AWS 지역을 선택합니다. 후속 사전 필수 작업에서 Amazon Cognito 자격 증명 풀을 생성하

는 데 사용할 지역과 동일한 지역이어야 합니다. 자격 증명 풀 생성 (p. 173).• 에서버킷 생성마법사의버킷 생성페이지의퍼블릭 액세스 차단을 위한 버킷 설정섹션에서 다음 상자의 선

택을 취소합니다. 새 ACL (액세스 제어 목록) 로 부여되는 버킷 및 객체에 대한 공개 액세스 차단및ACL (액세스 제어 목록) 로 부여되는 버킷 및 객체에 대한 공개 액세스 차단.

버킷 권한을 확인하고 구성하는 방법에 대한 자세한 내용은 단원을 참조하세요.웹 사이트 액세스에 대한권한 설정의Amazon Simple Storage Service 콘솔 사용 안내서.

자격 증명 풀 생성

에Amazon Cognito 콘솔에서 Amazon Cognito 자격 증명 풀을 생성합니다.

자격 증명 풀 생성 시:

173

Page 182: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

• 자격 증명 풀 이름과 역할 이름을 메모해 둡니다.인증되지 않은신원을 나타냅니다.• Sample Code(샘플 코드) 페이지의 플랫폼 목록에서 “JavaScript”를 선택합니다. 그런 다음 샘플 코드를 복

사하거나 적어둡니다.

Note

작업할 코드의 플랫폼 목록에서 "JavaScript"를 선택해야 합니다.

역할 권한 구성

앨범 및 사진을 보려면 방금 생성한 자격 증명 풀의 IAM 역할에 권한을 추가해야 합니다. 다음과 같이 정책을생성하며 시작합니다.

1. IAM 콘솔을 엽니다.2. 왼쪽 탐색 창에서 정책을 선택한 후 정책 생성을 선택합니다.3. JSON 탭에 다음의 JSON 정의를 입력하되, BUCKET_NAME은 버킷 이름으로 대체합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::BUCKET_NAME" ] } ]}

4. 정책 검토 버튼을 선택하고 정책 이름을 지정한 다음 설명을 입력하고(원할 경우), 정책 생성 버튼을 선택합니다.

나중에 찾아서 IAM 역할에 연결할 수 있도록 이름을 메모해 두십시오.

정책이 생성되고 나면IAM 콘솔. 용 IAM 역할을 찾습니다.인증되지 않은Amazon Cognito 가 이전 필수 구성요소 작업에서 생성한 자격 증명인 자격 증명 풀 생성 (p. 173). 방금 생성한 정책을 사용하여 이 자격 증명에 권한을 추가합니다.

IAM 역할 생성에 대한 자세한 내용은 단원을 참조하십시오.역할에 대한 권한을 위임할 역할 생성AWS서비스의IAM 사용 설명서.

CORS 구성

브라우저 스크립트가 Amazon S3 버킷에 액세스하려면 먼저CORS 구성 (p. 40)를 다음과 같이 선택합니다.

Important

새 S3 콘솔에서 CORS 구성은 JSON이어야 합니다.

JSON

[ { "AllowedHeaders": [ "*" ],

174

Page 183: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

"AllowedMethods": [ "HEAD", "GET" ], "AllowedOrigins": [ "*" ] }]

XML

<?xml version="1.0" encoding="UTF-8"?><CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>HEAD</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule></CORSConfiguration>

앨범 만들기 및 사진 업로드

이 예제에서는 사용자가 이미 버킷에 있는 사진만 볼 수 있기 때문에 버킷에 앨범을 생성하고 그 앨범으로 사진을 업로드해야 합니다.

Note

이 예제의 경우, 사진 파일의 파일명은 하나의 밑줄("_")로 시작해야 합니다. 이 문자는 나중에 필터링하는 데 중요합니다. 또한, 사진 소유자의 저작권을 존중해 주십시오.

1. 에Amazon S3 콘솔에서 앞서 생성한 버킷을 엽니다.2. 에개요탭에서폴더 생성을 클릭하여 폴더를 만듭니다. 이 예제에서는 폴더명을 "album1", "album2" 및

"album3"으로 지정합니다.3. album1과 album2에 대해 폴더를 선택한 다음 다음과 같이 사진을 업로드합니다.

a. 업로드를 선택합니다.b. 사용할 사진 파일을 끌거나 선택하고 다음을 선택합니다.c. 퍼블릭 권한 관리에서 이 객체에 퍼블릭 읽기 액세스 권한을 부여함을 선택합니다.d. 선택업로드(왼쪽 아래 모서리).

4. album3은 비워둡니다.

필요한 SDK 클라이언트 및 패키지 설치

다음 SDK 모듈을 설치합니다.

• client-s3

• client-cognito-identity

• credential-provider-cognito-identity

Note

SDK 모듈 설치에 대한 자세한 내용은 단원을 참조하십시오.JavaScript 용 SDK 설치 (p. 24).

175

Page 184: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

Webpack 설치

의 V3을 사용하려면AWS SDK for JavaScript브라우저에서webpack를 사용하여 자바 스크립트 모듈과 함수를 번들로 묶습니다.

을(를) 설치하려면webpack명령 프롬프트에서 다음을 실행합니다.

npm install --save-dev webpack

Important

샘플의 샘플을 보려면package.json이 예는 단원을 참조하십시오.AWS SDK forJavaScriptGitHub 의 코드 샘플.

Note

Webpack 설치에 대한 자세한 내용은webpack으로 애플리케이션 번들링 (p. 42).

웹페이지 정의

사진 보기 애플리케이션을 위한 HTML은 브라우저 스크립트가 보기 인터페이스를 생성하는 <div> 요소로구성됩니다.

이<script>요소는 추가main.js파일에, 예제에 필요한 모든 JavaScript 포함되어 있습니다.

Note

를 생성하려면main.js파일에 대한 자세한 내용은코드 실행 (p. 179).

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)

<!DOCTYPE html><html><head> <script type="text/javascript" src="./main.js"></script></head><body><h1>Photo album viewer</h1><div id="viewer" /><script> listAlbums();</script></body></html>

SDK 구성

CognitoIdentityCredentials 메서드를 호출하여 SDK를 구성하는 데 필요한 자격 증명을 획득합니다.Amazon Cognito 자격 증명 풀 ID를 제공해야 합니다. 그런 다음, S3 서비스 객체를 생성합니다.

// Load the required clients and packagesconst { CognitoIdentityClient } = require("@aws-sdk/client-cognito-identity");const { fromCognitoIdentityPool,} = require("@aws-sdk/credential-provider-cognito-identity");

176

Page 185: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

const { S3Client, ListObjectsCommand } = require("@aws-sdk/client-s3");

// Initialize the Amazon Cognito credentials providerconst REGION = "region"; //e.g., 'us-east-1'const s3 = new S3Client({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: REGION }), identityPoolId: "IDENTITY_POOL_ID", // IDENTITY_POOL_ID e.g., eu-west-1:xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx }),});

이 예제에 있는 나머지 코드는 버킷의 앨범과 사진에 관한 정보를 수집 및 제공하기 위해 다음의 함수를 정의합니다.

• listAlbums

• viewAlbum

버킷에 앨범 나열

버킷에 있는 모든 앨범의 목록을 표시하기 위해 애플리케이션의listAlbums함수를 호출합니다.ListObjectsCommand메서드의S3클라이언트 서비스 객체를 생성합니다. 이 함수는 CommonPrefixes속성을 사용하므로 이 호출은 앨범으로 사용된 객체(폴더)만 반환합니다.

이 함수의 나머지 부분은 Amazon S3 버킷에서 앨범 목록을 가져오고 웹 페이지에 앨범 목록을 표시하는 데필요한 HTML을 생성합니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)

// A utility function to create HTML.function getHtml(template) { return template.join("\n");}// Make the getHTML function available to the browserwindow.getHTML = getHtml;

// List the photo albums that exist in the bucketvar albumBucketName = "BUCKET_NAME"; //BUCKET_NAME

const listAlbums = async () => { try { const data = await s3.send( new ListObjectsCommand({ Delimiter: "/", Bucket: albumBucketName }) ); var albums = data.CommonPrefixes.map(function (commonPrefix) { var prefix = commonPrefix.Prefix; var albumName = decodeURIComponent(prefix.replace("/", "")); return getHtml([ "<li>", '<button style="margin:5px;" onclick="viewAlbum(\'' + albumName + "')\">", albumName, "</button>", "</li>",

177

Page 186: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

]); }); var message = albums.length ? getHtml(["<p>Click an album name to view it.</p>"]) : "<p>You don't have any albums. You need to create an album."; var htmlTemplate = [ "<h2>Albums</h2>", message, "<ul>", getHtml(albums), "</ul>", ]; document.getElementById("viewer").innerHTML = getHtml(htmlTemplate); } catch (err) { return alert("There was an error listing your albums: " + err.message); }};// Make the viewAlbum function available to the browserwindow.listAlbums = listAlbums;

앨범 보기

Amazon S3 버킷에 앨범의 콘텐츠를 표시하기 위해 애플리케이션의 Amazon S3 버킷에 앨범의 콘텐츠를 표시하기 위해 애플리케이션의viewAlbum함수는 앨범 이름을 가져오고 해당 앨범에 대한 Amazon S3 키를 생성합니다. 그런 다음 함수는ListObjectsCommand메서드의S3클라이언트 서비스 객체를 추가하여 앨범에있는 모든 객체 (사진) 의 목록을 획득합니다.

이 함수의 나머지 부분은 앨범에 있는 객체 목록을 가져오고 웹 페이지에 사진을 표시하는 데 필요한 HTML을 생성합니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)

// Show the photos that exist in an albumconst viewAlbum = async (albumName) => { try { var albumPhotosKey = encodeURIComponent(albumName) + "/"; const data = await s3.send( new ListObjectsCommand({ Prefix: albumPhotosKey, Bucket: albumBucketName, }) ); var href = "https://s3." + REGION + ".amazonaws.com/"; var bucketUrl = href + albumBucketName + "/"; var photos = data.Contents.map(function (photo) { var photoKey = photo.Key; var photoUrl = bucketUrl + encodeURIComponent(photoKey); return getHtml([ "<span>", "<div>", "<br/>", '<img style="width:128px;height:128px;" src="' + photoUrl + '"/>', "</div>", "<div>", "<span>", photoKey.replace(albumPhotosKey, ""), "</span>",

178

Page 187: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

"</div>", "</span>", ]); }); var message = photos.length ? "<p>The following photos are present.</p>" : "<p>There are no photos in this album.</p>"; var htmlTemplate = [ "<div>", '<button onclick="listAlbums()">', "Back To albums", "</button>", "</div>", "<h2>", "Album: " + albumName, "</h2>", message, "<div>", getHtml(photos), "</div>", "<h2>", "End of album: " + albumName, "</h2>", "<div>", '<button onclick="listAlbums()">', "Back To albums", "</button>", "</div>", ]; document.getElementById("viewer").innerHTML = getHtml(htmlTemplate); document .getElementsByTagName("img")[0] .setAttribute("style", "display:none;"); } catch (err) { return alert("There was an error viewing your album: " + err.message); }};

// Make the viewAlbum function available to the browserwindow.viewAlbum = viewAlbum;

코드 실행

이 예제의 코드를 실행하려면

1. 모든 코드를 다음과 같이 저장하십시오.s3_PhotoViewer.ts.

Note

이 파일은 다음에서 사용할 수 있습니다.GitHub.2. Replace“버버”를 사용하여AWS리전 (us-west-2.3. Replace“버버 버버”Amazon S3 버킷으로 생성합니다.4. Replace“버버버버버 버 버버버”를 사용하여IdentityPoolId( 사용)예제 페이지이 예제에서 생성한

Amazon Cognito 자격 증명 풀의.

Note

이버버버버버 버 버버버는 그림과 같이 콘솔에 빨간색으로 표시됩니다.

179

Page 188: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

5. 명령 프롬프트에서 다음을 실행하여 이 예제에 대한 JavaScriptmain.js.

webpack s3_PhotoViewer.js --mode development --target web --devtool false -o main.js

Note

설치에 대한 자세한 내용은webpack자세한 내용은webpack으로 애플리케이션 번들링 (p. 42).6. 명령줄에서 다음을 실행하십시오.

node s3_PhotoViewer.js

Amazon S3 버킷에서 사진 보기: 전체 코드

이 섹션에는 Amazon S3 버킷의 사진을 볼 수 있는 예제에 관한 전체 HTML 및 JavaScript 코드가 포함되어있습니다. 단원을 참조하십시오.사전 조건 섹션 (p. 173)에서 자세한 내용과 사전 조건을 확인하십시오.

HTML 예제:

<!DOCTYPE html><html><head> <script type="text/javascript" src="./main.js"></script></head><body><h1>Photo album viewer</h1><div id="viewer" /><script> listAlbums();</script></body></html>

이 예제 코드는GitHub 에 있음.

다음은 이 예제용 브라우저 스크립트 코드입니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)

// Load the required clients and packagesconst { CognitoIdentityClient } = require("@aws-sdk/client-cognito-identity");const { fromCognitoIdentityPool,} = require("@aws-sdk/credential-provider-cognito-identity");const { S3Client, ListObjectsCommand } = require("@aws-sdk/client-s3");

// Initialize the Amazon Cognito credentials providerconst REGION = "region"; //e.g., 'us-east-1'const s3 = new S3Client({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: REGION }), identityPoolId: "IDENTITY_POOL_ID", // IDENTITY_POOL_ID e.g., eu-west-1:xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx }),

180

Page 189: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

});

// A utility function to create HTML.function getHtml(template) { return template.join("\n");}// Make the getHTML function available to the browserwindow.getHTML = getHtml;

// List the photo albums that exist in the bucketvar albumBucketName = "BUCKET_NAME"; //BUCKET_NAME

const listAlbums = async () => { try { const data = await s3.send( new ListObjectsCommand({ Delimiter: "/", Bucket: albumBucketName }) ); var albums = data.CommonPrefixes.map(function (commonPrefix) { var prefix = commonPrefix.Prefix; var albumName = decodeURIComponent(prefix.replace("/", "")); return getHtml([ "<li>", '<button style="margin:5px;" onclick="viewAlbum(\'' + albumName + "')\">", albumName, "</button>", "</li>", ]); }); var message = albums.length ? getHtml(["<p>Click an album name to view it.</p>"]) : "<p>You don't have any albums. You need to create an album."; var htmlTemplate = [ "<h2>Albums</h2>", message, "<ul>", getHtml(albums), "</ul>", ]; document.getElementById("viewer").innerHTML = getHtml(htmlTemplate); } catch (err) { return alert("There was an error listing your albums: " + err.message); }};// Make the viewAlbum function available to the browserwindow.listAlbums = listAlbums;

// Show the photos that exist in an albumconst viewAlbum = async (albumName) => { try { var albumPhotosKey = encodeURIComponent(albumName) + "/"; const data = await s3.send( new ListObjectsCommand({ Prefix: albumPhotosKey, Bucket: albumBucketName, }) ); var href = "https://s3." + REGION + ".amazonaws.com/"; var bucketUrl = href + albumBucketName + "/"; var photos = data.Contents.map(function (photo) { var photoKey = photo.Key; var photoUrl = bucketUrl + encodeURIComponent(photoKey); return getHtml([ "<span>",

181

Page 190: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

"<div>", "<br/>", '<img style="width:128px;height:128px;" src="' + photoUrl + '"/>', "</div>", "<div>", "<span>", photoKey.replace(albumPhotosKey, ""), "</span>", "</div>", "</span>", ]); }); var message = photos.length ? "<p>The following photos are present.</p>" : "<p>There are no photos in this album.</p>"; var htmlTemplate = [ "<div>", '<button onclick="listAlbums()">', "Back To albums", "</button>", "</div>", "<h2>", "Album: " + albumName, "</h2>", message, "<div>", getHtml(photos), "</div>", "<h2>", "End of album: " + albumName, "</h2>", "<div>", '<button onclick="listAlbums()">', "Back To albums", "</button>", "</div>", ]; document.getElementById("viewer").innerHTML = getHtml(htmlTemplate); document .getElementsByTagName("img")[0] .setAttribute("style", "display:none;"); } catch (err) { return alert("There was an error viewing your album: " + err.message); }};

// Make the viewAlbum function available to the browserwindow.viewAlbum = viewAlbum;

이 예제 코드는GitHub 에 있음.

브라우저에서 Amazon S3에 사진 업로드

이 브라우저 스크립트 코드 예제는 다음을 보여 줍니다.

• 사용자가 Amazon S3 버킷에서 사진 앨범을 생성하고 해당 앨범에 사진을 업로드할 수 있도록 브라우저애플리케이션을 생성하는 방법.

182

Page 191: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

시나리오

이 예제에서는 간단한 HTML 페이지에서 사진을 업로드할 수 있는 Amazon S3 버킷에서 사진 앨범을 생성하기 위한 브라우저 기반 애플리케이션을 제공합니다. 이 애플리케이션을 사용하여 추가한 사진과 앨범을 삭제할 수 있습니다.

브라우저 스크립트는 JavaSJavaScript 용 SDK를 사용하여 Amazon S3 버킷과 상호 작용합니다. AmazonS3 클라이언트 클래스의 다음 메서드를 사용하여 사진 앨범 애플리케이션을 활성화합니다.

• PutObjectCommand

• DeleteObjectCommand

• ListObjectsCommand

사전 필수 작업

이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈입니다. 의 지시 사항을 따릅니다.GitHub.

• 에서Amazon S3 콘솔에서 앨범에 사진을 저장하는 데 사용할 Amazon S3 버킷을 생성합니다. 콘솔에서 버킷을 생성하는 방법에 대한 자세한 내용은 단원을 참조하세요.버킷 생성의Amazon Simple StorageService 콘솔 사용 안내서. 둘 다 있는지 확인합니다.Read및쓰기권한객체. 버킷 권한 설정에 대한 자세한내용은웹 사이트 액세스에 대한 권한 설정.

• 에서Amazon Cognito 콘솔Amazon S3 버킷과 동일한 리전에 있는 인증되지 않은 사용자에 대해 활성화된 액세스 권한이 있는 연동 자격 증명을 사용하여 Amazon Cognito 자격 증명 풀을 생성합니다. 브라우저 스크립트에 대한 자격 증명을 획득하려면 자격 증명 풀 ID를 코드에 포함시켜야 합니다. AmazonCognito 연동 자격 증명에 대한 자세한 내용은 단원을 참조하세요.Amazon Cognito 자격 증명 풀 (페더레이션 ID)의Amazon Cognito 개발자 안내서.

• 에서IAM 콘솔에서 인증되지 않은 사용자를 위해 Amazon Cognito 가 생성한 IAM 역할을 찾습니다.Amazon S3 버킷에 읽기 및 쓰기 권한을 부여하려면 다음 정책을 추가합니다. IAM 역할 생성에 대한 자세한 내용은 단원을 참조하십시오.역할에 대한 권한을 위임할 역할 생성AWS서비스의IAM 사용 설명서.

인증되지 않은 사용자에 대해 Amazon Cognito 가 생성한 IAM 역할에 이 역할 정책을 사용합니다.

Warning

인증되지 않은 사용자의 액세스를 활성화하면 버킷과 해당 버킷의 모든 객체, 전 세계 모든 사람에게 쓰기 권한을 부여하게 됩니다. 이러한 보안 태세는 이 사례의 기본 목표에 초점을 맞추는 데유용합니다. 그러나 실제 사례의 경우, 인증된 사용자 및 객체 소유권의 사용 같이 더욱 강화된 보안을 사용하는 것이 좋습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:ListBucket", "s3:PutObject",

183

Page 192: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

"s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::BUCKET_NAME", "arn:aws:s3:::BUCKET_NAME/*" ] } ]}

CORS 구성브라우저 스크립트가 Amazon S3 버킷에 액세스하려면 먼저CORS 구성 (p. 40)를 다음과 같이 선택합니다.

Important

Amazon S3 에서 새로운AWS웹 서비스 관리 콘솔에서 CORS 구성은 JSON이어야 합니다.

JSON

[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "HEAD", "GET", "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [ "ETag" ] }]

XML

<?xml version="1.0" encoding="UTF-8"?><CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedMethod>HEAD</AllowedMethod> <AllowedHeader>*</AllowedHeader> <ExposeHeader>ETag</ExposeHeader> </CORSRule></CORSConfiguration>

필요한 SDK 클라이언트 및 패키지 설치다음 SDK 모듈을 설치합니다.

184

Page 193: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

Note

SDK 모듈 설치에 대한 자세한 내용은 단원을 참조하십시오.JavaScript 용 SDK 설치 (p. 24).

• 클라이언트s3• 클라이언트 코그릿 아이덴티티• 자격 증명-제공자-코그릿 ID

웹팩 설치

의 V3을 사용하려면AWS SDK for JavaScript를 사용하려면 Webpack이 자바 스크립트 모듈과 함수를 번들로 묶어야합니다.

웹 팩을 설치하려면 명령줄에서 다음을 실행합니다.

npm install --save-dev webpack

Important

이 예제에서 package.json의 샘플을 보려면AWS SDK for JavaScriptGitHub 의 코드 샘플.

Note

Webpack 설치에 대한 자세한 내용은webpack으로 애플리케이션 번들링 (p. 42).

웹페이지 정의

사진 보기 애플리케이션을 위한 HTML은<div>브라우저 스크립트가보기/업로드 인터페이스를 생성하는 요소입니다.

이<script>요소는 추가<main.js>파일에, 예제에 필요한 모든 JavaScript 포함되어 있습니다.

Note

를 생성하려면<main.js>파일에 대한 자세한 내용은코드 실행 (p. 191)아래의 를 참조하십시오.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)

<!DOCTYPE html><html><head> <script src="./main.js"></script> <script> function getHtml(template) { return template.join("\n"); } listAlbums(); </script></head><body><h1>My photo albums app</h1><div id="app"></div>

185

Page 194: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

</body></html>

SDK 구성

SDK를 구성하는 데 필요한 자격 증명을 획득합니다.CognitoIdentityCredentials메서드를 추가하고Amazon Cognito 자격 증명 풀 ID를 제공합니다. 그런 다음,S3클라이언트 서비스 객체를 생성합니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)

// Load the required clients and packagesconst { CognitoIdentityClient } = require("@aws-sdk/client-cognito-identity");const { fromCognitoIdentityPool,} = require("@aws-sdk/credential-provider-cognito-identity");const { S3Client, PutObjectCommand, ListObjectsCommand, DeleteObjectCommand, DeleteObjectsCommand } = require("@aws-sdk/client-s3");

// Set the AWS Regionconst REGION = "REGION"; //REGION

// Initialize the Amazon Cognito credentials providerconst s3 = new S3Client({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: REGION }), identityPoolId: "IDENTITY_POOL_ID", // IDENTITY_POOL_ID }),});

const albumBucketName = "BUCKET_NAME"; //BUCKET_NAME

이 예제의 나머지 거의 모든 코드는 버킷의 앨범에 대한 정보를 수집 및 제공하고, 앨범에 사진을 업로드하고업로드된 사진을 표시하며, 사진과 앨범을 삭제하는 일련의 함수로 구성됩니다. 이러한 함수는 다음과 같습니다.

• listAlbums

• createAlbum

• viewAlbum

• addPhoto

• deleteAlbum

• deletePhoto

버킷에 앨범 나열

이 애플리케이션은 Amazon S3 버킷의 앨범을 객체로 생성합니다. 이 객체의 키는 객체 기능이 폴더임을 나타내는 슬래시 문자로 시작합니다. 버킷에 있는 모든 앨범의 목록을 표시하기 위해 애플리케이션의listAlbums함수를 호출합니다.ListObjectsCommand메서드의S3클라이언트 서비스 개체를 사용하는동안commonPrefix호출은 앨범으로 사용 된 객체 만 반환합니다.

이 함수의 나머지 부분은 Amazon S3 버킷에서 앨범 목록을 가져오고 웹 페이지에 앨범 목록을 표시하는 데필요한 HTML을 생성합니다. 또한 개별 앨범 삭제 및 열기도 활성화합니다.

186

Page 195: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)

// A utility function to create HTMLfunction getHtml(template) { return template.join("\n");}// Make getHTML function available to the browserwindow.getHTML = getHtml;

// List the photo albums that exist in the bucketconst listAlbums = async () => { try { const data = await s3.send( new ListObjectsCommand({ Delimiter: "/", Bucket: albumBucketName }) );

if (data.CommonPrefixes === undefined) { const htmlTemplate = [ "<p>You don't have any albums. You need to create an album.</p>", "<button onclick=\"createAlbum(prompt('Enter album name:'))\">", "Create new album", "</button>", ]; document.getElementById("app").innerHTML = htmlTemplate; } else { var albums = data.CommonPrefixes.map(function (commonPrefix) { var prefix = commonPrefix.Prefix; var albumName = decodeURIComponent(prefix.replace("/", "")); return getHtml([ "<li>", "<span onclick=\"deleteAlbum('" + albumName + "')\">X</span>", "<span onclick=\"viewAlbum('" + albumName + "')\">", albumName, "</span>", "</li>", ]); }); var message = albums.length ? getHtml([ "<p>Click an album name to view it.</p>", "<p>Click the X to delete the album.</p>", ]) : "<p>You do not have any albums. You need to create an album."; const htmlTemplate = [ "<h2>Albums</h2>", message, "<ul>", getHtml(albums), "</ul>", "<button onclick=\"createAlbum(prompt('Enter Album Name:'))\">", "Create new Album", "</button>", ]; document.getElementById("app").innerHTML = getHtml(htmlTemplate); } } catch (err) { return alert("There was an error listing your albums: " + err.message); }};

187

Page 196: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

// Make listAlbums function available to the browserwindow.listAlbums = listAlbums;

버킷에 앨범 만들기

Amazon S3 버킷에서 앨범을 생성하려면 애플리케이션의createAlbum이 함수는 새 앨범에 지정된 이름을 확인하여 적합한 문자가 포함되는지 확인합니다. 그런 다음 이 함수는 Amazon S3 객체 키를 생성하고 이를headObjectAmazon S3 서비스 객체의 메서드를 호출합니다. 이 메서드는 지정된 키에 대한 메타데이터를 반환하므로, 데이터를 반환하는 경우 해당 키가 있는 객체가 이미 있는 것입니다.

앨범이 아직 없는 경우 이 함수는PutObjectCommand메서드의S3클라이언트 서비스 개체를 사용하여 앨범을 만들 수 있습니다. 그런 다음 viewAlbum 함수를 호출하여 비어 있는 새 앨범을 표시합니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)

// Create an album in the bucketconst createAlbum = async (albumName) => { albumName = albumName.trim(); if (!albumName) { return alert("Album names must contain at least one non-space character."); } if (albumName.indexOf("/") !== -1) { return alert("Album names cannot contain slashes."); } var albumKey = encodeURIComponent(albumName); try { const key = albumKey + "/"; const params = { Bucket: albumBucketName, Key: key }; const data = await s3.send(new PutObjectCommand(params)); alert("Successfully created album."); viewAlbum(albumName); } catch (err) { return alert("There was an error creating your album: " + err.message); }};

// Make createAlbum function available to the browserwindow.createAlbum = createAlbum;

앨범 보기

Amazon S3 버킷에 앨범의 콘텐츠를 표시하기 위해 애플리케이션의 Amazon S3 버킷에 앨범의 콘텐츠를 표시하기 위해 애플리케이션의viewAlbum함수는 앨범 이름을 가져오고 해당 앨범에 대한 Amazon S3 키를 생성합니다. 그런 다음 함수는listObjects메서드의S3클라이언트 서비스 개체를 사용하여 앨범에 있는 모든개체 (사진) 의 목록을 획득합니다.

이 함수의 나머지 부분은 앨범에서 객체(사진) 목록을 가져오고 웹 페이지에 사진을 표시하는 데 필요한HTML을 생성합니다. 또한 개별 사진을 삭제하고 앨범 목록으로 다시 이동하는 작업도 활성화합니다.

// View the contents of an album

const viewAlbum = async (albumName) => {

188

Page 197: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

const albumPhotosKey = encodeURIComponent(albumName) + "/"; try { const data = await s3.send( new ListObjectsCommand({ Prefix: albumPhotosKey, Bucket: albumBucketName, }) ); if (data.Contents.length === 1) { var htmlTemplate = [ "<p>You don't have any photos in this album. You need to add photos.</p>", '<input id="photoupload" type="file" accept="image/*">', '<button id="addphoto" onclick="addPhoto(\'' + albumName + "')\">", "Add photo", "</button>", '<button onclick="listAlbums()">', "Back to albums", "</button>", ]; document.getElementById("app").innerHTML = getHtml(htmlTemplate); } else { console.log(data); const href = "https://s3." + REGION + ".amazonaws.com/"; const bucketUrl = href + albumBucketName + "/"; const photos = data.Contents.map(function (photo) { const photoKey = photo.Key; console.log(photo.Key); const photoUrl = bucketUrl + encodeURIComponent(photoKey); return getHtml([ "<span>", "<div>", '<img style="width:128px;height:128px;" src="' + photoUrl + '"/>', "</div>", "<div>", "<span onclick=\"deletePhoto('" + albumName + "','" + photoKey + "')\">", "X", "</span>", "<span>", photoKey.replace(albumPhotosKey, ""), "</span>", "</div>", "</span>", ]); }); var message = photos.length ? "<p>Click the X to delete the photo.</p>" : "<p>You don't have any photos in this album. You need to add photos.</p>"; const htmlTemplate = [ "<h2>", "Album: " + albumName, "</h2>", message, "<div>", getHtml(photos), "</div>", '<input id="photoupload" type="file" accept="image/*">', '<button id="addphoto" onclick="addPhoto(\'' + albumName + "')\">", "Add photo", "</button>", '<button onclick="listAlbums()">', "Back to albums", "</button>",

189

Page 198: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

]; document.getElementById("app").innerHTML = getHtml(htmlTemplate); document.getElementsByTagName("img")[0].remove(); } } catch (err) { return alert("There was an error viewing your album: " + err.message); }};// Make viewAlbum function available to the browserwindow.viewAlbum = viewAlbum;

앨범에 사진 추가

Amazon S3 버킷의 앨범에 사진을 업로드하기 위해 애플리케이션의 Amazon S3 버킷의 앨범에 사진을 업로드하기 위해 애플리케이션의addPhoto함수는 웹 페이지에서 파일 선택기 요소를 사용하여 업로드할 파일을식별합니다. 그런 현재 앨범 이름과 파일 이름에서 업로드할 사진에 대한 키를 구성합니다.

함수를 호출합니다.putObject메서드를 사용하여 사진을 업로드합니다. 사진을 업로드한 후 이 함수는 업로드된 사진이 나타나도록 앨범을 다시 표시합니다.

// Add a photo to an albumconst addPhoto = async (albumName) => { const files = document.getElementById("photoupload").files; try { const albumPhotosKey = encodeURIComponent(albumName) + "/"; const data = await s3.send( new ListObjectsCommand({ Prefix: albumPhotosKey, Bucket: albumBucketName }) ); const file = files[0]; const fileName = file.name; const photoKey = albumPhotosKey + fileName; const uploadParams = { Bucket: albumBucketName, Key: photoKey, Body: file }; try { const data = await s3.send(new PutObjectCommand(uploadParams)); alert("Successfully uploaded photo."); viewAlbum(albumName); } catch (err) { return alert("There was an error uploading your photo: ", err.message); } } catch (err) { if (!files.length) { return alert("Choose a file to upload first."); } }};// Make addPhoto function available to the browserwindow.addPhoto = addPhoto;

사진 삭제

Amazon S3 버킷의 앨범에서 사진을 삭제하려면 애플리케이션의 Amazon S3 버킷의 앨범에서 사진을 삭제하려면 애플리케이션의deletePhoto함수를 호출합니다.DeleteObjectCommand메서드를 사용하여

190

Page 199: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

Amazon S3 클라이언트 서비스 객체의 메서드를 사용할 수 있습니다. 이렇게 하면 함수에 전달된 photoKey값으로 지정되는 사진이 삭제됩니다.

// Delete a photo from an albumconst deletePhoto = async (albumName, photoKey) => { try { console.log(photoKey); const params = { Key: photoKey, Bucket: albumBucketName }; const data = await s3.send(new DeleteObjectCommand(params)); console.log("Successfully deleted photo."); viewAlbum(albumName); } catch (err) { return alert("There was an error deleting your photo: ", err.message); }};// Make deletePhoto function available to the browserwindow.deletePhoto = deletePhoto;

앨범 삭제

Amazon S3 버킷에서 앨범을 삭제하려면 애플리케이션의deleteAlbum함수를 호출합니다.deleteObjects메서드를 사용하여 Amazon S3 클라이언트 서비스 객체의 메서드를 사용할 수 있습니다.

// Delete an album from the bucketconst deleteAlbum = async (albumName) => { const albumKey = encodeURIComponent(albumName) + "/"; try { const params = { Bucket: albumBucketName, Prefix: albumKey }; const data = await s3.send(new ListObjectsCommand(params)); const objects = data.Contents.map(function (object) { return { Key: object.Key }; }); try { const params = { Bucket: albumBucketName, Delete: { Objects: objects }, Quiet: true, }; const data = await s3.send(new DeleteObjectsCommand(params)); listAlbums(); return alert("Successfully deleted album."); } catch (err) { return alert("There was an error deleting your album: ", err.message); } } catch (err) { return alert("There was an error deleting your album1: ", err.message); }};// Make deleteAlbum function available to the browserwindow.deleteAlbum = deleteAlbum;

코드 실행

이 예제의 코드를 실행하려면

1. 모든 코드를 다음과 같이 저장하십시오.s3_PhotoExample.ts.

191

Page 200: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

Note

이 파일을 사용할 수 있습니다.GitHub 에 있음.2. Replace“버버”를 사용하여AWS리전입니다 (예: us-east-1).3. Replace“버버 버버”Amazon S3 버킷으로 생성합니다.4. Replace“버버버버버 버 버버버”에서 IdentityPoolId 로예제 페이지이 예제에서 생성한 Amazon Cognito 자격

증명 풀의Note

이버버버버버 버 버버버는 아래와 같이 콘솔에 빨강으로 표시됩니다.

5. 명령 줄에서 다음을 실행하여 이 예제의 JavaScript<main.js>:

webpack s3_PhotoExample.ts --mode development --target web --devtool false -o main.js

Note

WebPack 설치에 대한 자세한 내용은webpack으로 애플리케이션 번들링 (p. 42).6.

명령줄에서 다음을 실행하십시오.

node s3_PhotoUploader.ts

Amazon S3 사진 업로드: 전체 코드이 섹션에는 사진이 Amazon S3 사진 앨범에 업로드되는 예제에 관한 전체 HTML 및 JavaScript 코드가 포함되어 있습니다. 자세한 내용과 사전 조건은 상위 섹션 (p. 182)을 참조하십시오,.

HTML 예제:

<!DOCTYPE html><html><head> <script src="./main.js"></script> <script> function getHtml(template) { return template.join("\n"); } listAlbums(); </script></head><body><h1>My photo albums app</h1><div id="app"></div></body></html>

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

브라우저 스크립트 코드 예제:

// Load the required clients and packages

192

Page 201: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

const { CognitoIdentityClient } = require("@aws-sdk/client-cognito-identity");const { fromCognitoIdentityPool,} = require("@aws-sdk/credential-provider-cognito-identity");const { S3Client, PutObjectCommand, ListObjectsCommand, DeleteObjectCommand, DeleteObjectsCommand } = require("@aws-sdk/client-s3");

// Set the AWS Regionconst REGION = "REGION"; //REGION

// Initialize the Amazon Cognito credentials providerconst s3 = new S3Client({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: REGION }), identityPoolId: "IDENTITY_POOL_ID", // IDENTITY_POOL_ID }),});

const albumBucketName = "BUCKET_NAME"; //BUCKET_NAME

// A utility function to create HTMLfunction getHtml(template) { return template.join("\n");}// Make getHTML function available to the browserwindow.getHTML = getHtml;

// List the photo albums that exist in the bucketconst listAlbums = async () => { try { const data = await s3.send( new ListObjectsCommand({ Delimiter: "/", Bucket: albumBucketName }) );

if (data.CommonPrefixes === undefined) { const htmlTemplate = [ "<p>You don't have any albums. You need to create an album.</p>", "<button onclick=\"createAlbum(prompt('Enter album name:'))\">", "Create new album", "</button>", ]; document.getElementById("app").innerHTML = htmlTemplate; } else { var albums = data.CommonPrefixes.map(function (commonPrefix) { var prefix = commonPrefix.Prefix; var albumName = decodeURIComponent(prefix.replace("/", "")); return getHtml([ "<li>", "<span onclick=\"deleteAlbum('" + albumName + "')\">X</span>", "<span onclick=\"viewAlbum('" + albumName + "')\">", albumName, "</span>", "</li>", ]); }); var message = albums.length ? getHtml([ "<p>Click an album name to view it.</p>", "<p>Click the X to delete the album.</p>", ]) : "<p>You do not have any albums. You need to create an album."; const htmlTemplate = [ "<h2>Albums</h2>", message, "<ul>",

193

Page 202: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

getHtml(albums), "</ul>", "<button onclick=\"createAlbum(prompt('Enter Album Name:'))\">", "Create new Album", "</button>", ]; document.getElementById("app").innerHTML = getHtml(htmlTemplate); } } catch (err) { return alert("There was an error listing your albums: " + err.message); }};

// Make listAlbums function available to the browserwindow.listAlbums = listAlbums;

// Create an album in the bucketconst createAlbum = async (albumName) => { albumName = albumName.trim(); if (!albumName) { return alert("Album names must contain at least one non-space character."); } if (albumName.indexOf("/") !== -1) { return alert("Album names cannot contain slashes."); } var albumKey = encodeURIComponent(albumName); try { const key = albumKey + "/"; const params = { Bucket: albumBucketName, Key: key }; const data = await s3.send(new PutObjectCommand(params)); alert("Successfully created album."); viewAlbum(albumName); } catch (err) { return alert("There was an error creating your album: " + err.message); }};

// Make createAlbum function available to the browserwindow.createAlbum = createAlbum;

// View the contents of an album

const viewAlbum = async (albumName) => { const albumPhotosKey = encodeURIComponent(albumName) + "/"; try { const data = await s3.send( new ListObjectsCommand({ Prefix: albumPhotosKey, Bucket: albumBucketName, }) ); if (data.Contents.length === 1) { var htmlTemplate = [ "<p>You don't have any photos in this album. You need to add photos.</p>", '<input id="photoupload" type="file" accept="image/*">', '<button id="addphoto" onclick="addPhoto(\'' + albumName + "')\">", "Add photo", "</button>", '<button onclick="listAlbums()">', "Back to albums", "</button>", ]; document.getElementById("app").innerHTML = getHtml(htmlTemplate); } else {

194

Page 203: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

console.log(data); const href = "https://s3." + REGION + ".amazonaws.com/"; const bucketUrl = href + albumBucketName + "/"; const photos = data.Contents.map(function (photo) { const photoKey = photo.Key; console.log(photo.Key); const photoUrl = bucketUrl + encodeURIComponent(photoKey); return getHtml([ "<span>", "<div>", '<img style="width:128px;height:128px;" src="' + photoUrl + '"/>', "</div>", "<div>", "<span onclick=\"deletePhoto('" + albumName + "','" + photoKey + "')\">", "X", "</span>", "<span>", photoKey.replace(albumPhotosKey, ""), "</span>", "</div>", "</span>", ]); }); var message = photos.length ? "<p>Click the X to delete the photo.</p>" : "<p>You don't have any photos in this album. You need to add photos.</p>"; const htmlTemplate = [ "<h2>", "Album: " + albumName, "</h2>", message, "<div>", getHtml(photos), "</div>", '<input id="photoupload" type="file" accept="image/*">', '<button id="addphoto" onclick="addPhoto(\'' + albumName + "')\">", "Add photo", "</button>", '<button onclick="listAlbums()">', "Back to albums", "</button>", ]; document.getElementById("app").innerHTML = getHtml(htmlTemplate); document.getElementsByTagName("img")[0].remove(); } } catch (err) { return alert("There was an error viewing your album: " + err.message); }};// Make viewAlbum function available to the browserwindow.viewAlbum = viewAlbum;

// Add a photo to an albumconst addPhoto = async (albumName) => { const files = document.getElementById("photoupload").files; try { const albumPhotosKey = encodeURIComponent(albumName) + "/"; const data = await s3.send( new ListObjectsCommand({ Prefix: albumPhotosKey, Bucket: albumBucketName

195

Page 204: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 브라우저 예제

}) ); const file = files[0]; const fileName = file.name; const photoKey = albumPhotosKey + fileName; const uploadParams = { Bucket: albumBucketName, Key: photoKey, Body: file }; try { const data = await s3.send(new PutObjectCommand(uploadParams)); alert("Successfully uploaded photo."); viewAlbum(albumName); } catch (err) { return alert("There was an error uploading your photo: ", err.message); } } catch (err) { if (!files.length) { return alert("Choose a file to upload first."); } }};// Make addPhoto function available to the browserwindow.addPhoto = addPhoto;

// Delete a photo from an albumconst deletePhoto = async (albumName, photoKey) => { try { console.log(photoKey); const params = { Key: photoKey, Bucket: albumBucketName }; const data = await s3.send(new DeleteObjectCommand(params)); console.log("Successfully deleted photo."); viewAlbum(albumName); } catch (err) { return alert("There was an error deleting your photo: ", err.message); }};// Make deletePhoto function available to the browserwindow.deletePhoto = deletePhoto;

// Delete an album from the bucketconst deleteAlbum = async (albumName) => { const albumKey = encodeURIComponent(albumName) + "/"; try { const params = { Bucket: albumBucketName, Prefix: albumKey }; const data = await s3.send(new ListObjectsCommand(params)); const objects = data.Contents.map(function (object) { return { Key: object.Key }; }); try { const params = { Bucket: albumBucketName, Delete: { Objects: objects }, Quiet: true, }; const data = await s3.send(new DeleteObjectsCommand(params)); listAlbums(); return alert("Successfully deleted album."); } catch (err) { return alert("There was an error deleting your album: ", err.message); } } catch (err) { return alert("There was an error deleting your album1: ", err.message);

196

Page 205: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

}};// Make deleteAlbum function available to the browserwindow.deleteAlbum = deleteAlbum;

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon S3 Node.js 예제다음 주제에서는AWS SDK for JavaScriptNode.js 를 사용하는 Amazon S3 버킷과의 상호 작용을 위해 사용할 수 있습니다.

주제• Amazon S3 버킷 생성 및 사용 (p. 197)• Amazon S3 버킷 구성 (p. 209)• Amazon S3 버킷 액세스 권한 관리 (p. 212)• Amazon S3 버킷 정책 작업 (p. 215)• Amazon S3 버킷을 정적 웹 호스트로 사용 (p. 219)

Amazon S3 버킷 생성 및 사용

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 계정에서 Amazon S3 버킷의 목록을 가져오고 표시하는 방법.• Amazon S3 버킷을 생성하는 방법• 지정된 버킷에 객체를 업로드하는 방법.

시나리오

이 예제에서는 일련의 Node.js 모듈을 사용하여 기존 Amazon S3 버킷 목록을 가져오고 버킷을 생성하며 지정된 버킷에 파일을 업로드합니다. 이 Node.js 모듈은 JavaSJavaScript 용 SDK를 사용하여 Amazon S3 클라이언트 클래스의 다음 메서드를 사용하여 Amazon S3 버킷에서 정보를 가져오고 이 버킷에 파일을 업로드합니다.

• ListBucketsCommand

• CreateBucketCommand

• ListObjectsCommand

• PutObjectCommand

• UploadPartCommand,• GetObjectCommand

• DeleteBucketCommand

다음 메서드를 사용하는 예제도 있습니다.노드 페치미리 서명된 URL을 생성합니다.

197

Page 206: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

• PUT

• GET

사전 필수 작업

이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 에 대한 지침에 따라 노드 JavaScript 예제를 실행하는 프로젝트 환경을 설정GitHub.• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용

은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

Amazon S3 버킷 목록 표시

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_listbuckets.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.Amazon Simple Storage Service (으) 로 액세스하려면S3클라이언트 서비스 객체를 생성합니다. 를 호출합니다.listBuckets메서드를 호출하여 버킷 목록을 검색합니다. 콜백 함수의 data 파라미터에는 버킷을 표시하기 위한 맵 배열을 포함하는 Buckets 속성이 있습니다. 콘솔에 로그인하여 버킷 목록을 표시합니다.

// Import required AWS SDK clients and commands for Node.jsimport { ListBucketsCommand } from "@aws-sdk/client-s3";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.

export const run = async () => { try { const data = await s3Client.send(new ListBucketsCommand({})); console.log("Success", data.Buckets); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

198

Page 207: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_listbuckets.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon S3 버킷 생성

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_createbucket.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 생성S3클라이언트 서비스 객체를 생성합니다. 이 모듈은 단일 명령줄 인수를 가져와서 새 버킷의 이름을 지정합니다.

호출하는 데 사용되는 파라미터를 담을 변수를 추가합니다.createBucket새로 생성된 버킷의 이름을 포함하여 Amazon S3 클라이언트 서비스 객체의 메서드를 생성합니다. Amazon S3 가 버킷을 성공적으로 생성한 후 이 콜백 함수는 새 버킷의 위치를 콘솔에 로깅합니다.

// Get service clients module and commands using ES6 syntax. import { CreateBucketCommand } from "@aws-sdk/client-s3"; import { s3 } from "./libs/s3Client.js";

// Set the bucket parametersconst bucketParams = { Bucket: "BUCKET_NAME" };

// Create the Amazon S3 bucket.const run = async () => { try { const data = await s3.send(new CreateBucketCommand(bucketParams)); console.log("Success", data.Location); return data; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_createbucket.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon S3 버킷에 파일 업로드

이 섹션에서는 다음 작업을 수행하는 방법에 대해 설명합니다.

199

Page 208: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

• 새 객체를 생성하여 Amazon S3 버킷에 업로드합니다.• Amazon S3 버킷에 기존 객체를 업로드합니다.

Amazon S3 버킷에 객체를 생성하고 업로드합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_create_and_upload_object.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.

호출하는 데 필요한 파라미터가 있는 변수를 생성합니다.PutObjectCommandAmazon S3 서비스 객체의 메서드를 호출합니다. 대상 버킷의 이름을 Bucket 파라미터에 제공합니다. 이Key파라미터는 객체의 이름을제공합니다.

Note

개체에 대한 디렉터리를 만들려면 형식 사용directoryY_NAME/OBJECT_NAME.

// Import required AWS SDK clients and commands for Node.jsimport { PutObjectCommand } from "@aws-sdk/client-s3";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.

// Set the parameters.export const bucketParams = { Bucket: "BUCKET_NAME", // Specify the name of the new object. For example, 'index.html'. // To create a directory for the object, use '/'. For example, 'myApp/package.json'. Key: "OBJECT_NAME", // Content of the new object. Body: "BODY",};

// Create and upload the object to the specified Amazon S3 bucket.export const run = async () => { try { const data = await s3Client.send(new PutObjectCommand(bucketParams)); return data; // For unit tests. console.log( "Successfully uploaded object: " + bucketParams.Bucket + "/" + bucketParams.Key ); } catch (err) { console.log("Error", err); }};run();

200

Page 209: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_create_and_upload_object.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon S3 버킷에 기존 객체를 업로드합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_upload_object.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.

호출하는 데 필요한 파라미터가 있는 변수를 생성합니다.PutObjectCommandAmazon S3 서비스 객체의 메서드를 호출합니다. 대상 버킷의 이름을 Bucket 파라미터에 제공합니다. 기존 객체의 이름과 객체의 경로를제공합니다. Key 파라미터는 선택한 파일의 이름으로 설정되며, 이 이름은 Node.js path 모듈을 사용하여가져올 수 있습니다.

// Import required AWS SDK clients and commands for Node.js.import { PutObjectCommand } from "@aws-sdk/client-s3";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.import {path} from "path";import {fs} from "fs";

const file = "OBJECT_PATH_AND_NAME"; // Path to and name of object. For example '../myFiles/index.js'.const fileStream = fs.createReadStream(file);

// Set the parametersexport const uploadParams = { Bucket: "BUCKET_NAME", // Add the required 'Key' parameter using the 'path' module. Key: path.basename(file), // Add the required 'Body' parameter Body: fileStream,};

// Upload file to specified bucket.export const run = async () => { try { const data = await s3Client.send(new PutObjectCommand(uploadParams)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }

201

Page 210: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_upload_object.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon S3 버킷에서 파일 가져오기

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_getobject.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 이 모듈은 두 개의 명령줄 인수를 가져옵니다. 첫 번째 인수는 대상 버킷을 지정하고 두 번째 인수는 가져올 파일을지정합니다.

호출하는 데 필요한 파라미터가 있는 변수를 생성합니다.GetObjectCommandAmazon S3 서비스 객체의 메서드를 호출합니다. 대상 버킷의 이름을 Bucket 파라미터에 제공합니다. 이Key파라미터는 파일의 이름으로 설정되며, 이 이름은 Node.jspath모듈을 참조하십시오.

// Import required AWS SDK clients and commands for Node.js.import { GetObjectCommand } from "@aws-sdk/client-s3";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.

export const bucketParams = { Bucket: "BUCKET_NAME", Key: "KEY",};

export const run = async () => { try { // Create a helper function to convert a ReadableStream to a string. const streamToString = (stream) => new Promise((resolve, reject) => { const chunks = []; stream.on("data", (chunk) => chunks.push(chunk)); stream.on("error", reject); stream.on("end", () => resolve(Buffer.concat(chunks).toString("utf8"))); });

// Get the object} from the Amazon S3 bucket. It is returned as a ReadableStream. const data = await s3Client.send(new GetObjectCommand(bucketParams)); return data; // For unit tests. // Convert the ReadableStream to a string. const bodyContents = await streamToString(data.Body); console.log(bodyContents);

202

Page 211: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

return bodyContents; } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_upload.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon S3 버킷의 객체 나열

이 예에서는 Amazon S3 버킷의 객체를 최대 1000개까지 나열합니다.

Note

1000개 이상의 개체를 나열하려면Amazon S3 버킷에서 1000개 이상의 객체를 나열합니다. (p. 204).

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_listobjects.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.

호출하는 데 사용되는 파라미터를 담을 변수를 추가합니다.ListObjectsCommnad읽을 버킷의 이름을 포함하여 Amazon S3 서비스 객체의 메서드를 참조하세요. 콜백 함수는 객체(파일)의 목록 또는 실패 메시지를로깅합니다.

// Import required AWS SDK clients and commands for Node.jsimport { ListObjectsCommand } from "@aws-sdk/client-s3";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.

// Create the parameters for the bucketexport const bucketParams = { Bucket: "BUCKET_NAME" };

export const run = async () => { try { const data = await s3Client.send(new ListObjectsCommand(bucketParams)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

203

Page 212: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_listobjects.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon S3 버킷에서 1000개 이상의 객체를 나열합니다.이 예에서는 Amazon S3 버킷에 1000개 이상의 객체를 나열합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_list1000plusobjects.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 생성S3클라이언트 서비스 객체를 생성합니다.

while 루프를 사용하여 모든 항목이 나열될 때까지 각 1000 항목을 나열합니다. 그런 다음truncated값을가진 플래그로true와 동시에 1,000 개의 항목을 인쇄하는 while 루프가 플래그가false.

// Import required AWS SDK clients and commands for Node.jsimport { ListObjectsCommand } from "@aws-sdk/client-s3";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.

// Create the parameters for the bucketexport const bucketParams = { Bucket: "BUCKET_NAME" };

export async function run() { // Declare truncated as a flag that we will base our while loop on let truncated = true; // Declare a variable that we will assign the key of the last element in the response to let pageMarker; // While loop that runs until response.truncated is false while (truncated) { try { const response = await s3Client.send(new ListObjectsCommand(bucketParams)); // return response; //For unit tests response.Contents.forEach((item) => { console.log(item.Key); }); // Log the Key of every item in the response to standard output truncated = response.IsTruncated; // If 'truncated' is true, assign the key of the final element in the response to our variable 'pageMarker' if (truncated) { pageMarker = response.Contents.slice(-1)[0].Key; // Assign value of pageMarker to bucketParams so that the next iteration will start} from the new pageMarker. bucketParams.Marker = pageMarker; } // At end of the list, response.truncated is false and our function exits the while loop.

204

Page 213: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

} catch (err) { console.log("Error", err); truncated = false; } }}run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_list1000plusobjects.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon S3 버킷 삭제

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_deletebucket.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.

호출하는 데 사용되는 파라미터를 담을 변수를 추가합니다.deleteBucket삭제할 버킷의 이름을 포함하여Amazon S3 서비스 객체의 메서드를 생성합니다. 버킷을 삭제하려면 버킷이 비어 있어야 합니다. 콜백 함수는 성공 또는 실패 메시지를 로깅합니다.

// Import required AWS SDK clients and commands for Node.jsimport { DeleteBucketCommand } from "@aws-sdk/client-s3/";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.

// Set the bucket parametersexport const bucketParams = { Bucket: "BUCKET_NAME" };

export const run = async () => { try { const data = await s3Client.send(new DeleteBucketCommand(bucketParams)); return data; // For unit tests. console.log("Success - bucket deleted"); } catch (err) { console.log("Error", err); }};// Invoke run() so these examples run out of the box.run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_deletebucket.js

205

Page 214: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

미리 서명된 URL 생성

이 단원에서는 미리 서명된 URL을 생성하여 Amazon S3 버킷에 객체를 가져오고 넣는 방법을 보여 줍니다.

Amazon S3 버킷에 객체를 업로드하기 위해 미리 서명된 URL을 생성합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_presignedURL_v3.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.

업로드할 버킷과 객체를 생성하는 함수를 만들고, 객체를 업로드하기 위해 미리 서명된 URL을 생성한 다음객체를 업로드합니다. 이 예에서는 불필요한 비용이 발생하지 않도록 객체와 버킷이 자동으로 삭제됩니다.

호출하는 데 필요한 파라미터가 있는 변수를 생성합니다.PutObjectCommandAmazon S3 서비스 객체의 명령을 실행합니다. 이 예에서는 버킷 이름, 파일 이름 또는 키, 본문 및 만료 기간이 미리 채워져 있습니다.

미리 서명된 URL을 생성하는 방법에 대한 자세한 내용은https://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html.

// Import the required AWS SDK clients and commands for Node.jsimport { CreateBucketCommand, DeleteObjectCommand, PutObjectCommand, DeleteBucketCommand }from "@aws-sdk/client-s3";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.import { getSignedUrl } from "@aws-sdk/s3-request-presigner";import fetch from "node-fetch";

// Set parameters// Create a random names for the Amazon Simple Storage Service (Amazon S3) bucket and keyexport const bucketParams = { Bucket: `test-bucket-${Math.ceil(Math.random() * 10 ** 10)}`, Key: `test-object-${Math.ceil(Math.random() * 10 ** 10)}`, Body: "BODY"};export const run = async () => { try { // Create an Amazon S3 bucket. console.log(`Creating bucket ${bucketParams.Bucket}`); await s3Client.send(new CreateBucketCommand({ Bucket: bucketParams.Bucket })); console.log(`Waiting for "${bucketParams.Bucket}" bucket creation...`); } catch (err) { console.log("Error creating bucket", err); } try {

206

Page 215: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

// Create the command. const command = new PutObjectCommand(bucketParams);

// Create the presigned URL. const signedUrl = await getSignedUrl(s3Client, command, { expiresIn: 3600, }); console.log( `\nPutting "${bucketParams.Key}" using signedUrl with body "${bucketParams.Body}" in v3` ); console.log(signedUrl); const response = await fetch(signedUrl); console.log( `\nResponse returned by signed URL: ${await response.text()}\n` ); return response; } catch (err) { console.log("Error creating presigned URL", err); } try { // Delete the object. console.log(`\nDeleting object "${bucketParams.Key}"} from bucket`); await s3Client.send( new DeleteObjectCommand({ Bucket: bucketParams.Bucket, Key: bucketParams.Key }) ); } catch (err) { console.log("Error deleting object", err); } try { // Delete the Amazon S3 bucket. console.log(`\nDeleting bucket ${bucketParams.Bucket}`); await s3.send(new DeleteBucketCommand({ Bucket: bucketParams.Bucket })); } catch (err) { console.log("Error deleting bucket", err); }};run();

예제를 실행하려면 명령줄에서 다음을 입력합니다.

node s3_put_presignedURL_v3.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon S3 버킷에서 객체를 가져올 수 있도록 미리 서명된 URL을 생성합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_get_presignedURL_v3.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.

207

Page 216: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

버킷과 업로드 및 객체를 생성하는 함수를 생성한 다음 미리 서명된 URL을 만들어 버킷에서 객체를 가져옵니다. 이 예에서는 불필요한 비용이 발생하지 않도록 객체와 버킷이 자동으로 삭제됩니다.

호출하는 데 필요한 파라미터가 있는 변수를 생성합니다.GetObjectCommandAmazon S3 서비스 객체의 명령을 실행합니다. 이 예에서는 버킷 이름, 파일 이름 또는 키, 본문 및 만료 기간이 미리 채워져 있습니다.

미리 서명된 URL을 만드는 방법에 대한 자세한 내용은 단원을 참조하십시오.https://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html.

// Import the required AWS SDK clients and commands for Node.jsimport { CreateBucketCommand, PutObjectCommand, GetObjectCommand, DeleteObjectCommand, DeleteBucketCommand }from "@aws-sdk/client-s3";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.import { getSignedUrl } from "@aws-sdk/s3-request-presigner";const fetch = require("node-fetch");

// Set parameters// Create random names for the Amazon Simple Storage Service (Amazon S3) bucket and key.export const bucketParams = { Bucket: `test-bucket-${Math.ceil(Math.random() * 10 ** 10)}`, Key: `test-object-${Math.ceil(Math.random() * 10 ** 10)}`, Body: "BODY"};

export const run = async () => { // Create an Amazon S3 bucket. try { console.log(`Creating bucket ${bucketParams.Bucket}`); const data = await s3Client.send( new CreateBucketCommand({ Bucket: bucketParams.Bucket }) ); return data; // For unit tests. console.log(`Waiting for "${bucketParams.Bucket}" bucket creation...\n`); } catch (err) { console.log("Error creating bucket", err); } // Put the object in the Amazon S3 bucket. try { console.log(`Putting object "${bucketParams.Key}" in bucket`); const data = await s3Client.send( new PutObjectCommand({ Bucket: bucketParams.Bucket, Key: bucketParams.Key, Body: bucketParams.Body, }) ); return data; // For unit tests. } catch (err) { console.log("Error putting object", err); } // Create a presigned URL. try { // Create the command. const command = new GetObjectCommand(bucketParams);

// Create the presigned URL. const signedUrl = await getSignedUrl(s3Client, command, { expiresIn: 3600, });

208

Page 217: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

console.log( `\nGetting "${bucketParams.Key}" using signedUrl with body "${bucketParams.Body}" in v3` ); console.log(signedUrl); const response = await fetch(signedUrl); console.log( `\nResponse returned by signed URL: ${await response.text()}\n` ); } catch (err) { console.log("Error creating presigned URL", err); } // Delete the object. try { console.log(`\nDeleting object "${bucketParams.Key}"} from bucket`); const data = await s3Client.send( new DeleteObjectCommand({ Bucket: bucketParams.Bucket, Key: bucketParams.Key }) ); return data; // For unit tests. } catch (err) { console.log("Error deleting object", err); } // Delete the bucket. try { console.log(`\nDeleting bucket ${bucketParams.Bucket}`); const data = await s3Client.send( new DeleteBucketCommand({ Bucket: bucketParams.Bucket, Key: bucketParams.Key }) ); return data; // For unit tests. } catch (err) { console.log("Error deleting object", err); }};run();

예제를 실행하려면 명령줄에서 다음을 입력합니다.

node s3_get_presignedURL_v3.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon S3 버킷 구성

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 버킷에 대한 CORS(교차 오리진 리소스 공유) 권한을 구성하는 방법.

시나리오

이 예제에서는 일련의 Node.js 모듈을 사용하여 Amazon S3 버킷 목록을 표시하고 CORS 및 버킷 로깅을 구성합니다. 이 Node.js 모듈은 JavaSJavaScript 용 SDK를 사용하여 선택한 Amazon S3 버킷을 구성합니다.

• GetBucketCorsCommand

209

Page 218: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

• PutBucketCorsCommand

Amazon S3 버킷과 함께 CORS 구성을 사용하는 방법에 대한 자세한 내용은CORS(Cross-Origin ResourceSharing)의Amazon Simple Storage Service 개발자 안내서.

사전 필수 작업

이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 에 대한 지침에 따라 노드 JavaScript 예제를 실행하는 프로젝트 환경을 설정GitHub.• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용

은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

버킷 CORS 구성 검색

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

파일 이름이 s3_getcors.js인 Node.js 모듈을 생성합니다. 이 모듈은 단일 명령줄 인수를 가져와서 원하는 CORS 구성이 있는 버킷을 지정합니다. 위와 같이 SDK를 구성해야 합니다. 생성S3클라이언트 서비스 객체를 생성합니다.

전달해야 하는 유일한 파라미터는 GetBucketCorsCommand 메서드를 호출할 때 선택한 버킷의 이름입니다. 버킷에 현재 CORS 구성이 있는 경우 Amazon S3 의해 해당 구성이CORSRules속성입니다.data파라미터를 콜백 함수에 전달합니다.

선택한 버킷에 CORS 구성이 없는 경우 해당 정보는 error 파라미터에서 콜백 함수에 반환됩니다.

// Import required AWS SDK clients and commands for Node.jsimport { GetBucketCorsCommand } from "@aws-sdk/client-s3";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.

// Create the parameters for callingexport const bucketParams = { Bucket: "BUCKET_NAME" };

export const run = async () => { try {

210

Page 219: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

const data = await s3Client.send(new GetBucketCorsCommand(bucketParams)); console.log("Success", JSON.stringify(data.CORSRules)); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_getcors.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

버킷 CORS 구성 설정

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_setcors.js인 Node.js 모듈을 생성합니다. 이 모듈은 여러 명령줄 인수를 가져옵니다. 이러한 인수 중 첫 번째는 설정할 CORS 구성이 있는 버킷을 지정합니다. 추가 인수는 버킷에 허용할 HTTP 메서드(POST, GET, PUT, PATCH, DELETE, POST)를 열거합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

다음에는 S3 서비스 객체의 PutBucketCorsCommand 메서드에 필요한 CORS 구성의 값을 담을 JSON 객체를 생성합니다. AllowedHeaders 값에 "Authorization"을 지정하고 AllowedOrigins 값에 "*"를지정합니다. 처음에는 비어 있는 배열로 AllowedMethods의 값을 설정합니다.

허용된 메서드를 명령줄 파라미터로 Node.js 모듈에 지정하여 파라미터 중 하나와 일치하는 각 메서드를추가합니다. 결과적으로 생성된 CORS 구성을 CORSRules 파라미터에 포함된 구성 배열에 추가합니다.Bucket 파라미터에서 CORS에 구성할 버킷을 지정합니다.

// Import required AWS-SDK clients and commands for Node.js import { PutBucketCorsCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.

// Set params // Create initial parameters JSON for putBucketCors const thisConfig = { AllowedHeaders: ["Authorization"], AllowedMethods: [], AllowedOrigins: ["*"], ExposeHeaders: [], MaxAgeSeconds: 3000, };

// Assemble the list of allowed methods based on command line parameters

211

Page 220: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

const allowedMethods = []; process.argv.forEach(function (val, index, array) { if (val.toUpperCase() === "POST") { allowedMethods.push("POST"); } if (val.toUpperCase() === "GET") { allowedMethods.push("GET"); } if (val.toUpperCase() === "PUT") { allowedMethods.push("PUT"); } if (val.toUpperCase() === "PATCH") { allowedMethods.push("PATCH"); } if (val.toUpperCase() === "DELETE") { allowedMethods.push("DELETE"); } if (val.toUpperCase() === "HEAD") { allowedMethods.push("HEAD"); } });

// Copy the array of allowed methods into the config object thisConfig.AllowedMethods = allowedMethods;

// Create array of configs then add the config object to it const corsRules = new Array(thisConfig);

// Create CORS paramsexport const corsParams = { Bucket: "BUCKET_NAME", CORSConfiguration: { CORSRules: corsRules }, };export async function run() { try { const data = await s3Client.send(new PutBucketCorsCommand(corsParams)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }}run();

예제를 실행하려면 그림과 같이 하나 이상의 HTTP 메서드를 포함하여 명령 프롬프트에 다음을 입력합니다.

node s3_setcors.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon S3 버킷 액세스 권한 관리

이 Node.js 코드 예제는 다음을 보여 줍니다.

• Amazon S3 버킷에 대한 액세스 제어 목록을 가져오거나 설정하는 방법.

212

Page 221: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

시나리오이 예제에서는 Node.js 모듈을 사용하여 선택한 버킷에 대한 버킷 ACL(액세스 제어 목록)을 표시하고 선택한 버킷에 대한 ACL에 변경 사항을 적용합니다. 이 Node.js 모듈은 JavaSJavaScript 용 SDK를 사용하여Amazon S3 클라이언트 클래스의 다음 메서드를 사용하여 Amazon S3 버킷 액세스 권한을 관리합니다.

• GetBucketAclCommand

• PutBucketAclCommand

Amazon S3 버킷의 액세스 제어 목록에 대한 자세한 내용은 단원을 참조하십시오.ACL을 사용한 액세스 관리의Amazon Simple Storage Service 개발자 안내서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 에 대한 지침에 따라 노드 JavaScript 예제를 실행하는 프로젝트 환경을 설정GitHub.• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용

은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

현재 버킷 액세스 제어 목록 검색만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_getbucketacl.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.

생성S3Client클라이언트 서비스 객체를 생성합니다. 전달해야 하는 유일한 파라미터는GetBucketAclCommand 메서드를 호출할 때 선택한 버킷의 이름입니다. Amazon S3 에서 현재 액세스 제어 목록 구성은data파라미터를 콜백 함수에 전달합니다.

// Import required AWS SDK clients and commands for Node.jsimport { GetBucketAclCommand } from "@aws-sdk/client-s3/";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.

// Create the parameters.

213

Page 222: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

export const bucketParams = { Bucket: "BUCKET_NAME" };

export const run = async () => { try { const data = await s3Client.send(new GetBucketAclCommand(bucketParams)); console.log("Success", data.Grants); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_getbucketacl.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon S3 버킷에 액세스 제어 목록 권한 연결만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_putbucketacl.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.

Replace버버_버버Amazon S3 버킷의 이름으로 바꿉니다. Replace버버버버_1및버버버버_2를 사용하여 각 액세스contol 권한을 부여하려는 사용자와 함께 사용할 수 있습니다.

/ Import required AWS SDK; clients and commands for Node.js.const { S3Client, PutBucketAclCommand } = require("@aws-sdk/client-s3");

// Set the parameters. const bucketParams = { Bucket: "BUCKET_NAME", // 'GrantFullControl' allows grantee the read, write, read ACP, and write ACP permissions on the bucket. // For example, an AWS account Canonical User ID in the format: // id=002160194XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXa7a49125274 GrantFullControl: "GRANTEE_1", // 'GrantWrite' allows grantee to create, overwrite, and delete any object in the bucket.. // For example, 'uri=http://acs.amazonaws.com/groups/s3/LogDelivery' GrantWrite: "GRANTEE_2"};

// Create an Amazon S3 client service object.const s3 = new S3Client({});

const run = async () => {

214

Page 223: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

try { const data = await s3.send(new PutBucketAclCommand(bucketParams)); console.log("Success, permissions added to bucket", data); } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_putbucketacl.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon S3 버킷 정책 작업

이 Node.js 코드 예제는 다음을 보여 줍니다.

• Amazon S3 버킷의 버킷 정책을 검색하는 방법.• Amazon S3 버킷의 버킷 정책을 추가하거나 업데이트하는 방법.• Amazon S3 버킷의 버킷 정책을 삭제하는 방법.

시나리오이 예제에서는 일련의 Node.js 모듈을 사용하여 Amazon S3 버킷에서 버킷 정책을 검색, 설정 또는 삭제합니다. 이 Node.js 모듈은 JavaSJavaScript 용 SDK를 사용하여 선택한 Amazon S3 버킷에 대한 정책을 구성합니다.

• GetBucketPolicyCommand

• PutBucketPolicyCommand

• DeleteBucketPolicyCommand

Amazon S3 버킷의 버킷 정책에 대한 자세한 내용은 단원을 참조하십시오.버킷 정책 및 사용자 정책 사용의Amazon Simple Storage Service 개발자 안내서.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 에 대한 지침에 따라 노드 JavaScript 예제를 실행하는 프로젝트 환경을 설정GitHub.• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용

은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

215

Page 224: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

현재 버킷 정책 검색

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_getbucketpolicy.js인 Node.js 모듈을 생성합니다. 이 모듈은 원하는 정책이 있는 버킷을 지정하는 단일 명령줄 인수를 가져옵니다. 위와 같이 SDK를 구성해야 합니다.

S3 서비스 객체를 생성합니다. 전달해야 하는 유일한 파라미터는 GetBucketPolicyCommand 메서드를 호출할 때 선택한 버킷의 이름입니다. 버킷에 정책이 현재 있는 경우 Amazon S3 가 해당 정책을data파라미터를 콜백 함수에 전달합니다.

선택한 버킷에 정책이 없는 경우 해당 정보는 error 파라미터에서 콜백 함수에 반환됩니다.

// Import required AWS SDK clients and commands for Node.jsimport { GetBucketPolicyCommand } from "@aws-sdk/client-s3";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.

// Create the parameters for callingexport const bucketParams = { Bucket: "BUCKET_NAME" };

export const run = async () => { try { const data = await s3Client.send(new GetBucketPolicyCommand(bucketParams)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_getbucketpolicy.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

단순 버킷 정책 설정

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

216

Page 225: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_setbucketpolicy.js인 Node.js 모듈을 생성합니다. 이 모듈은 적용할 정책이 있는 버킷을 지정하는 단일 명령줄 인수를 가져옵니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된대로 SDK를 구성합니다.

버킷 정책은 JSON 문서에서 지정됩니다. 먼저, 버킷을 식별하는 Resource 값을 제외하고 정책을 지정하기위한 모든 값을 포함하는 JSON 객체를 생성합니다.

정책에 필요한 Resource 문자열의 형식을 지정하여 선택한 버킷의 이름을 통합합니다. 해당 문자열을 JSON 객체에 삽입합니다. 버킷의 이름과 문자열 값으로 변환된 JSON 정책을 포함하여PutBucketPolicyCommand 메서드를 위한 파라미터를 준비합니다.

// Import required AWS SDK clients and commands for Node.jsimport { PutBucketPolicyCommand } from "@aws-sdk/client-s3";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.

// Create params JSON for S3.createBucketconst BUCKET_NAME = "BUCKET_NAME";export const bucketParams = { Bucket: BUCKET_NAME,};// Create the policyconst readOnlyAnonUserPolicy = { Version: "2012-10-17", Statement: [ { Sid: "AddPerm", Effect: "Allow", Principal: "*", Action: ["s3:GetObject"], Resource: [""], }, ],};

// create selected bucket resource string for bucket policyconst bucketResource = "arn:aws:s3:::" + BUCKET_NAME + "/*"; //BUCKET_NAMEreadOnlyAnonUserPolicy.Statement[0].Resource[0] = bucketResource;

// // convert policy JSON into string and assign into paramsconst bucketPolicyParams = { Bucket: BUCKET_NAME, Policy: JSON.stringify(readOnlyAnonUserPolicy),};

export const run = async () => { try { // const response = await s3.putBucketPolicy(bucketPolicyParams); const response = await s3Client.send( new PutBucketPolicyCommand(bucketPolicyParams) ); return response; console.log("Success, permissions added to bucket", response); } catch (err) {

217

Page 226: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_setbucketpolicy.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

버킷 정책 삭제

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_deletebucketpolicy.js인 Node.js 모듈을 생성합니다. 이 모듈은 삭제할 정책이 있는버킷을 지정하는 단일 명령줄 인수를 가져옵니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

DeleteBucketPolicy 메서드를 호출할 때 전달해야 하는 유일한 파라미터는 선택한 버킷의 이름입니다.

// Import required AWS SDK clients and commands for Node.jsimport { DeleteBucketPolicyCommand } from "@aws-sdk/client-s3/";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.

// Set the bucket parametersexport const bucketParams = { Bucket: "BUCKET_NAME" };

export const run = async () => { try { const data = await s3Client.send(new DeleteBucketPolicyCommand(bucketParams)); console.log("Success", data + ", bucket policy deleted"); return data; // For unit tests. } catch (err) { console.log("Error", err); }};// Invoke run() so these examples run out of the box.run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_deletebucketpolicy.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

218

Page 227: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

Amazon S3 버킷을 정적 웹 호스트로 사용

이 Node.js 코드 예제는 다음을 보여 줍니다.

• Amazon S3 버킷을 정적 웹 호스트로 설정하는 방법.

시나리오

이 예제에서는 일련의 Node.js 모듈을 사용하여 정적 웹 호스트 역할을 하는 버킷 중 하나를 구성합니다. 이Node.js 모듈은 JavaSJavaScript 용 SDK를 사용하여 선택한 Amazon S3 버킷을 구성합니다.

• GetBucketWebsiteCommand

• PutBucketWebsiteCommand

• DeleteBucketWebsiteCommand

Amazon S3 버킷을 정적 웹 호스트로 사용하는 방법에 대한 자세한 내용은 단원을 참조하세요.Amazon S3에서 정적 웹 사이트 호스팅의Amazon Simple Storage Service 개발자 안내서.

사전 필수 작업

이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 에 대한 지침에 따라 노드 JavaScript 예제를 실행하는 프로젝트 환경을 설정GitHub.• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용

은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드.

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

현재 버킷 웹 사이트 구성 검색

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

219

Page 228: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_getbucketwebsite.js인 Node.js 모듈을 생성합니다. 이 모듈은 원하는 웹 사이트 구성이 있는 버킷을 지정하는 단일 명령줄 인수를 가져옵니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

버킷 목록에서 선택한 버킷에 대한 현재 버킷 웹 사이트 구성을 검색하는 함수를 생성합니다. 전달해야 하는유일한 파라미터는 GetBucketWebsiteCommand 메서드를 호출할 때 선택한 버킷의 이름입니다. 버킷에웹 사이트 구성이 현재 있는 경우 Amazon S3 가 해당 구성을data파라미터를 콜백 함수에 전달합니다.

선택한 버킷에 웹 사이트 구성이 없는 경우 해당 정보는 err 파라미터에서 콜백 함수에 반환됩니다.

*/

// Import required AWS SDK clients and commands for Node.jsimport { GetBucketWebsiteCommand } from "@aws-sdk/client-s3";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.

// Create the parameters for callingexport const bucketParams = { Bucket: "BUCKET_NAME" };

export const run = async () => { try { const data = await s3Client.send(new GetBucketWebsiteCommand(bucketParams)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_getbucketwebsite.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

버킷 웹 사이트 구성 설정만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

파일 이름이 s3_setbucketwebsite.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 생성S3클라이언트 서비스 객체를 생성합니다.

버킷 웹 사이트 구성을 적용하는 함수를 생성합니다. 선택한 버킷은 이 구성을 사용하여 정적 웹 호스트의 역할을 수행할 수 있습니다. 웹 사이트 구성은 JSON에서 지정됩니다. 먼저, 오류 문서를 식별하는 Key 값과 인덱스 문서를 식별하는 Suffix 값을 제외하고 웹 사이트 구성을 지정하기 위한 모든 값을 포함하는 JSON 객체를 생성합니다.

220

Page 229: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon S3 Node.js 예제

텍스트 입력 요소의 값을 JSON 객체에 삽입합니다. 버킷의 이름과 JSON 웹 사이트 구성을 포함하여PutBucketWebsiteCommand 메서드를 위한 파라미터를 준비합니다.

// Import required AWS SDK clients and commands for Node.jsimport { PutBucketWebsiteCommand } from "@aws-sdk/client-s3";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.

// Create the parameters for the bucketexport const bucketParams = { Bucket: "BUCKET_NAME" };export const staticHostParams = { Bucket: bucketParams, WebsiteConfiguration: { ErrorDocument: { Key: "", }, IndexDocument: { Suffix: "", }, },};

export const run = async () => { // Insert specified bucket name and index and error documents into params JSON //} from command line arguments staticHostParams.Bucket = bucketParams; staticHostParams.WebsiteConfiguration.IndexDocument.Suffix = "INDEX_PAGE"; // the index document inserted into params JSON staticHostParams.WebsiteConfiguration.ErrorDocument.Key = "ERROR_PAGE"; // : the error document inserted into params JSON // set the new website configuration on the selected bucket try { const data = await s3Client.send(new PutBucketWebsiteCommand(staticHostParams)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_setbucketwebsite.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

버킷 웹 사이트 구성 삭제

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.s3Client.js. 아래 코드를복사하여 붙여넣으면 Amazon S3 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS지역으로 이동합니다.

import { S3Client} from "@aws-sdk/client-s3";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create an Amazon S3 service client object.const s3Client = new S3Client({ region: REGION });export { s3Client };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

221

Page 230: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SES 예제

파일 이름이 s3_deletebucketwebsite.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 생성S3클라이언트 서비스 객체를 생성합니다.

선택한 버킷에 대한 웹 사이트 구성을 삭제하는 함수를 생성합니다. DeleteBucketWebsiteCommand 메서드를 호출할 때 전달해야 하는 유일한 파라미터는 선택한 버킷의 이름입니다.

// Import required AWS SDK clients and commands for Node.js

import { DeleteBucketWebsiteCommand } from "@aws-sdk/client-s3";import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module.

// Create the parameters for callingexport const bucketParams = { Bucket: "BUCKET_NAME" };

export const run = async () => { try { const data = await s3Client.send(new DeleteBucketWebsiteCommand(bucketParams)); return data; // For unit tests. console.log("Success", data); } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node s3_deletebucketwebsite.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon Simple Email Service 예제Amazon SES (Amazon Simple Email Services) 는 디지털 마케터와 애플리케이션 개발자가 마케팅, 알림 및거래 이메일을 전송할 수 있도록 설계된 클라우드 기반 이메일 전송 서비스입니다. 이 서비스는 이메일을 사용하여 고객과 연락하는 모든 규모의 기업을 위한 안정적이고 비용 효과적인 서비스입니다.

Amazon SES용 JavaScript API는SES클라이언트 클래스입니다. Amazon SES 클라이언트 클래스를 사용하는 방법에 대한 자세한 내용은 단원을 참조하십시오.클래스: SESAPI 참조입니다.

주제• Amazon SES 자격 증명 관리 (p. 223)• Amazon SES에서 이메일 템플릿 작업 (p. 227)• Amazon SES 를 사용하여 이메일 전송 (p. 233)• Amazon SES 에서 이메일 수신에 IP 주소 필터 사용 (p. 239)• Amazon SES 에서 수신 규칙 사용 (p. 242)

222

Page 231: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드자격 증명 관리

Amazon SES 자격 증명 관리

이 Node.js 코드 예제는 다음을 보여 줍니다.

• Amazon SES 에 사용되는 이메일 주소 및 도메인을 확인하는 방법• ADDRESS (AWS Identity and Access Management(IAM) 정책을 Amazon SES 자격 증명에 추가합니다.• Amazon SES 자격 증명을 나열하는 방법AWS계정에 로그인합니다.• Amazon SES에서 사용되는 자격 증명을 삭제하는 방법.

Amazon SES SES자격 증명는 Amazon SES 에서 이메일을 보내기 위해 사용하는 이메일 주소 또는 도메인입니다. Amazon SES 에서는 이메일 자격 증명을 확인하여 해당 이메일 자격 증명을 본인이 소유하고 있음을 확인하고 다른 사람이 사용하지 못하도록 해야 합니다.

Amazon SES 에서 이메일 주소와 도메인을 확인하는 방법에 대한 자세한 내용은 을 참조하십시오.AmazonSES 에서 이메일 주소 및 도메인 확인Amazon Simple Email Service 개발자 안내서의 작업 Amazon SES 에서의 권한 부여에 대한 자세한 내용은 단원을 참조하십시오.Amazon SES 전송 권한 부여 개요.

시나리오이 예제에서는 일련의 Node.js 모듈을 사용하여 Amazon SES 자격 증명을 확인하고 관리합니다. 이 Node.js모듈은 이러한 메서드를 사용하여 이메일 주소와 도메인을 확인하는 JavaScript 용 SDK에서 이메일 주소와도메인을 사용하여SES클라이언트 클래스:

• ListIdentitiesCommand

• DeleteIdentityCommand

• VerifyEmailIdentityCommand

• VerifyDomainIdentityCommand

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 및 타사 모듈. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 버전을 다운로드하고설치하려면Node.js 다운로드는..

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57).

223

Page 232: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드자격 증명 관리

자격 증명 나열이 예제에서는 Node.js 모듈을 사용하여 Amazon SES 에서 사용할 이메일 주소와 도메인을 나열합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sesClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SES 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { SESClient } from "@aws-sdk/client-ses";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SES service object.const sesClient = new SESClient({ region: REGION });export { sesClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

파일 이름이 ses_listidentities.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

SES 클라이언트 클래스의 ListIdentitiesCommand 메서드에 대한 IdentityType 및 기타 파라미터를전달할 객체를 생성합니다. 가 를 호출하려면ListIdentitiesCommand메서드를 호출하려면 파라미터 객체를 전달하는 Amazon SES 서비스 객체를 호출합니다.

이data에 지정된 도메인 자격 증명의 배열을 포함하는IdentityType파라미터.

Note

Replace버버버버버 버버를 “EmailAddress”또는 “도메인”일 수있는 ID 유형으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { ListIdentitiesCommand } from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";// Set the parametersvar params = { IdentityType: "EmailAddress", // IDENTITY_TYPE: "EmailAddress' or 'Domain' MaxItems: 10,};

const run = async () => { try { const data = await sesClient.send(new ListIdentitiesCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ses_listidentities.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

이메일 주소 자격 증명 확인이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 사용할 이메일 발신자를 확인합니다.

224

Page 233: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드자격 증명 관리

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sesClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SES 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { SESClient } from "@aws-sdk/client-ses";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SES service object.const sesClient = new SESClient({ region: REGION });export { sesClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

파일 이름이 ses_verifyemailidentity.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 다운로드를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

SES 클라이언트 클래스의 VerifyEmailIdentityCommand 메서드에 대한 EmailAddress 파라미터를전달할 객체를 생성합니다. 가 를 호출하려면VerifyEmailIdentityCommand메서드를 호출하려면 파라미터를 전달하는 Amazon SES 클라이언트 서비스 객체를 호출합니다.

Note

[email protected] 버이메일 주소 (예: [email protected]) 로 대체하십시오.

// Import required AWS SDK clients and commands for Node.jsimport { VerifyEmailIdentityCommand} from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";

// Set the parametersconst params = { EmailAddress: "[email protected]" }; //[email protected]; e.g., [email protected]

const run = async () => { try { const data = await sesClient.send(new VerifyEmailIdentityCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. 도메인이 확인할 Amazon SES 에 추가됩니다.

node ses_verifyemailidentity.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

도메인 자격 증명 확인이 예제에서는 Node.js 모듈을 사용하여 Amazon SES 에서 사용할 이메일 도메인을 확인합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sesClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SES 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { SESClient } from "@aws-sdk/client-ses";// Set the AWS Region.

225

Page 234: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드자격 증명 관리

const REGION = "REGION"; //e.g. "us-east-1"// Create SES service object.const sesClient = new SESClient({ region: REGION });export { sesClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

파일 이름이 ses_verifydomainidentity.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

SES 클라이언트 클래스의 VerifyDomainIdentityCommand 메서드에 대한 Domain 파라미터를 전달할객체를 생성합니다. 가 를 호출하려면VerifyDomainIdentityCommand메서드를 호출하려면 파라미터 객체를 전달하는 Amazon SES 클라이언트 서비스 객체를 호출합니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)Note

ReplaceAMI_ID실행할 Amazon 머신 이미지 (AMI) ID로 바꾸고버 버 버버를 사용하여 AMI ID에 할당할 수 있습니다.

// Import required AWS SDK clients and commands for Node.jsimport { VerifyDomainIdentityCommand,} from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";

// Set the parametersconst params = { Domain: "DOMAIN_NAME" }; //DOMAIN_NAME

const run = async () => { try { const data = await sesClient.send(new VerifyDomainIdentityCommand(params)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. 도메인이 확인할 Amazon SES 에 추가됩니다.

node ses_verifydomainidentity.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

자격 증명 삭제이 예제에서는 Node.js 모듈을 사용하여 Amazon SES 에서 사용되는 이메일 주소 또는 도메인을 삭제합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sesClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SES 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { SESClient } from "@aws-sdk/client-ses";// Set the AWS Region.

226

Page 235: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드이메일 템플릿을 사용한 작업

const REGION = "REGION"; //e.g. "us-east-1"// Create SES service object.const sesClient = new SESClient({ region: REGION });export { sesClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

파일 이름이 ses_deleteidentity.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

SES 클라이언트 클래스의 DeleteIdentityCommand 메서드에 대한 Identity 파라미터를 전달할 객체를 생성합니다. 가 를 호출하려면DeleteIdentityCommand메서드를 만들려면request를 사용하여 파라미터를 전달하는 Amazon SES 클라이언트 서비스 객체를 호출합니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)Note

Replace버버버버버 버버을 삭제할 ID 유형으로 대체하고버버버 버버를 삭제할 자격 증명의 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { DeleteIdentityCommand } from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";// Set the parametersconst params = { IdentityType: "IDENTITY_TYPE", // IDENTITY_TYPE - i.e., 'EmailAddress' or 'Domain' Identity: "IDENTITY_NAME",}; // IDENTITY_NAME

const run = async () => { try { const data = await sesClient.send(new DeleteIdentityCommand(params)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node ses_deleteidentity.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

Amazon SES에서 이메일 템플릿 작업

이 Node.js 코드 예제는 다음을 보여 줍니다.

227

Page 236: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드이메일 템플릿을 사용한 작업

• 모든 이메일 템플릿의 목록을 가져오는 방법• 이메일 템플릿을 검색하고 업데이트하는 방법.• 이메일 템플릿을 생성하고 삭제하는 방법.

Amazon SES 에서는 이메일 템플릿을 사용하여 맞춤형 이메일 메시지를 전송할 수 있습니다. Amazon SES에서 이메일 템플릿을 생성하고 사용하는 방법에 대한 자세한 내용은 을 참조하십시오.Amazon SES API를사용하여 맞춤형 이메일 전송Amazon Simple Email Service 개발자 안내서의 작업

시나리오이 예제에서는 일련의 Node.js 모듈을 사용하여 이메일 템플릿을 작업합니다. 이 Node.js 모듈은 이러한 메서드를 사용하여 이메일 템플릿을 만들고 사용하는 JavaScript 용 SDK를 사용합니다.SES클라이언트 클래스:

• ListTemplatesCommand

• CreateTemplateCommand

• GetTemplateCommand

• DeleteTemplateCommand

• UpdateTemplateCommand

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 및 타사 모듈. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 생성에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 버전을 다운로드하고설치하려면Node.js 다운로드는..

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57).

이메일 템플릿을 나열합니다.이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 사용할 이메일 템플릿을 생성합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sesClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SES 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { SESClient } from "@aws-sdk/client-ses";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SES service object.const sesClient = new SESClient({ region: REGION });export { sesClient };

228

Page 237: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드이메일 템플릿을 사용한 작업

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

파일 이름이 ses_listtemplates.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를포함하여 이전에 표시된 대로 SDK를 구성합니다.

SES 클라이언트 클래스의 ListTemplatesCommand 메서드에 대한 파라미터를 전달할 객체를 생성합니다.가 를 호출하려면ListTemplatesCommand메서드를 호출하려면 파라미터를 전달하는 Amazon SES 클라이언트 서비스 객체를 호출합니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)Note

Replace버버_버버을 반환할 최대 템플릿 수로 바꿉니다. 값은 최소 1, 최대 10이어야 합니다.

// Import required AWS SDK clients and commands for Node.jsimport { SESClient, ListTemplatesCommand } from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";

// Set the parametersconst params = { MaxItems: "ITEMS_COUNT" }; //ITEMS_COUNT

const run = async () => { try { const data = await sesClient.send(new ListTemplatesCommand({ params })); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. Amazon SES 는 템플릿 목록을 반환합니다.

node ses_listtemplates.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

이메일 템플릿을 가져옵니다.이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 사용할 이메일 템플릿을 가져옵니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sesClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SES 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { SESClient } from "@aws-sdk/client-ses";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SES service object.const sesClient = new SESClient({ region: REGION });export { sesClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

파일 이름이 ses_gettemplate.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

229

Page 238: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드이메일 템플릿을 사용한 작업

SES 클라이언트 클래스의 GetTemplateCommand 메서드에 대한 TemplateName 파라미터를 전달할 객체를 생성합니다. 가 를 호출하려면GetTemplateCommand메서드를 호출하려면 파라미터를 전달하는Amazon SES 클라이언트 서비스 객체를 호출합니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)Note

Replace버버버 버버를 반환할 템플릿의 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { GetTemplateCommand } from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";// Set the parametersconst params = { TemplateName: "TEMPLATE_NAME" };

const run = async () => { try { const data = await sesClient.send(new GetTemplateCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. Amazon SES 템플릿 세부 정보를 반환합니다.

node ses_gettemplate.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

이메일 템플릿을 생성합니다.이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 사용할 이메일 템플릿을 생성합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sesClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SES 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { SESClient } from "@aws-sdk/client-ses";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SES service object.const sesClient = new SESClient({ region: REGION });export { sesClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

파일 이름이 ses_createtemplate.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

TemplateName, HtmlPart, SubjectPart 및 TextPart를 포함하여 SES 클라이언트 클래스의CreateTemplateCommand 메서드에 대한 파라미터를 전달할 객체를 생성합니다. 가 를 호출하려면CreateTemplateCommand메서드를 호출하려면 파라미터를 전달하는 Amazon SES 클라이언트 서비스객체를 호출합니다.

230

Page 239: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드이메일 템플릿을 사용한 작업

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)

Note

Replace버버버 버버를 새 템플릿의 이름으로 바꿉니다.HTML_버버버전자 메일의 HTML 태그 콘텐츠,SUBJECT를 이메일의 제목으로,버버버_버버버이메일의 텍스트로 변경합니다.

// Import required AWS SDK clients and commands for Node.jsimport { CreateTemplateCommand } from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";// Create createTemplate paramsconst params = { Template: { TemplateName: "TEMPLATE_NAME", //TEMPLATE_NAME HtmlPart: "HTML_CONTENT", SubjectPart: "SUBJECT", TextPart: "TEXT_CONTENT", },};

const run = async () => { try { const data = await sesClient.send(new CreateTemplateCommand(params)); console.log( "Success", data ); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. 템플릿이 Amazon SES 에 추가됩니다.

node ses_createtemplate.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

이메일 템플릿을 업데이트합니다.이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 사용할 이메일 템플릿을 생성합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sesClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SES 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { SESClient } from "@aws-sdk/client-ses";// Set the AWS Region.

231

Page 240: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드이메일 템플릿을 사용한 작업

const REGION = "REGION"; //e.g. "us-east-1"// Create SES service object.const sesClient = new SESClient({ region: REGION });export { sesClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

파일 이름이 ses_updatetemplate.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

SES 클라이언트 클래스의 UpdateTemplateCommand 메서드에 전달된 필수 TemplateName 파라미터와 함께 템플릿에서 업데이트하려는 Template 파라미터 값을 전달할 객체를 생성합니다. 가 를 호출하려면UpdateTemplateCommand메서드를 호출하려면 파라미터를 전달하는 Amazon SES 서비스 객체를 호출합니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)

Note

Replace버버버 버버템플릿의 이름으로,HTML_버버버전자 메일의 HTML 태그 콘텐츠,SUBJECT를 이메일의 제목으로,버버버_버버버이메일의 텍스트로 변경합니다.

// Import required AWS SDK clients and commands for Node.jsimport { UpdateTemplateCommand } from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";

// Set the parametersconst params = { Template: { TemplateName: "TEMPLATE_NAME", //TEMPLATE_NAME HtmlPart: "HTML_CONTENT", //HTML_CONTENT; i.e., HTML content in the email SubjectPart: "SUBJECT_LINE", //SUBJECT_LINE; i.e., email subject line TextPart: "TEXT_CONTENT", //TEXT_CONTENT; i.e., body of email },};

const run = async () => { try { const data = await sesClient.send(new UpdateTemplateCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. Amazon SES 템플릿 세부 정보를 반환합니다.

node ses_updatetemplate.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

이메일 템플릿을 삭제합니다.이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 사용할 이메일 템플릿을 생성합니다.

232

Page 241: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SES 를 사용하여 이메일 전송

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sesClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SES 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { SESClient } from "@aws-sdk/client-ses";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SES service object.const sesClient = new SESClient({ region: REGION });export { sesClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 ses_deletetemplate.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

SES 클라이언트 클래스의 DeleteTemplateCommand 메서드에 필수 TemplateName 파라미터를 전달할객체를 생성합니다. 가 를 호출하려면DeleteTemplateCommand메서드를 호출하려면 파라미터를 전달하는 Amazon SES 서비스 객체를 호출합니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)Note

Replace버버버 버버를 삭제할 템플릿의 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { DeleteTemplateCommand } from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";// Set the parametersconst params = { TemplateName: "TEMPLATE_NAME" };

const run = async () => { try { const data = await sesClient.send(new DeleteTemplateCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. Amazon SES 템플릿 세부 정보를 반환합니다.

node ses_deletetemplate.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음.

Amazon SES 를 사용하여 이메일 전송

233

Page 242: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SES 를 사용하여 이메일 전송

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 테스트 또는 HTML 이메일을 전송합니다.• 이메일 템플릿을 기반으로 이메일을 전송합니다.• 이메일 템플릿을 기반으로 대량 이메일을 전송합니다.

Amazon SES API를 사용하면 이메일 메시지 작성에 대해 원하는 제어 정도에 따라 서식 지정 및 원시라는두 가지 이메일 전송 방법을 선택할 수 있습니다. 자세한 내용은 단원을 참조하십시오.Amazon SES API를사용하여 서식이 지정된 이메일 전송및Amazon SES API를 사용하여 원시 이메일 보내기.

시나리오이 예제에서는 일련의 Node.js 모듈을 사용하여 다양한 방법으로 이메일을 전송합니다. 이 Node.js 모듈은이러한 메서드를 사용하여 이메일 템플릿을 만들고 사용하는 JavaScript 용 SDK를 사용합니다.SES클라이언트 클래스:

• SendEmailCommand

• SendTemplatedEmailCommand

• SendBulkTemplatedEmailCommand

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 및 타사 모듈. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 버전을 다운로드하고설치하려면Node.js 다운로드는..

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57).

전자 메일 메시지 전송 요구 사항Amazon SES ES에서 이메일 메시지를 작성한 다음 즉시 전송 대기열에 넣습니다. SendEmailCommand 메서드를 사용하여 이메일을 전송하려면 메시지는 다음 요구 사항을 충족해야 합니다.

• 확인된 이메일 주소 또는 도메인에서 메시지를 전송해야 합니다. 확인되지 않은 주소 또는 도메인을 사용하여 이메일을 전송하려고 시도하면 작업 결과로 "Email address not verified" 오류가 발생합니다.

• 계정이 여전히 Amazon SES 샌드박스에 있는 경우 확인된 주소 또는 도메인으로만 또는 Amazon SES 메일박스 시뮬레이터와 연결된 이메일 주소로만 전송할 수 있습니다. 자세한 내용은 단원을 참조하십시오.이메일 주소 및 도메인 확인Amazon Simple Email Service 개발자 안내서의 작업

• 첨부 파일을 포함한 메시지의 총 크기는 10MB 미만이어야 합니다.

234

Page 243: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SES 를 사용하여 이메일 전송

• 메시지에 최소 하나 이상의 수신자 이메일 주소가 포함되어야 합니다. 수신자 주소는 받는 사람: 주소,참조: 주소 또는 숨은 참조: 주소일 수 있습니다. 수신자 이메일 주소가 잘못된 경우 (즉, 형식이 아닌 경우UserName@[SubDomain.]Domain.TopLevelDomain) 에서 올바른 다른 수신자가 메시지가 포함되더라도 전체 메시지가 거부됩니다.

• 이 메시지는 받는 사람:, 참조: 및 숨은 참조: 필드에서 50명을 초과하는 수신자를 포함할 수 없습니다. 더많은 대상에게 이메일 메시지를 전송해야 하는 경우 수신자 목록을 50명 이하의 여러 그룹으로 나눈 다음sendEmail 메서드를 여러 번 호출하여 각 그룹에게 메시지를 전송할 수 있습니다.

이메일 전송이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 이메일을 전송합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sesClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SES 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { SESClient } from "@aws-sdk/client-ses";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SES service object.const sesClient = new SESClient({ region: REGION });export { sesClient };

예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

파일 이름이 ses_sendemail.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

발신자 및 수신자 주소, 제목, 일반 텍스트 및 HTML 형식의 이메일 본문을 포함하여 전송할 이메일을 정의하는 파라미터 값을 일반 텍스트 및 HTML 형식으로 전달할 객체를 생성합니다.SendEmailCommand메서드의SES클라이언트 클래스입니다. 가 를 호출하려면SendEmailCommand메서드를 호출하려면 파라미터를 전달하는 Amazon SES 서비스 객체를 호출합니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)

Note

Replace버버버 버버이메일을 보낼 주소로 전송하고버버 버버 버버이메일 주소로 이메일을 보낼 수 있습니다.

// Create the promise and SES service object

// Import required AWS SDK clients and commands for Node.jsimport { SendEmailCommand } from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";

// Set the parametersconst params = { Destination: { /* required */ CcAddresses: [ /* more items */ ], ToAddresses: [ "RECEIVER_ADDRESS", //RECEIVER_ADDRESS /* more To-email addresses */

235

Page 244: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SES 를 사용하여 이메일 전송

], }, Message: { /* required */ Body: { /* required */ Html: { Charset: "UTF-8", Data: "HTML_FORMAT_BODY", }, Text: { Charset: "UTF-8", Data: "TEXT_FORMAT_BODY", }, }, Subject: { Charset: "UTF-8", Data: "EMAIL_SUBJECT", }, }, Source: "SENDER_ADDRESS", // SENDER_ADDRESS ReplyToAddresses: [ /* more items */ ],};

const run = async () => { try { const data = await sesClient.send(new SendEmailCommand(params)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. 이메일이 Amazon SES 에서 전송하기 위해 대기됩니다.

node ses_sendemail.js

예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서 찾아볼 수 있습니다.

템플릿을 사용하여 이메일 전송이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 이메일을 전송합니다. 파일 이름이ses_sendtemplatedemail.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

발신자 및 수신자 주소, 제목, 일반 텍스트 및 HTML 형식의 이메일 본문을 포함하여 전송할 이메일을 정의하는 파라미터 값을 SES 클라이언트 클래스의 SendTemplatedEmailCommand 메서드에 전달할 객체를생성합니다. 가 를 호출하려면SendTemplatedEmailCommand메서드를 호출하려면 파라미터를 전달하는Amazon SES 클라이언트 서비스 객체를 호출합니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)

236

Page 245: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SES 를 사용하여 이메일 전송

Note

ReplaceREGION를 사용하여AWS지역,버버버 버버이메일을 보낼 주소로,버버 버버 버버이메일 발신 주소로 이메일 발신 주소입니다.버버버 버버템플릿의 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { SendTemplatedEmailCommand } from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";

// Set the parametersconst params = { Destination: { /* required */ CcAddresses: [ /* more CC email addresses */ ], ToAddresses: [ "RECEIVER_ADDRESS", // RECEIVER_ADDRESS /* more To-email addresses */ ], }, Source: "SENDER_ADDRESS", //SENDER_ADDRESS Template: "TEMPLATE_NAME", // TEMPLATE_NAME TemplateData: '{ "REPLACEMENT_TAG_NAME":"REPLACEMENT_VALUE" }' /* required */, ReplyToAddresses: [],};

const run = async () => { try { const data = await sesClient.send(new SendTemplatedEmailCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. 이메일이 Amazon SES 에서 전송하기 위해 대기됩니다.

node ses_sendtemplatedemail.js

예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

템플릿을 사용하여 대량 이메일 보내기이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 이메일을 전송합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sesClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SES 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { SESClient } from "@aws-sdk/client-ses";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SES service object.const sesClient = new SESClient({ region: REGION });export { sesClient };

예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

237

Page 246: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SES 를 사용하여 이메일 전송

파일 이름이 ses_sendbulktemplatedemail.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

발신자 및 수신자 주소, 제목, 일반 텍스트 및 HTML 형식의 이메일 본문을 포함하여 전송할이메일을 정의하는 파라미터 값을 일반 텍스트 및 HTML 형식으로 전달할 객체를 생성합니다.SendBulkTemplatedEmailCommand메서드의SES클라이언트 클래스입니다. 가 를 호출하려면SendBulkTemplatedEmailCommand메서드를 호출하려면 파라미터를 전달하는 Amazon SES 서비스객체를 호출합니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)

Note

Replace버버버 버버이메일을 보낼 주소로 전송하고버버 버버 버버이메일 주소로 이메일을 보낼 수 있습니다.

// Import required AWS SDK clients and commands for Node.jsimport { SendBulkTemplatedEmailCommand} from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";

// Set the parametersvar params = { Destinations: [ /* required */ { Destination: { /* required */ CcAddresses: [ "RECEIVER_ADDRESSES", //RECEIVER_ADDRESS /* more items */ ], ToAddresses: [ /* more items */ ], }, ReplacementTemplateData: '{ "REPLACEMENT_TAG_NAME":"REPLACEMENT_VALUE" }', }, ], Source: "SENDER_ADDRESS", // SENDER_ADDRESS Template: "TEMPLATE", //TEMPLATE DefaultTemplateData: '{ "REPLACEMENT_TAG_NAME":"REPLACEMENT_VALUE" }', ReplyToAddresses: [],};

const run = async () => { try { const data = await sesClient.send(new SendBulkTemplatedEmailCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. 이메일이 Amazon SES 에서 전송하기 위해 대기됩니다.

238

Page 247: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IP 주소 필터 사용

node ses_sendbulktemplatedemail.js

예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

Amazon SES 에서 이메일 수신에 IP 주소 필터 사용

이 Node.js 코드 예제는 다음을 보여 줍니다.

• IP 주소 또는 특정 범위의 IP 주소에서 발신한 메일을 수락하거나 거부하기 위한 IP 주소 필터를 만드는 방법.

• 현재 IP 주소 필터를 나열하는 방법.• IP 주소 필터를 삭제하는 방법.

Amazon SES 에서filter는 이름, IP 주소 범위, 해당 범위의 메일 허용 또는 차단 기능으로 구성되는 데이터 구조입니다. 차단하거나 허용하려는 IP 주소는 CIDR(클래스 없는 도메인 간 라우팅) 표기법으로 단일 IP 주소또는 IP 주소 범위로 지정됩니다. Amazon SES에서 이메일을 수신하는 자세한 방법은 단원을 참조하십시오.Amazon SES 이메일 수신 개념Amazon Simple Email Service 개발자 안내서의 작업

시나리오이 예제에서는 일련의 Node.js 모듈을 사용하여 다양한 방법으로 이메일을 전송합니다. 이 Node.js 모듈은이러한 메서드를 사용하여 이메일 템플릿을 만들고 사용하는 JavaScript 용 SDK를 사용합니다.SES클라이언트 클래스:

• CreateReceiptFilterCommand

• ListReceiptFiltersCommand

• DeleteReceiptFilterCommand

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 및 타사 모듈. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 버전을 다운로드하고설치하려면Node.js 다운로드는..

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57).

239

Page 248: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IP 주소 필터 사용

IP 주소 필터 만들기이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 이메일을 전송합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sesClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SES 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { SESClient } from "@aws-sdk/client-ses";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SES service object.const sesClient = new SESClient({ region: REGION });export { sesClient };

예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

파일 이름이 ses_createreceiptfilter.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

필터 이름, 필터링할 IP 주소 또는 주소 범위, 필터링된 주소에서 오는 이메일 트래픽을 허용 또는 차단할지 여부를 포함하여 IP 필터를 정의하는 파라미터 값을 전달할 객체를 생성합니다. 가 를 호출하려면CreateReceiptFilterCommand메서드를 호출하려면 파라미터를 전달하는 Amazon SES 서비스 객체를 호출합니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)

Note

Replace버버 버버 버버을 필터링할 IP 주소 또는 주소 범위로 바꾸려면버버와 함께ALLOW또는BLOCK,및NAME을 필터 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { CreateReceiptFilterCommand } from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";// Set the parametersconst params = { Filter: { IpFilter: { Cidr: "IP_ADDRESS_OR_RANGE", // (in code; either a single IP address (10.0.0.1) or an IP address range in CIDR notation (10.0.0.1/24)), Policy: "POLICY", // 'ALLOW' or 'BLOCK' email traffic from the filtered addressesOptions. }, Name: "NAME" // NAME (the filter name) },};

const run = async () => { try { const data = await sesClient.send(new CreateReceiptFilterCommand(params)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

240

Page 249: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드IP 주소 필터 사용

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. Amazon SES에서 필터가 생성됩니다.

node ses_createreceiptfilter.js

예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

IP 주소 필터 나열이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 이메일을 전송합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sesClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SES 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { SESClient } from "@aws-sdk/client-ses";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SES service object.const sesClient = new SESClient({ region: REGION });export { sesClient };

예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

파일 이름이 ses_listreceiptfilters.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

비어 있는 파라미터 객체를 생성합니다. 가 를 호출하려면ListReceiptFiltersCommand메서드를 호출하려면 파라미터를 전달하는 Amazon SES 서비스 객체를 호출합니다.

// Import required AWS SDK clients and commands for Node.jsimport { ListReceiptFiltersCommand } from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";

const run = async () => { try { const data = await sesClient.send(new ListReceiptFiltersCommand({})); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. Amazon SES 필터 목록을 반환합니다.

node ses_listreceiptfilters.js

예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

IP 주소 필터 삭제하기이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 이메일을 전송합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sesClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SES 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { SESClient } from "@aws-sdk/client-ses";// Set the AWS Region.

241

Page 250: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드수신 규칙 사용

const REGION = "REGION"; //e.g. "us-east-1"// Create SES service object.const sesClient = new SESClient({ region: REGION });export { sesClient };

예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

파일 이름이 ses_deletereceiptfilter.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

삭제할 IP 필터의 이름을 전달할 객체를 생성합니다. 가 를 호출하려면DeleteReceiptFilterCommand메서드를 호출하려면 파라미터를 전달하는 Amazon SES 클라이언트 서비스 객체를 호출합니다.

Note

이 예제는 가져 와서 필요한AWS서비스 V3 패키지 클라이언트, V3 명령을 실행하고send메서드를비동기/대기 패턴으로 설정합니다. 당신은 몇 가지 사소한 변경을 대신 V2 명령을 사용하여이 예제를 만들 수 있습니다. 자세한 내용은 단원을 참조하세요V3 명령 사용 (p. 3)Note

Replace버버 버버삭제할 IP 필터의 이름을 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { DeleteReceiptFilterCommand} from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";// Set the parametersconst params = { FilterName: "FILTER_NAME" }; //FILTER_NAME

const run = async () => { try { const data = await sesClient.send(new DeleteReceiptFilterCommand(params)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. Amazon SES에서 필터가 삭제됩니다.

node ses_deletereceiptfilter.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

Amazon SES 에서 수신 규칙 사용

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 수신 규칙을 생성하고 삭제하는 방법.• 수신 규칙을 수신 규칙 세트로 구성하는 방법

242

Page 251: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드수신 규칙 사용

Amazon SES 의 수신 규칙은 사용자가 소유한 이메일 주소 또는 도메인에 대해 수신되는 이메일로 수행할작업을 지정합니다. 수신 규칙에는 조건과 순서 지정된 작업 목록이 포함됩니다. 수신 이메일의 수신자가 수신 규칙 조건에 지정된 수신자와 일치하는 경우 Amazon SES 에서 수신 규칙이 지정하는 작업을 수행합니다.

Amazon SES 를 이메일 수신기로 사용하려면 적어도 하나 이상의 활성 상태가 있어야 합니다.수신 규칙 세트. 수신 규칙 세트는 확인된 도메인 전체에서 수신하는 메일로 Amazon SES 에서 수행해야 하는 작업을 지정하는 순서 지정된 수신 규칙 모음입니다. 자세한 내용은 단원을 참조하십시오.Amazon SES 이메일 수신에대한 수신 규칙 생성및Amazon SES 이메일 수신을 위한 수신 규칙 세트 생성Amazon Simple Email Service개발자 안내서의 작업

시나리오이 예제에서는 일련의 Node.js 모듈을 사용하여 다양한 방법으로 이메일을 전송합니다. 이 Node.js 모듈은이러한 메서드를 사용하여 이메일 템플릿을 만들고 사용하는 JavaScript 용 SDK를 사용합니다.SES클라이언트 클래스:

• CreateReceiptRuleCommand

• DeleteReceiptRuleCommand

• CreateReceiptRuleSetCommand

• DeleteReceiptRuleSetCommand

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 및 타사 모듈. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 버전을 다운로드하고설치하려면Node.js 다운로드는..

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57).

Amazon S3 수신 규칙 생성Amazon SES 의 각 수신 규칙에는 순서 지정된 작업 목록이 포함됩니다. 이 예제에서는 메일 메시지를Amazon S3 버킷으로 전송하는 Amazon S3 작업을 사용하여 수신 규칙을 생성합니다. 수신 규칙 작업에 대한 자세한 내용은작업 옵션Amazon Simple Email Service 개발자 안내서의 작업

Amazon SES 에서 Amazon S3 버킷에 이메일을 쓸 수 있도록PutObjectAmazon SES 권한. 이 버킷 정책 생성에 대한 자세한 내용은 단원을 참조하십시오.Amazon SES에게 Amazon S3 버킷에 쓰기 권한 부여Amazon Simple Email Service 개발자 안내서의 작업

이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 수신한 메시지를 Amazon S3 버킷에 저장하는 수신 규칙을 생성합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sesClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SES 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

243

Page 252: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드수신 규칙 사용

import { SESClient } from "@aws-sdk/client-ses";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SES service object.const sesClient = new SESClient({ region: REGION });export { sesClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

파일 이름이 ses_createreceiptrule.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.

수신 규칙 세트를 생성하는 데 필요한 값을 전달할 파라미터 객체를 생성합니다. 가 를 호출하려면CreateReceiptRuleSetCommand메서드를 호출하려면 파라미터를 전달하는 Amazon SES 서비스 객체를 호출합니다.

Note

ReplaceS3_버버_버버Amazon S3 버킷의 이름으로,버버버 버버 | 버버버를 이메일 또는 도메인으로RULE_NAME규칙 이름을 바꾸고버버 버버 버버를 규칙 세트의 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { CreateReceiptRuleCommand } from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";// Set the parametersconst params = { Rule: { Actions: [ { S3Action: { BucketName: "BUCKET_NAME", // S3_BUCKET_NAME ObjectKeyPrefix: "email", }, }, ], Recipients: [ "EMAIL_ADDRESS", // The email addresses, or domain /* more items */ ], Enabled: true | false, Name: "RULE_NAME", // RULE_NAME ScanEnabled: true | false, TlsPolicy: "Optional", }, RuleSetName: "RULE_SET_NAME", // RULE_SET_NAME};

const run = async () => { try { const data = await sesClient.send(new CreateReceiptRuleCommand(params)); console.log("Rule created", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. Amazon SES 에서 수신 규칙을 생성합니다.

node ses_createreceiptrule.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

244

Page 253: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드수신 규칙 사용

수신 규칙 삭제하기이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 이메일을 전송합니다. 파일 이름이ses_deletereceiptrule.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

삭제할 수신 규칙의 이름을 전달할 파라미터 객체를 생성합니다. 가 를 호출하려면DeleteReceiptRuleCommand메서드를 호출하려면 파라미터를 전달하는 Amazon SES 서비스 객체를호출합니다.

Note

ReplaceRULE_NAME규칙 이름을 바꾸고버버 버버 버버를 규칙 집합 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { DeleteReceiptRuleCommand } from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";// Set the deleteReceiptRule paramsvar params = { RuleName: "RULE_NAME", // RULE_NAME RuleSetName: "RULE_SET_NAME", // RULE_SET_NAME};

const run = async () => { try { const data = await sesClient.send(new DeleteReceiptRuleCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. Amazon SES 가 수신 규칙 세트 목록을 생성합니다.

node ses_deletereceiptrule.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

수신 규칙 세트 생성이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 이메일을 전송합니다. 파일 이름이ses_createreceiptruleset.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

새 수신 규칙 세트의 이름을 전달할 파라미터 객체를 생성합니다. 가 를 호출하려면CreateReceiptRuleSetCommand메서드를 호출하려면 파라미터를 전달하는 Amazon SES 클라이언트서비스 객체를 호출합니다.

Note

ReplaceREGION를 사용하여AWS지역,버버 버버 버버를 규칙 집합 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { CreateReceiptRuleSetCommand} from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";

245

Page 254: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드수신 규칙 사용

// Set the parametersconst params = { RuleSetName: "RULE_SET_NAME" }; //RULE_SET_NAME

const run = async () => { try { const data = await sesClient.send(new CreateReceiptRuleSetCommand(params)); console.log( "Success", data ); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. Amazon SES 가 수신 규칙 세트 목록을 생성합니다.

node ses_createreceiptruleset.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

수신 규칙 세트 삭제하기이 예제에서는 Node.js 모듈을 사용하여 Amazon SES에서 이메일을 전송합니다. 파일 이름이ses_deletereceiptruleset.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

삭제할 수신 규칙 세트의 이름을 전달할 객체를 생성합니다. 가 를 호출하려면DeleteReceiptRuleSetCommand메서드를 호출하려면 파라미터를 전달하는 Amazon SES 클라이언트서비스 객체를 호출합니다.

Note

Replace버버 버버 버버를 규칙 집합 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { DeleteReceiptRuleSetCommand } from "@aws-sdk/client-ses";import { sesClient } from "./libs/sesClient.js";// Set the parametersconst params = { RuleSetName: "RULE_SET_NAME" }; //RULE_SET_NAME

const run = async () => { try { const data = await sesClient.send(new DeleteReceiptRuleSetCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다. Amazon SES 가 수신 규칙 세트 목록을 생성합니다.

node ses_deletereceiptruleset.js // If you prefer JavaScript, enter 'node ses_deletereceiptruleset.js'

246

Page 255: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SNS 예제

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에 있음)..

Amazon Simple Notification ServiceAmazon Simple Notification Service(Amazon SNS)는 구독 중인 엔드포인트 또는 클라이언트에 대한 메시지전달 또는 전송을 조정 및 관리하는 웹 서비스입니다.

Amazon SNS 에는 게시자와 구독자 또는 생산자와 소비자라고 하는 두 가지 클라이언트 유형이 있습니다.

게시자는 주제에 대한 메시지를 생산 및 발송함으로써 구독자와 비동시적으로 통신하는 논리적 액세스 및 커뮤니케이션 채널입니다. 구독자 (웹 서버, 이메일 주소, Amazon SQS 대기열AWS Lambda함수) 는 지원되는 프로토콜 (Amazon SQS, 이메일, SMS,) 중 하나를 통해 메시지 또는 알림을 소비 또는 수신합니다.AWSLambda) 에서 이 주제를 구독할 때 찾아볼 수 있습니다.

Amazon SNS 용 JavaScript API는클래스: SNS.

주제• Amazon SNS S의 주제 관리 (p. 247)• Amazon SNS 에서 메시지 게시 (p. 252)• Amazon SNS 에서 구독 관리 (p. 254)• Amazon SNS 에서 SMS 메시지 전송 (p. 261)

Amazon SNS S의 주제 관리

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 알림을 게시할 수 있는 Amazon SNS 주제 생성 방법.• Amazon SNS 에서 생성된 주제를 삭제하는 방법.• 사용 가능한 주제 목록을 가져오는 방법.• 주제 속성을 가져오고 설정하는 방법.

시나리오이 예제에서는 일련의 Node.js 모듈을 사용하여 Amazon SNS 주제를 생성, 나열 및 삭제하고 주제 속성을 처리합니다. 이 Node.js 모듈은 다음과 같은 메서드를 사용하여 주제를 관리하는 JavaScript SDK에서 주제를관리합니다.SNS클라이언트 클래스:

• CreateTopicCommand

247

Page 256: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드주제 관리

• ListTopicsCommand

• DeleteTopicCommand

• GetTopicAttributesCommand

• SetTopicAttributesCommand

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript및타사 모듈 및 타사 모듈 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 버전을 다운로드하고설치하려면Node.js 다운로드.

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

주제 생성이 예제에서는 Node.js 모듈을 사용하여 Amazon SNS 주제를 생성합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_createtopic.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

SNS 클라이언트 클래스의 CreateTopicCommand 메서드에 새 주제의 Name을 전달할 객체를 생성합니다.를 호출하려면CreateTopicCommand메서드를 호출하려면 파라미터 객체를 전달하는 Amazon SNS 서비스 객체를 호출하는 비동기 함수를 생성합니다. 이data반환되는 에는 주제의 ARN 이 포함되어 있습니다.

Note

Replace버버 버버을 주제의 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport {CreateTopicCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

248

Page 257: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드주제 관리

// Set the parametersconst params = { Name: "TOPIC_NAME" }; //TOPIC_NAME

const run = async () => { try { const data = await snsClient.send(new CreateTopicCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sns_createtopic.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

주제 나열이 예제에서는 Node.js 모듈을 사용하여 Amazon SNS 주제를 나열합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_listtopics.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

SNS 클라이언트 클래스의 ListTopicsCommand 메서드에 전달할 비어 있는 객체를 생성합니다. 를 호출하려면ListTopicsCommand메서드를 호출하려면 파라미터 객체를 전달하는 Amazon SNS 서비스 객체를 호출하는 비동기 함수를 생성합니다. 이data반환되는 에는 Amazon 리소스 이름 (ARN) 의 배열이 포함됩니다.

// Import required AWS SDK clients and commands for Node.jsimport {ListTopicsCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

const run = async () => { try { const data = await snsClient.send(new ListTopicsCommand({})); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

249

Page 258: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드주제 관리

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sns_listtopics.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

주제 삭제이 예제에서는 Node.js 모듈을 사용하여 Amazon SNS 주제를 삭제합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_deletetopic.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

SNS 클라이언트 클래스의 DeleteTopicCommand 메서드에 전달할 삭제할 주제의 TopicArn을 포함하는객체를 생성합니다. 를 호출하려면DeleteTopicCommand메서드를 호출하려면 파라미터 객체를 전달하는Amazon SNS 클라이언트 서비스 객체를 호출하는 비동기 함수를 생성합니다.

Note

Replace버버_버버을 삭제할 주제의 Amazon 리소스 이름 (ARN) 으로 바꿉니다.

// Load the AWS SDK for Node.js

// Import required AWS SDK clients and commands for Node.jsimport {DeleteTopicCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

// Set the parametersconst params = { TopicArn: "TOPIC_ARN" }; //TOPIC_ARN

const run = async () => { try { const data = await snsClient.send(new DeleteTopicCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sns_deletetopic.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

250

Page 259: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드주제 관리

주제 속성 가져오기이 예제에서는 Node.js 모듈을 사용하여 Amazon SNS 주제의 속성을 검색합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_gettopicattributes.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.

SNS 클라이언트 클래스의 GetTopicAttributesCommand 메서드에 전달할 삭제할 주제의 TopicArn을포함하는 객체를 생성합니다. 를 호출하려면GetTopicAttributesCommand메서드를 호출하려면 파라미터 객체를 전달하는 Amazon SNS 클라이언트 서비스 객체를 호출합니다.

Note

Replace버버_버버을 주제의 ARN 으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport {GetTopicAttributesCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

// Set the parametersconst params = { TopicArn: "TOPIC_ARN" }; // TOPIC_ARN

const run = async () => { try { const data = await snsClient.send(new GetTopicAttributesCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sns_gettopicattributes.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

주제 속성 설정이 예제에서는 Node.js 모듈을 사용하여 Amazon SNS 주제의 변경 가능한 속성을 설정합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"

251

Page 260: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드주제에 메시지 게시

// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_settopicattributes.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.

속성을 설정하려고 하는 주제의 TopicArn, 설정할 속성의 이름, 해당 속성의 새 값을 포함하여 속성 업데이트를 위한 파라미터를 포함하는 객체를 생성합니다. Policy, DisplayName 및 DeliveryPolicy 속성만설정할 수 있습니다. SNS 클라이언트 클래스의 SetTopicAttributesCommand 메서드에 파라미터를 전달합니다. 를 호출하려면SetTopicAttributesCommand메서드를 호출하려면 파라미터 객체를 전달하는Amazon SNS 객체를 호출하는 비동기 함수를 생성합니다.

Note

Replace버버 버버를 설정하려는 속성의 이름으로 바꾸면버버_버버속성을 설정하려는 주제의 Amazon 리소스 이름 (ARN) 으로 바꿉니다.버 버버 버를 해당 속성의 새 값으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport {SetTopicAttributesCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

// Set the parametersconst params = { AttributeName: "ATTRIBUTE_NAME", // ATTRIBUTE_NAME TopicArn: "TOPIC_ARN", // TOPIC_ARN AttributeValue: "NEW_ATTRIBUTE_VALUE", //NEW_ATTRIBUTE_VALUE};

const run = async () => { try { const data = await snsClient.send(new SetTopicAttributesCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sns_settopicattributes.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

Amazon SNS 에서 메시지 게시

이 Node.js 코드 예제는 다음을 보여 줍니다.

• Amazon SNS 주제에 메시지를 게시하는 방법.

252

Page 261: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드주제에 메시지 게시

시나리오이 예제에서는 일련의 Node.js 모듈을 사용하여 Amazon SNS 주제 엔드포인트, 이메일 또는 전화번호에 메시지를 게시합니다. 이 Node.js 모듈은 이 메서드를 사용하여 메시지를 전송하는 JavaScript SDK를 사용합니다.SNS클라이언트 클래스:

• PublishCommand

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript및타사 모듈 및 타사 모듈 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 버전을 다운로드하고설치하려면Node.js 다운로드는 입니다..

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

SNS 주제에 메시지 게시이 예제에서는 Node.js 모듈을 사용하여 Amazon SNS 주제에 메시지를 게시합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_publishtotopic.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.

Amazon SNSsnPoIC의 메시지 텍스트 및 Amazon 리소스 이름 (ARN) 등 메시지를 게시하기 위한 파라미터를 포함하는 객체를 생성합니다. 사용 가능한 SMS 속성에 대한 세부 정보는 SetSMSAttributes를 참조하십시오.

파라미터를PublishCommand메서드의SNS클라이언트 클래스를 생성합니다. 파라미터 객체를 전달하는Amazon SNS 클라이언트 서비스 객체를 호출하기 위한 비동기 함수를 생성합니다.

Note

Replace버버버을 메시지 텍스트로 바꾸고버버_버버SNS 주제의 ARN 과 함께 사용합니다.

// Import required AWS SDK clients and commands for Node.js

253

Page 262: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드구독 관리

import {PublishCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

// Set the parametersvar params = { Message: "MESSAGE_TEXT", // MESSAGE_TEXT TopicArn: "TOPIC_ARN", //TOPIC_ARN};

const run = async () => { try { const data = await snsClient.send(new PublishCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sns_publishtotopic.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

Amazon SNS 에서 구독 관리

이 Node.js 코드 예제는 다음을 보여 줍니다.

• Amazon SNS 주제에 대한 모든 구독을 나열하는 방법.• 이메일 주소, 애플리케이션 엔드포인트 또는AWS Lambda함수를 Amazon SNS 주제에 추가합니다.• Amazon SNS 주제에 대한 구독을 해제하는 방법.

시나리오이 예제에서는 일련의 Node.js 모듈을 사용하여 Amazon SNS 주제에 알림 메시지를 게시합니다. 이 Node.js모듈은 다음과 같은 메서드를 사용하여 주제를 관리하는 JavaScript SDK에서 주제를 관리합니다.SNS클라이언트 클래스:

• ListSubscriptionsByTopicCommand

• SubscribeCommand

• ConfirmSubscriptionCommand

• UnsubscribeCommand

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

254

Page 263: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드구독 관리

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript및타사 모듈 및 타사 모듈 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 버전을 다운로드하고설치하려면Node.js 다운로드는 입니다..

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

주제에 대한 구독 나열이 예제에서는 Node.js 모듈을 사용하여 Amazon SNS 주제에 대한 모든 구독을 나열합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_listsubscriptions.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.

구독을 나열할 주제에 대한 TopicArn 파라미터를 포함하는 객체를 생성합니다. SNS 클라이언트클래스의 ListSubscriptionsByTopicCommand 메서드에 파라미터를 전달합니다. 를 호출하려면ListSubscriptionsByTopicCommand메서드를 호출하려면 Amazon SNS 클라이언트 서비스 객체를호출하는 비동기 함수를 생성하고 파라미터 객체를 전달하는 파라미터를 생성합니다.

Note

Replace버버_버버구독을 나열할 주제에 대한 Amazon 리소스 이름 (ARN) 으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport {ListSubscriptionsByTopicCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

// Set the parametersconst params = { TopicArn: "TOPIC_ARN" }; //TOPIC_ARN

const run = async () => { try { const data = await snsClient.send(new ListSubscriptionsByTopicCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};

255

Page 264: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드구독 관리

run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sns_listsubscriptions.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

이메일 주소에서 주제 구독이 예제에서는 Node.js 모듈을 사용하여 이메일 주소를 구독하여 Amazon SNS 주제의 SMTP 이메일 메시지를 수신하도록 이메일 주소를 구독합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_subscribeemail.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.

email 프로토콜, 구독할 주제의 TopicArn, 메시지 Endpoint로 사용되는 이메일 주소를 지정하기 위한Protocol 파라미터를 포함하는 객체를 생성합니다. SNS 클라이언트 클래스의 SubscribeCommand 메서드에 파라미터를 전달합니다. 이subscribe메서드를 사용하여 전달되는 파라미터에 사용되는 값에 따라 여러 가지 엔드포인트에서 주제를 구독합니다.

를 호출하려면SubscribeCommand메서드를 호출하려면 Amazon SNS 클라이언트 서비스 객체를 호출하는비동기 함수를 생성하고 파라미터 객체를 전달하는 파라미터를 생성합니다.

Note

Replace버버_버버주제에 대한 Amazon 리소스 이름 (ARN) 으로 설정하고버버버 버버을 (를) 추가할 이메일 주소로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport {SubscribeCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

// Set the parametersconst params = { Protocol: "email" /* required */, TopicArn: "TOPIC_ARN", //TOPIC_ARN Endpoint: "EMAIL_ADDRESS", //EMAIL_ADDRESS};

const run = async () => { try { const data = await snsClient.send(new SubscribeCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack);

256

Page 265: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드구독 관리

}};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sns_subscribeemail.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

구독 확인

이 예제에서는 Node.js 모듈을 사용하여 이전 구독 작업에서 엔드포인트로 전송한 토큰의 유효성을 검사하여 엔드포인트 소유자의 이메일 수신 의도를 확인합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_confirmsubscription.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

다음을 포함하여 매개 변수를 정의합니다.TOPIC_ARN및TOKEN의 값을 정의하십시오.TRUE또는FALSE용AutheticateOnUnsubscribe. 이 로 설정된 경우TRUE the Confirm Subscription작업을수행하려면 에서AWS서명입니다.

토큰은 이전 동안 엔드 포인트의 소유자에게 전송되는 수명이 짧은 토큰입니다.SUBSCRIBEaction. 예를들어 이메일 엔드포인트의 경우TOKEN은 이메일 소유자에게 전송된 구독 확인 이메일의 URL에 있습니다.예,abc123는 다음 URL의 토큰입니다.

를 호출하려면ConfirmSubscriptionCommand메서드를 호출하려면 파라미터 객체를 전달하는 AmazonSNS 클라이언트 서비스 객체를 호출하는 비동기 함수를 생성합니다.

Note

Replace버버_버버주제에 대한 Amazon 리소스 이름 (ARN)TOKEN에서 엔드포인트 소유자에게 전송된URL의 토큰 값을 이전Subscribe작업을 정의하고버버버버 버버. 값이TRUE또는FALSE.

// Import required AWS SDK clients and commands for Node.jsimport {ConfirmSubscriptionCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

// Set the parametersconst params = {

257

Page 266: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드구독 관리

Token: "TOKEN", // Required. Token sent to the endpoint by an earlier Subscribe action. */ TopicArn: "TOPIC_ARN", // Required AuthenticateOnUnsubscribe: "true", // 'true' or 'false'};

const run = async () => { try { const data = await snsClient.send(new ConfirmSubscriptionCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sns_confirmsubscription.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

애플리케이션 엔드포인트에서 주제 구독이 예제에서는 Node.js 모듈을 사용하여 모바일 애플리케이션 엔드포인트에서 Amazon SNS 주제의 알림을수신하도록 모바일 애플리케이션 엔드포인트에서 주제를 구독합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_confirmsubscription.js인 Node.js 모듈을 생성합니다. 필요한 모듈 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

포함된 객체를 포함하는 객체를 생성합니다.Protocol매개 변수를 사용하여application프로토콜TopicArn에 대한 모바일 애플리케이션 엔드포인트의 Amazon 리소스 이름 (ARN) 을 반환합니다.Endpoint파라미터. SNS 클라이언트 클래스의 SubscribeCommand 메서드에 파라미터를 전달합니다.

를 호출하려면SubscribeCommand메서드를 호출하려면 파라미터 객체를 전달하는 Amazon SNS 서비스객체를 호출하는 비동기 함수를 생성합니다.

Note

Replace버버_버버주제에 대한 Amazon 리소스 이름 (ARN) 으로 설정하고버버버_버버버버버에서 주제를 구독하는 엔드포인트로 전환합니다.

// Import required AWS SDK clients and commands for Node.jsimport {SubscribeCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

258

Page 267: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드구독 관리

// Set the parametersconst params = { Protocol: "application" /* required */, TopicArn: "TOPIC_ARN", //TOPIC_ARN Endpoint: "MOBILE_ENDPOINT_ARN", // MOBILE_ENDPOINT_ARN};

const run = async () => { try { const data = await snsClient.send(new SubscribeCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sns_subscribeapp.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

주제에 Lambda 함수 구독이 예제에서는 Node.js 모듈을 사용하여AWS Lambda함수에서 Amazon SNS 주제의 알림을 수신하도록 합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_subscribelambda.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.

포함된 객체를 포함하는 객체를 생성합니다.Protocol매개 변수를 지정하고lambda프로토콜TopicArn의Amazon 리소스 이름 (ARN) 과AWS Lambda함수를Endpoint파라미터. SNS 클라이언트 클래스의SubscribeCommand 메서드에 파라미터를 전달합니다.

를 호출하려면SubscribeCommand메서드를 호출하려면 파라미터 객체를 전달하는 Amazon SNS 클라이언트 서비스 객체를 호출하는 비동기 함수를 생성합니다.

Note

Replace버버_버버주제에 대한 Amazon 리소스 이름 (ARN) 으로 설정하고버버 버버 ARN을 Lambda 함수의 Amazon 리소스 이름 (ARN) 으로 대체합니다.

// Import required AWS SDK clients and commands for Node.jsimport {SubscribeCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

259

Page 268: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드구독 관리

// Set the parametersconst params = { Protocol: "lambda" /* required */, TopicArn: "TOPIC_ARN", //TOPIC_ARN Endpoint: "LAMBDA_FUNCTION_ARN", //LAMBDA_FUNCTION_ARN};

const run = async () => { try { const data = await snsClient.send(new SubscribeCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sns_subscribelambda.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

주제의 구독 취소이 예제에서는 Node.js 모듈을 사용하여 Amazon SNS 주제 구독을 구독 해제합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_unsubscribe.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다.

포함된 객체를 포함하는 객체를 생성합니다.SubscriptionArn파라미터를 사용하여 구독할 구독의Amazon 리소스 이름 (ARN) 을 지정합니다. SNS 클라이언트 클래스의 UnsubscribeCommand 메서드에 파라미터를 전달합니다.

를 호출하려면UnsubscribeCommand메서드를 호출하려면 파라미터 객체를 전달하는 Amazon SNS 클라이언트 서비스 객체를 호출하는 비동기 함수를 생성합니다.

Note

Replace버버_버버_ARN구독을 취소할 구독의 Amazon 리소스 이름 (ARN) 으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport {UnsubscribeCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

// Set the parameters

260

Page 269: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드SMS 메시지 전송

const params = { SubscriptionArn: "TOPIC_SUBSCRIPTION_ARN" }; //TOPIC_SUBSCRIPTION_ARN

const run = async () => { try { const data = await snsClient.send(new UnsubscribeCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sns_unsubscribe.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

Amazon SNS 에서 SMS 메시지 전송

이 Node.js 코드 예제는 다음을 보여 줍니다.

• Amazon SNS S에 대한 SMS 메시징 기본 설정을 가져오고 설정하는 방법.• 전화번호를 점검하여 SMS 메시지 수신을 옵트아웃했는지 여부를 확인하는 방법.• SMS 메시지 수신을 옵트아웃한 전화번호의 목록을 가져오는 방법.• SMS 메시지를 전송하는 방법.

시나리오Amazon SNS S를 사용하여 SMS 수신 가능한 디바이스에 텍스트 메시지 또는 SMS 메시지를 전송할 수 있습니다. 전화번호로 메시지를 직접 전송할 수 있으며, 전화번호에서 주제를 구독하고 메시지를 주제로 전송하여 메시지를 여러 전화번호로 한 번에 전송할 수 있습니다.

이 예제에서는 일련의 Node.js 모듈을 사용하여 Amazon SNS 에서 SMS 수신 가능한 디바이스에 SMS 텍스트 메시지를 게시합니다. 이 Node.js 모듈은 이러한 메서드를 사용하여 SMS 메시지를 게시하기 위해JavaScript SDK를 사용합니다.SNS클라이언트 클래스:

• GetSMSAttributesCommand

• SetSMSAttributesCommand

• CheckIfPhoneNumberIsOptedOutCommand

• ListPhoneNumbersOptedOutCommand

• PublishCommand

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

261

Page 270: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드SMS 메시지 전송

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript및타사 모듈 및 타사 모듈 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 버전을 다운로드하고설치하려면Node.js 다운로드.

• CommonJS 구문을 사용하려면 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57).

SMS 속성 가져오기Amazon SNS S를 사용하여 전송을 최적화하는 방법 (비용 또는 안정성 있는 전송), 월 지출 한도, 메시지 전송을 로깅하는 방법, 일일 SMS 사용 보고서를 구독하는지 여부 등 SMS 메시징에 대한 기본 설정을 지정합니다. 이러한 기본 설정은 검색되고 Amazon SNS SMS 속성으로 설정됩니다.

이 예제에서는 Node.js 모듈을 사용하여 Amazon SNS S의 현재 SMS 속성을 가져옵니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_getsmstype.js인 Node.js 모듈을 생성합니다.

필요한 클라이언트 및 패키지 다운로드를 포함하여 이전에 표시된 대로 SDK를 구성합니다. 가져올 개별 속성의 이름을 포함하여 SMS 속성을 가져오기 위한 파라미터를 포함하는 객체를 생성합니다. 사용 가능한SMS 특성에 대한 세부 정보는SetSMSAttributesAmazon Simple Notification Service API Reference의

이 예제에서는 SMS 메시지를 최저 비용이 발생하도록 메시지 전송을 최적화하는 Promotional로 전송할지 또는 최고 안정성을 달성하도록 메시지 전송을 최적화하는 Transactional로 전송할지를 제어하는DefaultSMSType 속성을 가져옵니다. SNS 클라이언트 클래스의 SetTopicAttributesCommand 메서드에 파라미터를 전달합니다. 를 호출하려면SetSMSAttributesCommand메서드를 호출하려면 파라미터 객체를 전달하는 Amazon SNS 클라이언트 서비스 객체를 호출하는 비동기 함수를 생성합니다.

Note

Replace버버 버버속성의 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport {GetSMSAttributesCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

// Set the parametersvar params = { attributes: [

262

Page 271: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드SMS 메시지 전송

"DefaultSMSType", "ATTRIBUTE_NAME", /* more items */ ],};

const run = async () => { try { const data = await snsClient.send(new GetSMSAttributesCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sns_getsmstype.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

SMS 속성 설정이 예제에서는 Node.js 모듈을 사용하여 Amazon SNS S의 현재 SMS 속성을 가져옵니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_setsmstype.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다. 설정할 개별 속성의 이름과 각 속성에 설정할 값을 포함하여SMS 속성을 설정하기 위한 파라미터를 포함하는 객체를 생성합니다. 사용 가능한 SMS 특성에 대한 세부 정보는SetSMSAttributesAmazon Simple Notification Service API Reference의

다음 예제에서는 DefaultSMSType 속성을 Transactional로 설정하여 최고의 안정성을 달성하도록 메시지 전송을 최적화합니다. SNS 클라이언트 클래스의 SetTopicAttributesCommand 메서드에 파라미터를 전달합니다. 를 호출하려면SetSMSAttributesCommand메서드를 호출하려면 파라미터 객체를 전달하는 Amazon SNS 클라이언트 서비스 객체를 호출하는 비동기 함수를 생성합니다.

// Import required AWS SDK clients and commands for Node.jsimport {SetSMSAttributesCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

// Set the parametersconst params = { attributes: { /* required */ DefaultSMSType: "Transactional" /* highest reliability */, //'DefaultSMSType': 'Promotional' /* lowest cost */ },

263

Page 272: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드SMS 메시지 전송

};

const run = async () => { try { const data = await snsClient.send(new SetSMSAttributesCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sns_setsmstype.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

전화번호가 옵트아웃되었는지 여부 확인이 예제에서는 Node.js 모듈을 사용하여 전화 번호가 SMS 메시지 수신에서 옵트아웃되었는지 여부를 확인합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_checkphoneoptout.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다. 파라미터로 확인할 전화번호를 포함하는 객체를 생성합니다.

이 예제에서는 확인할 전화번호를 지정하는 PhoneNumber 파라미터를 설정합니다. SNS 클라이언트클래스의 CheckIfPhoneNumberIsOptedOutCommand 메서드에 객체를 전달합니다. 를 호출하려면CheckIfPhoneNumberIsOptedOutCommand메서드를 호출하려면 파라미터 객체를 전달하는 AmazonSNS 클라이언트 서비스 객체를 호출하는 비동기 함수를 생성합니다.

Note

1.

ReplacePHONE_NUMBER을 전화 번호로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport {CheckIfPhoneNumberIsOptedOutCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

// Set the parametersconst params = { phoneNumber: "353861230764" }; //PHONE_NUMBER, in the E.164 phone number structure

264

Page 273: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드SMS 메시지 전송

const run = async () => { try { const data = await snsClient.send( new CheckIfPhoneNumberIsOptedOutCommand(params) ); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sns_checkphoneoptout.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

옵트아웃된 전화번호 나열이 예제에서는 Node.js 모듈을 사용하여 SMS 메시지 수신에서 옵트아웃한 전화번호의 목록을 가져옵니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_listnumbersoptedout.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다. 비어 있는 객체를 파라미터로 생성합니다.

SNS 클라이언트 클래스의 ListPhoneNumbersOptedOutCommand 메서드에 객체를 전달합니다. 를 호출하려면ListPhoneNumbersOptedOutCommand메서드를 호출하려면 파라미터 객체를 전달하는 AmazonSNS 클라이언트 서비스 객체를 호출하는 비동기 함수를 생성합니다.

// Import required AWS SDK clients and commands for Node.jsimport {ListPhoneNumbersOptedOutCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

const run = async () => { try { const data = await snsClient.send(new ListPhoneNumbersOptedOutCommand({})); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

265

Page 274: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드SMS 메시지 전송

node sns_listnumbersoptedout.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

SMS 메시지 게시이 예제에서는 Node.js 모듈을 사용하여 SMS 메시지를 전화번호에 전송합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.snsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SNSClient } from "@aws-sdk/client-sns";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const snsClient = new SNSClient({ region: REGION });export { snsClient };

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

파일 이름이 sns_publishsms.js인 Node.js 모듈을 생성합니다. 필요한 클라이언트 및 패키지 설치를 포함하여 이전에 표시된 대로 SDK를 구성합니다. Message 및 PhoneNumber 파라미터를 포함하는 객체를 생성합니다.

SMS 메시지를 전송할 때 E.164 형식을 사용하여 전화번호를 지정합니다. E.164는 국제 통신에 사용되는 전화번호 구조의 표준입니다. 이 형식을 따르는 전화번호는 최대 15자리 숫자를 사용할 수 있으며 더하기 문자(+) 및 국가 코드가 접두사로 추가됩니다. 예를 들어, E.164 형식의 미국 전화번호는 +1001XXX5550100으로표시될 수 있습니다.

이 예제에서는 메시지를 전송할 전화번호를 지정하는 PhoneNumber 파라미터를 설정합니다. SNS 클라이언트 클래스의 PublishCommand 메서드에 객체를 전달합니다. 를 호출하려면PublishCommand메서드를 호출하려면 파라미터 객체를 전달하는 Amazon SNS 서비스 객체를 호출하는 비동기 함수를 생성합니다.

Note

Replace버버버 버버버를 텍스트 메시지로 바꾸고PHONE_NUMBER을 전화 번호로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport {PublishCommand } from "@aws-sdk/client-sns";import {snsClient } from "./libs/snsClient.js";

// Set the parametersconst params = { Message: "MESSAGE_TEXT" /* required */, PhoneNumber: "PHONE_NUMBER", //PHONE_NUMBER, in the E.164 phone number structure};

const run = async () => { try { const data = await snsClient.send(new PublishCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

266

Page 275: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 예제

node sns_publishsms.js

이 예제 코드는 에서 찾아볼 수 있습니다.GitHub 에서.

Amazon SQS 예제Amazon Simple Queue Service (SQS) 는 빠르고 안정적이며 확장 가능한 완전 관리형 메시지 대기열 서비스입니다. Amazon SQS 사용하면 클라우드 애플리케이션의 구성 요소를 분리할 수 있습니다. Amazon SQS처리량이 많고 최소 1회 처리되는 표준 대기열과 FIFO (선입선입선입선입선출) 전송 및 정확히 1회 처리를제공하는 FIFO 대기열을 포함합니다.

Amazon SQS 대한 JavaScript API는SQS클라이언트 클래스입니다. Amazon SQS; 클라이언트 클래스 사용에 대한 자세한 내용은 단원을 참조하십시오.클래스: SQSAPI 참조에서.

주제• Amazon SQS 에서 대기열 사용 (p. 267)• Amazon SQS 에서 메시지 보내기 및 받기 (p. 272)• Amazon SQS 에서 가시성 제한 시간 관리 (p. 275)• Amazon SQS 에서 긴 폴링 활성화 (p. 277)• Amazon SQS 배달 못한 편지 대기열의 사용 (p. 281)

Amazon SQS 에서 대기열 사용

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 모든 메시지 대기열의 목록을 가져오는 방법.• 특정 대기열의 URL을 획득하는 방법.• 대기열을 생성하고 삭제하는 방법.

예제 소개이 예제에서는 일련의 Node.js 모듈을 사용하여 대기열을 작업합니다. 이 Node.js 모듈은 대기열을 활성화하기 위해 JavaScript SDK를 사용하여 대기열을 활성화하면SQS클라이언트 클래스:

• ListQueuesCommand

• CreateQueueCommand

• GetQueueUrlCommand

267

Page 276: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 에서 대기열 사용

• DeleteQueueCommand

Amazon SQS 메시지에 대한 자세한 내용은 단원을 참조하십시오.대기열 작동 방식의Amazon SimpleQueue Service 개발자.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드..

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57).

대기열 나열만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sqsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SQS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SQSClient } from "@aws-sdk/client-sqs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const sqsClient = new SQSClient({ region: REGION });export { sqsClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 sqs_listqueues.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 여기에는 필요한 클라이언트와 패키지 다운로드를 포함하여 SDK를 구성해야 합니다. 대기열 목록을 표시하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체는 기본적으로 비어 있는 객체입니다.ListQueuesCommand 메서드를 호출하여 대기열 목록을 검색합니다. 함수는 모든 대기열의 URL이 반환됩니다.

// Import required AWS SDK clients and commands for Node.jsimport { ListQueuesCommand } from "@aws-sdk/client-sqs";import { sqsClient } from "./libs/sqsClient.js";

const run = async () => { try { const data = await sqsClient.send(new ListQueuesCommand({})); console.log("Success", data); return data; // For unit tests. } catch (err) { console.error(err, err.stack); }};

268

Page 277: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 에서 대기열 사용

run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sqs_listqueues.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

대기열 만들기만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sqsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SQS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SQSClient } from "@aws-sdk/client-sqs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const sqsClient = new SQSClient({ region: REGION });export { sqsClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sqsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SQS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SQSClient } from "@aws-sdk/client-sqs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const sqsClient = new SQSClient({ region: REGION });export { sqsClient };

import { SQSClient } from "@aws-sdk/client-sqs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const sqsClient = new SQSClient({ region: REGION });export { sqsClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 sqs_createqueue.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 여기에는 필요한 클라이언트와 패키지 다운로드를 포함하여 SDK를 구성해야 합니다. 대기열 목록을 표시하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체에는 생성된 대기열의 이름이 포함되어야 합니다. 파라미터에는 메시지 전송이 지연되는 시간(초) 또는 수신한 메시지를 보관할 시간(초)과 같은 대기열의 속성도 포함될 수 있습니다. CreateQueueCommand 메서드를 호출합니다. 함수는 생성된 대기열의URL이 반환됩니다.

Note

ReplaceSQS_버 버버을 Amazon SNS 대기열의 이름으로 바꾸고DelaySeconds를 메시지 전송이 지연되는 시간 (초) 으로 설정하고MessageRetentionPeriod를 수신 된 메시지를 유지 하는 시간(초) 으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { CreateQueueCommand } from "@aws-sdk/client-sqs";import { sqsClient } from "./libs/sqsClient.js";

269

Page 278: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 에서 대기열 사용

// Set the parametersconst params = { QueueName: "SQS_QUEUE_NAME", //SQS_QUEUE_URL Attributes: { DelaySeconds: "60", // Number of seconds delay. MessageRetentionPeriod: "86400", // Number of seconds delay. },};

const run = async () => { try { const data = await sqsClient.send(new CreateQueueCommand(params)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sqs_createqueue.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

대기열의 URL 가져오기만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sqsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SQS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SQSClient } from "@aws-sdk/client-sqs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const sqsClient = new SQSClient({ region: REGION });export { sqsClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 sqs_getqueueurl.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 여기에는 필요한 클라이언트와 패키지 다운로드를 포함하여 SDK를 구성해야 합니다. 대기열 목록을 표시하는데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체에는 URL을 가져올 대기열의 이름이 포함되어야 합니다. GetQueueUrlCommand 메서드를 호출합니다. 함수는 지정된 대기열의 URL이 반환됩니다.

Note

바꾸기 및SQS_버 버버SQS 대기열 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { GetQueueUrlCommand } from "@aws-sdk/client-sqs";import { sqsClient } from "./libs/sqsClient.js";

// Set the parametersconst params = { QueueName: "SQS_QUEUE_NAME" };

const run = async () => { try { const data = await sqsClient.send(new GetQueueUrlCommand(params));

270

Page 279: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 에서 대기열 사용

console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sqs_getqueueurl.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

대기열 삭제만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sqsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SQS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SQSClient } from "@aws-sdk/client-sqs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const sqsClient = new SQSClient({ region: REGION });export { sqsClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 sqs_deletequeue.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 여기에는 필요한 클라이언트와 패키지 다운로드를 포함하여 SDK를 구성해야 합니다. 대기열을 삭제하는 데필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체는 삭제하려는 대기열의 URL로 구성됩니다.DeleteQueueCommand 메서드를 호출합니다.

Note

ReplaceSQS_버_URL을 Amazon SQS 대기열의 URL로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { DeleteQueueCommand } from "@aws-sdk/client-sqs";import { sqsClient } from "./libs/sqsClient.js";

// Set the parametersconst params = { QueueUrl: "SQS_QUEUE_URL" }; //SQS_QUEUE_URL e.g., 'https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME'

const run = async () => { try { const data = await sqsClient.send(new DeleteQueueCommand(params)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.error(err, err.stack); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sqs_deletequeue.js

271

Page 280: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 에서 메시지 보내기 및 받기

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

Amazon SQS 에서 메시지 보내기 및 받기

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 대기열에 있는 메시지를 전송하는 방법.• 대기열에 있는 메시지를 수신하는 방법.• 대기열에 있는 메시지를 삭제하는 방법.

시나리오이 예제에서는 일련의 Node.js 모듈을 사용하여 메시지를 전송하고 수신합니다. 이 Node.js 모듈은JavaScript SDK를 사용하여 메시지를 전송하고 수신합니다.SQS클라이언트 클래스:

• SendMessageCommand

• ReceiveMessageCommand

• DeleteMessageCommand

Amazon SQS 메시지에 대한 자세한 내용은 단원을 참조하십시오.Amazon SQS 대기열로 메시지 전송및Amazon SQS 대기열에서 메시지 수신 및 삭제의Amazon Simple Queue Service 개발자.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

• Amazon SQS 대기열 생성 대기열 생성에 대한 예제는 Amazon SQS 에서 대기열 사용 (p. 267) 섹션을참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드..

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57).

메시지를 대기열로 전송하려면만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sqsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SQS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

272

Page 281: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 에서 메시지 보내기 및 받기

import { SQSClient } from "@aws-sdk/client-sqs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const sqsClient = new SQSClient({ region: REGION });export { sqsClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 sqs_sendmessage.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 여기에는 필요한 클라이언트와 패키지 다운로드를 포함하여 SDK를 구성해야 합니다. 이 메시지를 전송하려는대기열의 URL을 포함하여 메시지에 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서 메시지는 제목, 저자, 목록에 속해 있는 기간(주)을 포함하여 소설 베스트셀러 목록에 있는 책에 대한 세부 정보를 제공합니다.

SendMessageCommand 메서드를 호출합니다. 콜백에서 메시지의 고유 ID가 반환됩니다.

Note

ReplaceSQS_버_URL을 SQS 대기열의 URL로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { SendMessageCommand } from "@aws-sdk/client-sqs";import { sqsClient } from "./libs/sqsClient.js";

// Set the parametersconst params = { DelaySeconds: 10, MessageAttributes: { Title: { DataType: "String", StringValue: "The Whistler", }, Author: { DataType: "String", StringValue: "John Grisham", }, WeeksOn: { DataType: "Number", StringValue: "6", }, }, MessageBody: "Information about current NY Times fiction bestseller for week of 12/11/2016.", // MessageDeduplicationId: "TheWhistler", // Required for FIFO queues // MessageGroupId: "Group1", // Required for FIFO queues QueueUrl: "SQS_QUEUE_URL" //SQS_QUEUE_URL; e.g., 'https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME'};

const run = async () => { try { const data = await sqsClient.send(new SendMessageCommand(params)); console.log("Success, message sent. MessageID:", data.MessageId); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

273

Page 282: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 에서 메시지 보내기 및 받기

node sqs_sendmessage.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

대기열에서 메시지 수신 및 삭제만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sqsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SQS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SQSClient } from "@aws-sdk/client-sqs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const sqsClient = new SQSClient({ region: REGION });export { sqsClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 sqs_receivemessage.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다.여기에는 필요한 클라이언트와 패키지 다운로드를 포함하여 SDK를 구성해야 합니다. 메시지를 수신하려는대기열의 URL을 포함하여 메시지에 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 예제에서 파라미터는 모든 메시지 속성의 수신 및 10개 이하의 메시지 수신을 지정합니다.

ReceiveMessageCommand 메서드를 호출합니다. 콜백에서 나중에 해당 메시지를 삭제하기 위해 사용하는 각 메시지의 ReceiptHandle을 검색할 수 있는 Message 객체의 배열이 반환됩니다. 메시지를 삭제하는 데 필요한 파라미터를 포함하는 또 다른 JSON 객체를 생성합니다. 이 파라미터는 대기열의 URL 및ReceiptHandle 값입니다. DeleteMessageCommand 메서드를 호출하여 수신한 메시지를 삭제합니다.

Note

바꾸기 및SQS_버_URL을 SQS 대기열의 URL로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { ReceiveMessageCommand, DeleteMessageCommand,} from "@aws-sdk/client-sqs";import { sqsClient } from "./libs/sqsClient.js";

// Set the parametersconst queueURL = "SQS_QUEUE_URL"; //SQS_QUEUE_URL; e.g., 'https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME'const params = { AttributeNames: ["SentTimestamp"], MaxNumberOfMessages: 10, MessageAttributeNames: ["All"], QueueUrl: queueURL, VisibilityTimeout: 20, WaitTimeSeconds: 0,};

const run = async () => { try { const data = await sqsClient.send(new ReceiveMessageCommand(params)); if (data.Messages) { var deleteParams = { QueueUrl: queueURL, ReceiptHandle: data.Messages[0].ReceiptHandle, };

274

Page 283: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 에서 가시성 제한 시간 관리

try { const data = await sqsClient.send(new DeleteMessageCommand(deleteParams)); console.log("Message deleted", data); } catch (err) { console.log("Error", err); } } else { console.log("No messages to delete"); } return data; // For unit tests. } catch (err) { console.log("Receive Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sqs_receivemessage.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

Amazon SQS 에서 가시성 제한 시간 관리

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 대기열에서 수신된 메시지를 볼 수 없는 시간 간격을 지정하는 방법

시나리오이 예제에서는 Node.js 모듈을 사용하여 제한 시간 초과를 관리합니다. 이 Node.js 모듈은 SDK를 사용하여가시성 제한 시간 초과를 관리하는 JavaScript 용 SDK를 사용합니다.SQS클라이언트 클래스:

• ChangeMessageVisibilityCommand

Amazon SQS 가시성 제한 시간에 대한 자세한 내용은 단원을 참조하십시오.제한 시간 초과의AmazonSimple Queue Service 개발자.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

• Amazon SQS 대기열 생성 대기열 생성에 대한 예제는 Amazon SQS 에서 대기열 사용 (p. 267) 섹션을참조하십시오.

275

Page 284: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 에서 가시성 제한 시간 관리

• 대기열로 메시지를 전송합니다. 대기열로 메시지를 전송하는 방법에 대한 예제는 Amazon SQS 에서 메시지 보내기 및 받기 (p. 272) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드..

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57).

제한 시간 초과 변경만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sqsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SQS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SQSClient } from "@aws-sdk/client-sqs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const sqsClient = new SQSClient({ region: REGION });export { sqsClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 sqs_changingvisibility.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 대기열에서 메시지를 검색합니다.

대기열에서 메시지를 수신하면 메시지가 포함된 대기열의 URL, 메시지를 수신할 때 반환된ReceiptHandle, 새 제한 시간(초)을 포함하여 제한 시간을 설정하기 위해 필요한 파라미터를 포함하는JSON 객체를 생성합니다. ChangeMessageVisibilityCommand 메서드를 호출합니다.

Note

바꾸기 및ACCOUNT_ID계정의 ID로 바꾸고버버버 버버대기열의 이름을 대기열의 이름으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { ReceiveMessageCommand, ChangeMessageVisibilityCommand,} from "@aws-sdk/client-sqs";import { sqsClient } from "./libs/sqsClient.js";

// Set the parametersconst queueURL = "https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME"; // REGION, ACCOUNT_ID, QUEUE_NAMEconst params = { AttributeNames: ["SentTimestamp"], MaxNumberOfMessages: 1, MessageAttributeNames: ["All"], QueueUrl: queueURL,};

const run = async () => { try { const data = await sqsClient.send(new ReceiveMessageCommand(params));

276

Page 285: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 에서 긴 폴링 활성화

if (data.Messages != null) { try { var visibilityParams = { QueueUrl: queueURL, ReceiptHandle: data.Messages[0].ReceiptHandle, VisibilityTimeout: 20, // 20 second timeout }; const results = await sqsClient.send( new ChangeMessageVisibilityCommand(params) ); console.log("Timeout Changed", results); } catch (err) { console.log("Delete Error", err); } } else { console.log("No messages to change"); } return data; // For unit tests. } catch (err) { console.log("Receive Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sqs_changingvisibility.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

Amazon SQS 에서 긴 폴링 활성화

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 새로 생성된 대기열에 대해 긴 폴링을 활성화하는 방법.• 기존 대기열에 대해 긴 폴링을 활성화하는 방법.• 메시지를 수신할 때 긴 폴링을 활성화하는 방법.

시나리오긴 폴링은 Amazon SQS 가 대기열에서 메시지를 사용할 수 있을 때까지 지정된 시간 동안 대기시켜 빈 응답 수를 줄입니다. 또한, 긴 폴링은 서버의 샘플링 대신에 모든 서버를 쿼리하여 False인 빈 응답을 제거합니다. 긴 폴링을 활성화하려면 수신된 메시지에 0이 아닌 대기 시간을 지정해야 합니다. 이렇게 하려면 대기열의 ReceiveMessageWaitTimeSeconds 파라미터를 설정하거나 메시지가 수신되었을 때 메시지에서WaitTimeSeconds 파라미터를 설정하면 됩니다.

이 예제에서는 일련의 Node.js 모듈을 사용하여 긴 폴링을 활성화합니다. 이 Node.js 모듈은 JavaScript SDK를 사용하여 긴 폴링을 활성화하기 위해 JavaScript 용 SDK를 사용합니다.SQS클라이언트 클래스:

• SetQueueAttributesCommand

• ReceiveMessageCommand

277

Page 286: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 에서 긴 폴링 활성화

• CreateQueueCommand

Amazon SQS 긴 폴링에 대한 자세한 내용은 단원을 참조하십시오.긴 폴링의Amazon Simple Queue Service개발자.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사모듈. 의 지시 사항을 따릅니다.GitHub.

Note

이AWS SDK for JavaScript(V3) 는 JavaScript 로 작성되었으므로 일관성을 위해 이러한 예제가JavaScript로 제공됩니다. JavaScript 스크립트의 슈퍼 세트이므로 이러한 예제는 JavaScript 트에서 실행할 수 있습니다.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드..

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57).

대기열 생성 시 긴 폴링 활성화만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sqsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SQS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SQSClient } from "@aws-sdk/client-sqs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const sqsClient = new SQSClient({ region: REGION });export { sqsClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 sqs_longpolling_createqueue.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. ReceiveMessageWaitTimeSeconds 파라미터의 0이 아닌 값을 포함하여 대기열을 생성하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. CreateQueueCommand 메서드를 호출합니다. 그러면 대기열에 대해 긴 폴링이 활성화됩니다.

Note

바꾸기 및SQS_버_URL을 SQS 대기열의 URL로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { CreateQueueCommand } from "@aws-sdk/client-sqs";

278

Page 287: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 에서 긴 폴링 활성화

import { sqsClient } from "./libs/sqsClient.js";

// Set the parametersconst params = { QueueName: "SQS_QUEUE_NAME", //SQS_QUEUE_URL; e.g., 'https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME' Attributes: { ReceiveMessageWaitTimeSeconds: "20", },};

const run = async () => { try { const data = await sqsClient.send(new CreateQueueCommand(params)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.error(err, err.stack); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sqs_longpolling_createqueue.js

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

기존 대기열에서 긴 폴링 사용만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sqsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SQS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SQSClient } from "@aws-sdk/client-sqs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const sqsClient = new SQSClient({ region: REGION });export { sqsClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 sqs_longpolling_existingqueue.js인 Node.js 모듈을 생성합니다. 위와 같이SDK를 구성해야 합니다. 대기열의 속성을 설정하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 여기에는 0이 아닌 값을 포함하여 대기열의 속성을 설정하는 데 필요한 파라미터를 포함합니다.ReceiveMessageWaitTimeSeconds매개 변수와 대기열의 URL이 표시됩니다.SetQueueAttributesCommand 메서드를 호출합니다. 그러면 대기열에 대해 긴 폴링이 활성화됩니다.

Note

ReplaceSQS_버_URL을 SQS 대기열의 URL로 바꾸고ReceiveMessageWaitTimeSeconds를 메시지가 수신되기 전 대기할 시간 (초) 입니다.

// Import required AWS SDK clients and commands for Node.jsimport { SetQueueAttributesCommand } from "@aws-sdk/client-sqs";import { sqsClient } from "./libs/sqsClient.js";

// Set the parametersconst params = {

279

Page 288: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 에서 긴 폴링 활성화

Attributes: { ReceiveMessageWaitTimeSeconds: "20", }, QueueUrl: "SQS_QUEUE_URL", //SQS_QUEUE_URL; e.g., 'https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME'};

const run = async () => { try { const data = await sqsClient.send(new SetQueueAttributesCommand(params)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.error(err, err.stack); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sqs_longpolling_existingqueue.js

이 예제 코드는GitHub 에 있음.

메시지 수신 시 긴 폴링 사용만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sqsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SQS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SQSClient } from "@aws-sdk/client-sqs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const sqsClient = new SQSClient({ region: REGION });export { sqsClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 sqs_longpolling_receivemessage.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를구성해야 합니다. WaitTimeSeconds 파라미터의 0이 아닌 값 및 대기열의 URL을 포함하여 메시지를 수신하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. ReceiveMessageCommand 메서드를 호출합니다.

Note

ReplaceSQS_버_URL을 SQS 대기열의 URL로 바꿉니다.MaxNumberOfMessages을 최대 메시지수로 바꾸고WaitTimeSeconds를 대기 시간 (초) 으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { ReceiveMessageCommand } from "@aws-sdk/client-sqs";import { sqsClient } from "./libs/sqsClient.js";

// Set the parametersconst queueURL = "SQS_QUEUE_URL"; // SQS_QUEUE_URLconst params = { AttributeNames: ["SentTimestamp"], MaxNumberOfMessages: 1, MessageAttributeNames: ["All"],

280

Page 289: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 배달 못한 편지 대기열의 사용

QueueUrl: queueURL, WaitTimeSeconds: 20,};

const run = async () => { try { const data = await sqsClient.send(new ReceiveMessageCommand(params)); console.log("Success, ", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sqs_longpolling_receivemessage.js

이 예제 코드는GitHub 에 있음.

Amazon SQS 배달 못한 편지 대기열의 사용

이 Node.js 코드 예제는 다음을 보여 줍니다.

• 대기열이 처리할 수 없는 다른 대기열의 메시지를 수신하고 보관하기 위해 대기열을 사용하는 방법

시나리오배달 못한 편지 대기열은 다른 (소스) 대기열에서 성공적으로 처리하지 못한 메시지를 보낼 수 있는 대기열입니다. 배달 못한 편지 대기열에서 이 메시지를 구분하고 격리하여 처리에 실패한 이유를 확인할 수 있습니다.배달 못한 편지 대기열로 메시지를 보내는 각 소스 대기열을 개별적으로 구성해야 합니다. 여러 대기열에서하나의 배달 못한 편지 대기열로 메시지를 보낼 수 있습니다.

이 예제에서는 Node.js 모듈을 사용하여 배달 못한 편지 대기열로 메시지를 라우팅합니다. 이 Node.js 모듈은 배달 못한 편지 대기열을 사용하려면 JavaScript SDK를 사용하여 배달 못한 편지 대기열을 사용합니다.SQS클라이언트 클래스:

• SetQueueAttributesCommand

Amazon SQS 배달 못한 편지 대기열에 대한 자세한 내용은 단원을 참조하십시오.Amazon SQS 배달 못한편지 대기열의 사용의Amazon Simple Queue Service 개발자.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

281

Page 290: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon SQS 배달 못한 편지 대기열의 사용

• 배달 못한 편지 대기열로 사용할 Amazon SQS 대기열을 생성합니다. 대기열 생성에 대한 예제는 AmazonSQS 에서 대기열 사용 (p. 267) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드..

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57).

소스 대기열 구성배달 못한 편지 대기열로 작동하도록 대기열을 생성한 후에는 처리되지 않은 메시지를 배달 못한 편지 대기열로 라우팅하는 다른 대기열을 구성해야 합니다. 이렇게 하려면 배달 못한 편지 대기열로 사용할 대기열을식별하는 리드라이브 정책을 지정하고 개별 메시지가 배달 못한 편지 대기열로 라우팅되기 전 최대 수신 수를 설정해야 합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.sqsClient.js. 아래 코드를복사하여 붙여넣으면 Amazon SQS 클라이언트 객체가 생성됩니다. ReplaceREGION와 함께AWS리전.

import { SQSClient } from "@aws-sdk/client-sqs";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create SNS service object.const sqsClient = new SQSClient({ region: REGION });export { sqsClient };

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

파일 이름이 sqs_deadletterqueue.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 여기에는 필요한 클라이언트와 패키지 다운로드를 포함하여 SDK를 구성해야 합니다. 대기열 속성을 업데이트하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다.RedrivePolicy배달 못한 편지 대기열의 ARN 과maxReceiveCount. 또한 구성하고자 하는 URL 소스 대기열을 지정합니다.SetQueueAttributesCommand 메서드를 호출합니다.

Note

ReplaceSQS_버_URL을 SQS 대기열의 URL로 바꾸고버버_버버_버버버을 배달 못한 편지 대기열의 ARN으로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { SetQueueAttributesCommand } from "@aws-sdk/client-sqs";import { sqsClient } from "./libs/sqsClient.js";

// Set the parametersvar params = { Attributes: { RedrivePolicy: '{"deadLetterTargetArn":"DEAD_LETTER_QUEUE_ARN",' + '"maxReceiveCount":"10"}', //DEAD_LETTER_QUEUE_ARN }, QueueUrl: "SQS_QUEUE_URL", //SQS_QUEUE_URL};

const run = async () => { try {

282

Page 291: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Transcribe 예제

const data = await sqsClient.send(new SetQueueAttributesCommand(params)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node sqs_deadletterqueue.js // If you prefer JavaScript, enter 'sqs_deadletterqueue.js'

이 예제 코드는 찾아볼 수 있습니다.GitHub 에 있음.

Amazon Transcribe 예제Amazon Transcribe 를 사용하면 개발자가 애플리케이션에 음성-텍스트 기능을 쉽게 추가할 수 있습니다.

Amazon Transcribe 기용 JavaScript API는 통해 노출됩니다.전사 서비스클라이언트 클래스입니다.

주제• Amazon Transcribe 예제 (p. 283)• Amazon Transcribe 의료 (p. 287)

Amazon Transcribe 예제이 예제에서는 일련의 Node.js 모듈을 사용하여 전사 작업을 생성, 나열 및 삭제하는 데 사용됩니다.TranscribeService클라이언트 클래스:

• StartTranscriptionJobCommand

• ListTranscriptionJobsCommand

• DeleteTranscriptionJobCommand

Amazon Transcribe 사용자에 대한 자세한 내용은Amazon Transcribe 개발자.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈입니다. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

283

Page 292: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Transcribe 예제

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. Node.js 최신 버전을 다운로드하고 설치하려면Node.js 다운로드는.

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57)

Amazon Transcribe 작업 시작이 예제는 Amazon Transcribe 필기 작업을 시작하는 방법을 보여 줍니다.AWS SDK for JavaScript. 자세한내용은 단원을 참조하십시오.시작 트랜스스크립션작업 명령.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.transcribeClient.js. 아래 코드를 복사하여 붙여넣으면 Amazon Transcribe 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { TranscribeClient } from "@aws-sdk/client-transcribe";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create Transcribe service object.const transcribeClient = new TranscribeClient({ region: REGION });export { transcribeClient };

이 예제 코드는(GitHub 에 있음).

파일 이름이 transcribe-create-job.js인 Node.js 모듈을 생성합니다. 위 그림과 같이 SDK를 구성해야 합니다. 여기에는 필요한 클라이언트와 패키지 설치가 포함됩니다. 필요한 매개 변수를 지정하여 매개 변수 개체를 만듭니다. 다음을 사용하여 작업을 시작합니다.StartMedicalTranscriptionJobCommand명령입니다.

Note

Replace버버버_버버 버버트랜스크립션 작업의 이름이 인 용버버_버버_버버출력이 저장되는 Amazon S3 버킷을 지정합니다. 용버버 버버작업 유형을 지정합니다. 용버버 버버원본 파일의 위치를 지정합니다. 용버버_버버_버버입력 미디어 파일의 위치를 지정합니다.

// Import the required AWS SDK clients and commands for Node.jsimport { StartTranscriptionJobCommand } from "@aws-sdk/client-transcribe";import { transcribeClient } from "./libs/transcribeClient.js";

// Set the parametersconst params = { TranscriptionJobName: "JOB_NAME", LanguageCode: "LANGUAGE_CODE", // For example, 'en-US' MediaFormat: "SOURCE_FILE_FORMAT", // For example, 'wav' Media: { MediaFileUri: "SOURCE_LOCATION", // For example, "https://transcribe-demo.s3-REGION.amazonaws.com/hello_world.wav" },};

const run = async () => { try { const data = await transcribeClient.send( new StartTranscriptionJobCommand(params) ); console.log("Success - put", data); return data; // For unit tests.

284

Page 293: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Transcribe 예제

} catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node transcribe-create-job.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon Transcribe 직업Amazon Transcribe 예에서는AWS SDK for JavaScript. 수정할 수 있는 다른 설정에 대한 자세한 내용은 단원을 참조하십시오.ListTranscriptionJobCommand.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.transcribeClient.js. 아래 코드를 복사하여 붙여넣으면 Amazon Transcribe 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { TranscribeClient } from "@aws-sdk/client-transcribe";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create Transcribe service object.const transcribeClient = new TranscribeClient({ region: REGION });export { transcribeClient };

이 예제 코드는(GitHub 에 있음).

파일 이름이 transcribe-list-jobs.js인 Node.js 모듈을 생성합니다. 위 그림과 같이 SDK를 구성해야합니다. 여기에는 필요한 클라이언트와 패키지 설치가 포함됩니다. 필요한 매개 변수를 사용하여 매개 변수개체를 만듭니다.

Note

Replace버버버_버버를 반환 된 작업 이름에 포함해야하는 키워드로 바꿉니다.

// Import the required AWS SDK clients and commands for Node.js

import { ListTranscriptionJobsCommand } from "@aws-sdk/client-transcribe";import { transcribeClient } from "./libs/transcribeClient.js";

// Set the parametersconst params = { JobNameContains: "KEYWORD", // Not required. Returns only transcription // job names containing this string};

const run = async () => { try { const data = await transcribeClient.send( new ListTranscriptionJobsCommand(params) ); console.log("Success", data.TranscriptionJobSummaries); return data; // For unit tests. } catch (err) { console.log("Error", err); }

285

Page 294: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Transcribe 예제

};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node transcribe-list-jobs.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon Transcribe 작업 삭제이 예제는 Amazon Transcribe 전사 작업을 삭제하는 방법을 보여 줍니다.AWS SDK for JavaScript. 선택 사항에 대한 자세한 내용은 단원을 참조하세요.DeleteTranscriptionJobCommand.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.transcribeClient.js. 아래 코드를 복사하여 붙여넣으면 Amazon Transcribe 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { TranscribeClient } from "@aws-sdk/client-transcribe";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create Transcribe service object.const transcribeClient = new TranscribeClient({ region: REGION });export { transcribeClient };

이 예제 코드는(GitHub 에 있음).

파일 이름이 transcribe-delete-job.js인 Node.js 모듈을 생성합니다. 위 그림과 같이 SDK를 구성해야 합니다. 여기에는 필요한 클라이언트와 패키지 설치가 포함됩니다. 다음을 지정합니다.AWS영역 및 삭제할 작업의 이름을 지정합니다.

Note

Replace버버 버버를 삭제할 작업의 이름으로 바꿉니다.

// Import the required AWS SDK clients and commands for Node.jsimport { DeleteTranscriptionJobCommand } from "@aws-sdk/client-transcribe";import { transcribeClient } from "./libs/transcribeClient.js";

// Set the parametersconst params = { TranscriptionJobName: "JOB_NAME", // Required. For example, 'transciption_demo'};

const run = async () => { try { const data = await transcribeClient.send( new DeleteTranscriptionJobCommand(params) ); console.log("Success - deleted"); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

286

Page 295: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Transcribe 의료

node transcribe-delete-job.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon Transcribe 의료이 예제에서는 일련의 Node.js 모듈을 사용하여 다음과 같은 방법을 사용하여 의료 전사 작업을 생성, 나열및 삭제합니다.TranscribeService클라이언트 클래스:

• StartMedicalTranscriptionJobCommand

• ListMedicalTranscriptionJobsCommand

• DeleteMedicalTranscriptionJobCommand

Amazon Transcribe 사용자에 대한 자세한 내용은Amazon Transcribe 개발자.

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈입니다. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. Node.js 최신 버전을 다운로드하고 설치하려면Node.js 다운로드는.

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57)

Amazon Transcribe 의료 기록 작업 시작이 예에서는 Amazon Transcribe 의료 기록 작업을 시작하는 방법을 보여 줍니다.AWS SDK for JavaScript.자세한 내용은 단원을 참조하십시오.시작메디컬트랜스스크립션작업.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.transcribeClient.js. 아래 코드를 복사하여 붙여넣으면 Amazon Transcribe 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { TranscribeClient } from "@aws-sdk/client-transcribe";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create Transcribe service object.const transcribeClient = new TranscribeClient({ region: REGION });export { transcribeClient };

이 예제 코드는(GitHub 에 있음).

파일 이름이 transcribe-create-medical-job.js인 Node.js 모듈을 생성합니다. 위 그림과 같이 SDK를 구성해야 합니다. 여기에는 필요한 클라이언트와 패키지 설치가 포함됩니다. 필

287

Page 296: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Transcribe 의료

요한 매개 변수를 지정하여 매개 변수 개체를 만듭니다. 다음을 사용하여 의료 작업을 시작하십시오.StartMedicalTranscriptionJobCommand명령입니다.

Note

Replace버버버_버버 버버의료 트랜스크립션 작업의 이름이 있습니다. 용버버_버버_버버출력이 저장되는Amazon S3 버킷을 지정합니다. 용버버 버버작업 유형을 지정합니다. 용버버 버버원본 파일의 위치를 지정합니다. 용버버_버버_버버입력 미디어 파일의 위치를 지정합니다.

// Import the required AWS SDK clients and commands for Node.jsimport { StartMedicalTranscriptionJobCommand } from "@aws-sdk/client-transcribe";import { transcribeClient } from "./libs/transcribeClient.js";

// Set the parametersconst params = { MedicalTranscriptionJobName: "MEDICAL_JOB_NAME", // Required OutputBucketName: "OUTPUT_BUCKET_NAME", // Required Specialty: "PRIMARYCARE", // Required. Possible values are 'PRIMARYCARE' Type: "JOB_TYPE", // Required. Possible values are 'CONVERSATION' and 'DICTATION' LanguageCode: "LANGUAGE_CODE", // For example, 'en-US' MediaFormat: "SOURCE_FILE_FORMAT", // For example, 'wav' Media: { MediaFileUri: "SOURCE_FILE_LOCATION", // The S3 object location of the input media file. The URI must be in the same region // as the API endpoint that you are calling.For example, // "https://transcribe-demo.s3-REGION.amazonaws.com/hello_world.wav" },};

const run = async () => { try { const data = await transcribeClient.send( new StartMedicalTranscriptionJobCommand(params) ); console.log("Success - put", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node transcribe-create-medical-job.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon Transcribe 의료 직무 리스팅이 예제에서는 Amazon Transcribe 전사 작업을 나열하는 방법을 보여 줍니다.AWS SDK for JavaScript. 자세한 내용은 단원을 참조하십시오.목록변환의료작업명령.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.transcribeClient.js. 아래 코드를 복사하여 붙여넣으면 Amazon Transcribe 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { TranscribeClient } from "@aws-sdk/client-transcribe";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"

288

Page 297: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Transcribe 의료

// Create Transcribe service object.const transcribeClient = new TranscribeClient({ region: REGION });export { transcribeClient };

이 예제 코드는(GitHub 에 있음).

파일 이름이 transcribe-list-medical-jobs.js인 Node.js 모듈을 생성합니다. 위 그림과 같이 SDK를 구성해야 합니다. 여기에는 필요한 클라이언트와 패키지 설치가 포함됩니다. 필요한 매개 변수를 사용하여 매개 변수 개체를 만들고ListMedicalTranscriptionJobsCommand명령입니다.

Note

Replace버버버를 반환 된 작업 이름에 포함해야하는 키워드로 바꿉니다.

// Import the required AWS SDK clients and commands for Node.js

import { ListMedicalTranscriptionJobsCommand } from "@aws-sdk/client-transcribe";import { transcribeClient } from "./libs/transcribeClient.js";

// Set the parametersconst params = { JobNameContains: "KEYWORD", // Returns only transcription job names containing this string};

const run = async () => { try { const data = await transcribeClient.send( new ListMedicalTranscriptionJobsCommand(params) ); console.log("Success", data.MedicalTranscriptionJobName); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node transcribe-list-medical-jobs.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon Transcribe 의료 작업 삭제이 예제는 Amazon Transcribe 전사 작업을 삭제하는 방법을 보여 줍니다.AWS SDK for JavaScript. 선택 사항에 대한 자세한 내용은 단원을 참조하세요.DeleteTranscriptionMedicalJobCommand.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.transcribeClient.js. 아래 코드를 복사하여 붙여넣으면 Amazon Transcribe 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { TranscribeClient } from "@aws-sdk/client-transcribe";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create Transcribe service object.const transcribeClient = new TranscribeClient({ region: REGION });export { transcribeClient };

289

Page 298: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Redshift 예제

이 예제 코드는(GitHub 에 있음).

파일 이름이 transcribe-delete-job.js인 Node.js 모듈을 생성합니다. 위 그림과 같이 SDK를 구성해야 합니다. 여기에는 필요한 클라이언트와 패키지 설치가 포함됩니다. 필요한 매개 변수가 있는 매개 변수 개체를 만들고DeleteMedicalJobCommand명령입니다.

Note

Replace버버 버버를 삭제할 작업의 이름으로 바꿉니다.

// Import the required AWS SDK clients and commands for Node.jsimport { DeleteMedicalTranscriptionJobCommand } from "@aws-sdk/client-transcribe";import { transcribeClient } from "./libs/transcribeClient.js";

// Set the parametersconst params = { MedicalTranscriptionJobName: "MEDICAL_JOB_NAME", // For example, 'medical_transciption_demo'};

const run = async () => { try { const data = await transcribeClient.send( new DeleteMedicalTranscriptionJobCommand(params) ); console.log("Success - deleted"); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

이 예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node transcribe-delete-medical-job.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon Redshift 예제Amazon Redshift는 클라우드에서 완벽하게 관리되는 페타바이트급 데이터 웨어하우스 서비스입니다.Amazon Redshift 데이터 웨어하우스는 컴퓨팅 리소스의 모음으로,노드라는 그룹으로 구성되는클러스터. 각클러스터는 Amazon Redshift 엔진을 실행하며, 하나 이상의 데이터베이스를 포함합니다.

Amazon Redshift 용 JavaScript API를 통해 노출됩니다.Amazon Redshift클라이언트 클래스입니다.

주제

290

Page 299: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Redshift 예제

• Amazon Redshift 예제 (p. 291)

Amazon Redshift 예제이 예제에서는 일련의 Node.js 모듈을 사용하여 다음과 같은 방법을 사용하여 Amazon Redshift 클러스터를 생성, 수정 및 파라미터를 설명하며 Amazon Redshift 클러스터를 생성하거나 수정하며 설명하며Redshift클라이언트 클래스:

• CreateClusterCommand

• ModifyClusterCommand

• DescribeClustersCommand

• DeleteClusterCommand

Amazon Redshift 사용자에 대한 자세한 내용은 단원을 참조하십시오.Amazon Redshift 시작 안내서를 참조하십시오..

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript및타사 모듈을 포함합니다. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

다음 예제에서는 ECMAScript6 (ES6) 을 사용하여 클라이언트 서비스 개체 및 명령을 가져오거나내보내는 방법을 보여 줍니다.

• 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. Node.js 최신 버전을 다운로드하고 설치하려면Node.js 다운로드..

• CommonJS 구문을 사용하려면JavaScript ES6/공용JS 구문 (p. 57)

Amazon Redshift 클러스터 생성이 예제는 Amazon Redshift 클러스터를 생성하는 방법을 보여 줍니다.AWS SDK for JavaScript. 자세한 내용은 단원을 참조하십시오.CreateCluster.

Important

생성하려는 클러스터가 활성화됩니다(샌드박스에서 실행되지 않음). 클러스터를 삭제할 때까지 클러스터에 대해 표준 Amazon Redshift 사용 요금이 발생합니다. 클러스터를 생성할 때와 같은 자리에 클러스터를 삭제하면 총 청구 비용이 가장 적게 적게 발생합니다.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.redshiftClient.js. 아래코드를 복사하여 붙여넣으면 Amazon Redshift 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { RedshiftClient } from "@aws-sdk/client-redshift";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create Redshift service object.

291

Page 300: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Redshift 예제

const redshiftClient = new RedshiftClient({ region: REGION });export { redshiftClient };

이 예제 코드는GitHub 에 있음.

파일 이름이 redshift-create-cluster.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야합니다. 여기에는 위와 같이 SDK를 구성해야 합니다. 프로비전할 노드 유형, 클러스터에 자동으로 생성된 데이터베이스 인스턴스에 대한 마스터 사용자 이름 및 비밀번호, 그리고 마지막으로 클러스터 유형을 지정하여매개변수 객체를 생성합니다.

Note

Replace버버버버_버버클러스터의 이름을 바꿉니다. 용버버 버버프로비저닝할 노드 유형 (예: 'dc2.large')을 지정합니다. 버버버_버버버 버버및버버버_버버버_버버는 클러스터에 있는 DB 인스턴스의 마스터 사용자의 마스터 사용자 이름과 암호입니다. 용버버버버_버버에 클러스터 유형을 입력합니다. 를 지정하는 경우single-node, 당신은 필요하지 않습니다NumberOfNodes파라미터. 나머지 파라미터는 선택사항입니다.

// Import required AWS SDK clients and commands for Node.jsimport { CreateClusterCommand } from "@aws-sdk/client-redshift";import { redshiftClient } from "./libs/redshiftClient.js";

const params = { ClusterIdentifier: "CLUSTER_NAME", // Required NodeType: "NODE_TYPE", //Required MasterUsername: "MASTER_USER_NAME", // Required - must be lowercase MasterUserPassword: "MASTER_USER_PASSWORD", // Required - must contain at least one uppercase letter, and one number ClusterType: "CLUSTER_TYPE", // Required IAMRoleARN: "IAM_ROLE_ARN", // Optional - the ARN of an IAM role with permissions your cluster needs to access other AWS services on your behalf, such as Amazon S3. ClusterSubnetGroupName: "CLUSTER_SUBNET_GROUPNAME", //Optional - the name of a cluster subnet group to be associated with this cluster. Defaults to 'default' if not specified. DBName: "DATABASE_NAME", // Optional - defaults to 'dev' if not specified Port: "PORT_NUMBER", // Optional - defaults to '5439' if not specified};

const run = async () => { try { const data = await redshiftClient.send(new CreateClusterCommand(params)); console.log( "Cluster " + data.Cluster.ClusterIdentifier + " successfully created" ); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node redshift-create-cluster.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon Redshift 클러스터 수정이 예에서는 Amazon Redshift 클러스터의 마스터 사용자 암호를AWS SDK for JavaScript. 수정할 수 있는다른 설정에 대한 자세한 내용은 단원을 참조하십시오.ModifyCluster.

292

Page 301: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Redshift 예제

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.redshiftClient.js. 아래코드를 복사하여 붙여넣으면 Amazon Redshift 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { RedshiftClient } from "@aws-sdk/client-redshift";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create Redshift service object.const redshiftClient = new RedshiftClient({ region: REGION });export { redshiftClient };

이 예제 코드는GitHub 에 있음.

파일 이름이 redshift-modify-cluster.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야합니다. 여기에는 위와 같이 SDK를 구성해야 합니다. 를 지정합니다.AWS수정할 클러스터의 이름 및 새 마스터 사용자 비밀번호입니다.

Note

Replace버버버버_버버클러스터의 이름을 바꾸고버버버_버버버_버버를 새 마스터 사용자 암호로 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { ModifyClusterCommand } from "@aws-sdk/client-redshift";import { redshiftClient } from "./libs/redshiftClient.js";

// Set the parametersconst params = { ClusterIdentifier: "CLUSTER_NAME", MasterUserPassword: "NEW_MASTER_USER_PASSWORD",};

const run = async () => { try { const data = await redshiftClient.send(new ModifyClusterCommand(params)); console.log("Success was modified.", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node redshift-modify-cluster.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon Redshift 클러스터의 세부 정보 보기이 예제에서는 Amazon Redshift 클러스터의 세부 정보를 보는 방법을 보여 줍니다.AWS SDK forJavaScript. 선택 사항에 대한 자세한 내용은 단원을 참조하십시오.DescribeClusters.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.redshiftClient.js. 아래코드를 복사하여 붙여넣으면 Amazon Redshift 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { RedshiftClient } from "@aws-sdk/client-redshift";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"

293

Page 302: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Redshift 예제

// Create Redshift service object.const redshiftClient = new RedshiftClient({ region: REGION });export { redshiftClient };

이 예제 코드는GitHub 에 있음.

파일 이름이 redshift-descibe-clusters.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 여기에는 위와 같이 SDK를 구성해야 합니다. 를 지정합니다.AWS수정할 클러스터의 이름 및 새마스터 사용자 비밀번호입니다.

Note

Replace버버버버_버버클러스터의 이름을 바꿉니다.

// Import required AWS SDK clients and commands for Node.jsimport { DescribeClustersCommand } from "@aws-sdk/client-redshift";import { redshiftClient } from "./libs/redshiftClient.js";

const params = { ClusterIdentifier: "CLUSTER_NAME",};

const run = async () => { try { const data = await redshiftClient.send(new DescribeClustersCommand(params)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node redshift-describe-clusters.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

Amazon Redshift 클러스터 삭제이 예제는 Amazon Redshift 클러스터의 세부 정보를 보는 방법을 보여 줍니다.AWS SDK for JavaScript. 수정할 수 있는 다른 설정에 대한 자세한 내용은 단원을 참조하십시오.DeleteCluster.

만들기libs디렉토리를 생성하고 파일 이름이 인 Node.js 모듈을 생성합니다.redshiftClient.js. 아래코드를 복사하여 붙여넣으면 Amazon Redshift 클라이언트 객체가 생성됩니다. ReplaceREGION를 사용하여AWS리전.

import { RedshiftClient } from "@aws-sdk/client-redshift";// Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"// Create Redshift service object.const redshiftClient = new RedshiftClient({ region: REGION });export { redshiftClient };

이 예제 코드는GitHub 에 있음.

라는 파일이 인 Node.js 모듈을 생성합니다.redshift-delete-clusters.js. 위와 같이 SDK를 구성해야 합니다. 여기에는 위와 같이 SDK를 구성해야 합니다. 를 지정합니다.AWS수정할 클러스터의 이름 및 새

294

Page 303: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Redshift 예제

마스터 사용자 비밀번호입니다. 삭제하기 전에 클러스터의 최종 스냅샷을 저장할지 여부를 지정하고, 저장하면 스냅샷의 ID를 지정합니다.

Note

Replace버버버버_버버클러스터의 이름을 바꿉니다. 이버버버버 버버 버버버버버버버에서 클러스터를 삭제하기전에 클러스터의 최종 스냅샷을 생성할지 여부를 지정합니다. 'false'를 지정하는 경우 최종 클러스터 스냅 샷의 ID를버버버버_버버버 ID. 당신은 링크를 클릭하여이 ID를 얻을 수 있습니다스냅샷클러스터에서 클러스터에 대 한클러스터대시보드를 선택하고 아래로 스크롤하여스냅샷창을 표시합니다. 참고: 줄기rs:스냅샷 ID의 일부가 아닙니다.

// Import required AWS SDK clients and commands for Node.jsimport { DeleteClusterCommand } from "@aws-sdk/client-redshift";import { redshiftClient } from "./libs/redshiftClient.js";

const params = { ClusterIdentifier: "CLUSTER_NAME", SkipFinalClusterSnapshot: false, FinalClusterSnapshotIdentifier: "CLUSTER_SNAPSHOT_ID",};

const run = async () => { try { const data = await redshiftClient.send(new DeleteClusterCommand(params)); console.log("Success, cluster deleted. ", data); return data; // For unit tests. } catch (err) { console.log("Error", err); }};run();

예제를 실행하려면 명령 프롬프트에 다음을 입력합니다.

node redshift-delete-cluster.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

295

Page 304: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon EC2 인스턴스에서 Node.js 설정

에 대 한 교차 서비스 예제AWS SDKfor JavaScript

JavaScript 를위한 SDK는 여러AWS복잡하고 정교한 솔루션을 개발하기 위해 서로 협력하는 서비스. 이 단원AWS SDK for JavaScript는 이러한 솔루션을 몇 가지 보여줍니다.

다음 교차 서비스 예제는 사용과 관련하여 다양한 작업을 수행하는 방법을 보여 줍니다.AWS SDK forJavaScript.

주제• Amazon EC2 인스턴스에서 Node.js 설정 (p. 296)• DynamoDB 에 데이터를 제출할 앱 빌드 (p. 298)• 인증된 사용자와 함께 전사 앱 빌드 (p. 303)• API Gateway 사용하여 Lambda 호출 (p. 312)• 생성AWS서버리스 워크플로 사용AWS SDK for JavaScript (p. 322)• 실행할 예약된 이벤트 만들기AWS Lambda함수 (p. 334)• Lambda 함수 만들기 및 사용 (p. 342)• Amazon Lex 챗봇 구축 (p. 349)• 예제 메시징 응용 프로그램 만들기 (p. 357)

Amazon EC2 인스턴스에서 Node.js 설정JavaScript 용 SDK와 함께 Node.js 사용을 위한 일반적인 시나리오는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 Node.js 웹 애플리케이션을 설정하고 실행하는 것입니다. 이 자습서에서는Linux 인스턴스를 생성하고, SSH를 사용하여 해당 인스턴스에 연결한 다음, 해당 인스턴스에서 실행할Node.js를 설치합니다.

Prerequisites이 자습서에서는 인터넷에서 접근 가능하고 SSH를 사용하여 연결할 수 있으며 퍼블릭 DNS 이름이 있는Linux 인스턴스를 이미 시작했다고 가정합니다. 자세한 내용은 단원을 참조하십시오.단계 1: 인스턴스 시작의Linux 인스턴스용 Amazon EC2 사용 설명서.

보안 그룹이 SSH(포트 22), HTTP(포트 80), HTTPS(포트 443) 연결을 허용하도록 구성되어야 합니다. 이 사전 요구 사항에 대한 자세한 내용은 단원을 참조하십시오.Amazon EC2 로 설정하기의Linux 인스턴스용Amazon EC2 사용 설명서.

Procedure다음 절차는 Amazon Linux 인스턴스에서 Node.js를 설치하는 데 도움이 됩니다. 이 서버를 사용하여Node.js 웹 애플리케이션을 호스팅할 수 있습니다.

Linux 인스턴스에서 Node.js를 설정하려면

1. SSH를 사용하여 ec2-user로 Linux 인스턴스에 연결합니다.2. 노드 버전 관리자 (nvm명령줄에 다음을 입력하여).

296

Page 305: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon 머신 이미지 (AMI) 생성

Warning

AWS는 다음 코드를 제어하지 않습니다. 실행하기 전에 먼저 신뢰성과 무결성을 확인해야 합니다. 이 코드에 대한 자세한 내용은 nvm GitHub 리포지토리에서 확인할 수 있습니다.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

우리는 사용하겠습니다.nvm를 설치하려면 다음을 수행합니다. Node.jsnvm는 여러 버전의 Node.js 버전을 설치할 수 있으며 여러 버전 간을 전환할 수 있습니다.

3. Activatenvm명령줄에 다음을 입력하여 명령줄에 입력합니다.

. ~/.nvm/nvm.sh

4. nvm에서 명령줄에 다음과 같이 입력하여 사용하려는 Node.js의 최신 버전을 설치합니다.

nvm install node

Node.js 설치하면 노드 패키지 관리자 (npm) 를 생성하므로 필요에 따라 추가 모듈을 설치할 수 있습니다.

5. 명령줄에 다음을 입력하여 Node.js가 올바르게 설치되고 실행되는지 테스트합니다.

node -e "console.log('Running Node.js ' + process.version)"

이렇게 하면 실행 중인 Node.js의 버전을 보여 주는 메시지가 다음과 같이 표시됩니다.

Running Node.js VERSION

Note

노드 설치는 현재 Amazon EC2 세션에만 적용됩니다. Amazon EC2 인스턴스가 사라지면 노드를다시 설치해야 합니다. 다음 주제에서 설명한 대로 유지하려는 구성이 있는 경우 대안은 AmazonEC2 인스턴스의 Amazon Machine Image (AMI) 를 만드는 것입니다.

Amazon 머신 이미지 (AMI) 생성Amazon EC2 인스턴스에 Node.js (Amazon Machine Image) 를 설치하면 해당 인스턴스에서 AMI (AmazonEC2) 를 생성할 수 있습니다. AMI I를 생성하면 동일한 Node.js 설치에서 여러 Amazon EC2 인스턴스를 쉽게 프로비저닝할 수 있습니다. 기존 인스턴스에서 AMI 생성하는 방법에 대한 자세한 내용은 단원을 참조하십시오.Amazon EBS 기반 Linux AMI 생성의Linux 인스턴스용 Amazon EC2 사용 설명서.

관련 리소스이 주제에서 사용되는 명령과 소프트웨어에 대한 자세한 내용은 다음 웹 페이지를 참조하십시오.

• 노드 버전 관리자 (nvm참조) -GitHub m에 있는.• 노드 패키지 관리자 (npm참조) -npm 웹 사이트.

297

Page 306: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드DynamoDB 에 데이터를 제출할 앱 빌드

DynamoDB 에 데이터를 제출할 앱 빌드

이 교차 서비스 Node.js 자습서에서는 사용자가 Amazon DynamoDB 테이블에 데이터를 제출할 수 있는 앱을 빌드하는 방법을 보여 줍니다. 이 앱은 다음 서비스를 사용합니다.

• AWS Identity and Access Management(IAM) 및 Amazon Cognito 를 사용하여 권한 부여 및 권한을 확인합니다.

• Amazon DynamoDB (DynamoDB) 를 사용하여 테이블을 생성하고 업데이트합니다.• Amazon Simple Notification Service (Amazon SNS) 를 사용하여 사용자가 테이블을 업데이트할 때 앱 관

리자에게 알립니다.

시나리오 관리 시나리오이 자습서에서는 HTML 페이지를 통해 Amazon DynamoDB 테이블에 데이터를 제출할 수 있는 브라우저 기반 애플리케이션이 제공됩니다. 앱은 Amazon SNS 사용하여 사용자가 테이블을 업데이트할 때 앱 관리자에게 알립니다.

앱을 빌드하려면 다음을 수행합니다.

1. 사전 조건 (p. 298)2. 리소스를 프로비저닝합니다. (p. 299)3. HTML 생성 (p. 300)4. 브라우저 스크립트 생성 (p. 301)5. 다음 단계 (p. 303)

Prerequisites다음 사전 조건을 완료합니다.

298

Page 307: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드생성AWS리소스

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈과 호환됩니다. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

생성AWS리소스이 앱에는 다음 리소스가 필요합니다.

• AWS Identity and Access Management(IAM) 다음 권한을 가진 권한이 부여되지 않은 Amazon Cognito 사용자 역할:• sns:Publish• 동적 DB:푸티템

• DynamoDB 테이블입니다.

이러한 리소스를 수동으로 만들 수 있습니다.AWS콘솔을 사용하여 이러한 리소스를 프로비저닝하는 것이 좋습니다.AWS CloudFormation(AWS CloudFormation) 이 튜토리얼에서 설명한대로.

생성AWS리소스 사용AWS CloudFormationAWS CloudFormation를 사용하면 생성 및 프로비저닝할 수 있습니다.AWS인프라 배포를 예상한 대로 반복해서 배포합니다. 에 대한 자세한 내용AWS CloudFormation에 대한 자세한 내용은AWS CloudFormation개발자 안내서를 참조하십시오..

를 만들려면AWS CloudFormation스택을 사용하여AWS CLI:

1. 설치 및 구성AWS CLI의 지침에 따라AWS CLI사용 설명서.2. 이라는 이름의 파일을 만듭니다.setup.yaml프로젝트 폴더의 root 디렉터리에 있어야 합니다.GitHub

에 있음를 그것으로 가져옵니다.

Note

이AWS CloudFormation템플릿을 사용하여 생성 된AWS CDK사용 가능GitHub 에 있음. AWSCDK에 대한 자세한 내용은 AWS Cloud Development Kit (CDK) 개발자 안내서를 참조하세요.

3. 명령 줄에서 다음 명령을 실행하여STACK_NAME를 스택의 고유한 이름으로 바꿉니다.

Important

스택 이름은 내에서 고유해야 합니다.AWS리전 및AWS계정에 로그인합니다. 최대 128자여야하며, 숫자와 하이픈을 사용할 수 있습니다.

aws cloudformation create-stack --stack-name STACK_NAME --template-body file://setup.yaml --capabilities CAPABILITY_IAM

에 대한 자세한 내용은create-stack명령 매개 변수에 대한 자세한 내용은AWS CLI명령 참조 안내서안내서, 그리고AWS CloudFormation사용 설명서.

생성된 리소스를 보려면AWS CloudFormation의AWS관리 콘솔에서 스택을 선택하고리소스탭을 선택합니다.

4. 스택을 만들 때AWS SDK for JavaScript에 설명된 대로 DynamoDB 테이블을 채울 수 있습니다.테이블채우기 (p. 300).

299

Page 308: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드앱의 프런트 엔드 페이지 만들기

테이블 채우기테이블을 채우려면 먼저libs라는 이름의 파일을 만듭니다.dynamoClient.js를 클릭하고 아래 내용을 붙여 넣으십시오. ReplaceREGION와 함께AWS리전. 이렇게 하면 DynamoDB 클라이언트 객체가 만들어집니다.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";// Set the AWS Region.const REGION = "REGION"; // e.g. "us-east-1"// Create an Amazon DynamoDB service client object.const dynamoClient = new DynamoDBClient({region:REGION});export { dynamoClient };

이 코드는 사용할 수 있습니다.GitHub 에 있음.

그런 다음 생성dynamoAppHelperFiles폴더를 프로젝트 폴더에 추가하려면 파일을 생성합니다.update-table.js에 넣고 내용을 복사하십시오.GitHub 에 있음를 그것으로 가져옵니다.

// Import required AWS SDK clients and commands for Node.jsimport { PutItemCommand } from "@aws-sdk/client-dynamodb";import { dynamoClient } from "../libs/dynamoClient.js";

// Set the parameters.export const params = { TableName: "Items", item: { Id: { N: "1" }, Title: { S: "aTitle" }, Name: { S: "aName" }, Body: { S: "aBody" }, },};

export const run = async () => { try { const data = await dbclient.send(new PutItemCommand(params)); console.log("success"); console.log(data); } catch (err) { console.error(err); }};run();

명령줄에서 다음 명령을 실행합니다.

node update-table.js

이 코드는 사용할 수 있습니다.GitHub 에 있음.

앱의 프런트 엔드 페이지 만들기여기서 앱의 프런트 엔드 HTML 브라우저 페이지를 만듭니다.

만들기DynamoDBApp디렉터리에서 이름이 인 파일을 만듭니다.index.html그런 다음 아래 코드를 붙여 넣습니다. 이script요소는 추가main.js파일에, 예제에 필요한 모든 JavaScript 포함되어 있습니다. 당신은

300

Page 309: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 생성

만들 것입니다main.js이 자습서 뒷부분에서 파일을 참조하십시오. 의 나머지 코드index.html는 사용자가 입력하는 데이터를 캡처하는 브라우저 페이지를 만듭니다.

<!DOCTYPE html><html><head> <script type="text/javascript" src="./main.js"></script></head><body><h1>Submit an item to an Amazon DynamoDB Table</h1><p>Enter a value for each attribute and choose Submit </p><table style="width:100%"> <tr> <td>ID:</td> <td><input type="text" id="id" name="id"/></td> </tr> <tr> <td>Title:</td> <td><input type="text" id="title" name="title"/></td> </tr> <tr> <td>Name:</td> <td><input type="text" id="name" name="name"/></td> </tr> <tr> <td>Body:</td> <td><input type="text" id="body" name="body"/></td> </tr> <td></td> <td><button type="button" onclick="submitData();">Submit</button></td> <script src="./main.js"></script> </tr></table></body></html>

이 예제 코드는GitHub 에 있음.

브라우저 스크립트 생성먼저 예제에 필요한 서비스 클라이언트 개체를 만듭니다. 만들기libs디렉터리, 생성snsClient.js그런다음 아래 코드를 붙여 넣습니다. ReplaceREGION및버버버 버 버버버각각에 대해 를 입력합니다.

Note

생성한 Amazon Cognito 자격 증명 풀의 ID를생성AWS리소스 (p. 299).

const { SNSClient } = require("@aws-sdk/client-sns");const REGION = "REGION"; //e.g. "us-east-1"const IdentityPoolId = "IDENTITY_POOL_ID";

const snsClient = new SNSClient({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: REGION }), identityPoolId: IdentityPoolId }),});export { snsClient };

이 코드는 사용할 수 있습니다.(GitHub에 있음)..

301

Page 310: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 생성

이 예제의 브라우저 스크립트를 만들려면DynamoDBApp에서 파일 이름을 가진 Node.js 모듈을 생성합니다.add_dat.js아래 코드를 붙여 넣습니다. 이submitData함수는 데이터를 DynamoDB 테이블에 제출하고 Amazon SNS S를 사용하여 앱 관리자에게 SMS 텍스트를 전송합니다.

에서submitData함수를 사용하여 대상 전화 번호, 앱 인터페이스에 입력된 값 및 Amazon S3 버킷의 이름에 대한 변수를 선언합니다. Replace버버_버버의 이름으로 바꿉니다.S3버킷을 생성할 수 있습니다. 그런 다음 테이블에 항목을 추가하기 위한 매개변수 객체를 작성합니다. 값이 비어 있지 않으면submitData가 테이블에 항목을 추가하고 메시지를 보냅니다. 브라우저에서 기능을 사용할 수 있도록하는 것을 잊지 마십시오.window.submitData = submitData

// Import required AWS SDK clients and commands for Node.jsimport { PutItemCommand } from "@aws-sdk/client-dynamodb";import { PublishCommand } from "@aws-sdk/client-sns";import { snsClient } from "../libs/snsClient.js";import { dynamoClient } from "../libs/dynamoClient.js";

export const submitData = async () => { //Set the parameters // Capture the values entered in each field in the browser (by id). const id = document.getElementById("id").value; const title = document.getElementById("title").value; const name = document.getElementById("name").value; const body = document.getElementById("body").value; //Set the table name. const tableName = "Items";

//Set the parameters for the table const params = { TableName: tableName, // Define the attributes and values of the item to be added. Adding ' + "" ' converts a value to // a string. Item: { id: { N: id + "" }, title: { S: title + "" }, name: { S: name + "" }, body: { S: body + "" }, }, }; // Check that all the fields are completed. if (id != "" && title != "" && name != "" && body != "") { try { //Upload the item to the table const data = await dynamoClient.send(new PutItemCommand(params)); alert("Data added to table."); try { // Create the message parameters object. const messageParams = { Message: "A new item with ID value was added to the DynamoDB", PhoneNumber: "+353861230764", //PHONE_NUMBER, in the E.164 phone number structure. // For example, ak standard local formatted number, such as (415) 555-2671, is +14155552671 in E.164 // format, where '1' in the country code. }; // Send the SNS message const data = await snsClient.send(new PublishCommand(messageParams)); console.log( "Success, message published. MessageID is " + data.MessageId ); } catch (err) { // Display error message if error is not sent console.error(err, err.stack); }

302

Page 311: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드리소스 삭제

} catch (err) { // Display error message if item is no added to table console.error( "An error occurred. Check the console for further information", err ); } // Display alert if all field are not completed. } else { alert("Enter data in each field."); }};// Expose the function to the browserwindow.submitData = submitData;

이 예제 코드는GitHub 에 있음.

마지막으로 명령 프롬프트에서 다음을 실행하여 이 예제의 JavaScriptmain.js:

webpack add_data.js --mode development --target web --devtool false -o main.js

Note

webpack 설치에 대한 자세한 내용은 단원을 참조하십시오.webpack으로 애플리케이션 번들링 (p. 42).

앱을 실행하려면index.html브라우저에서 를 실행합니다.

리소스 삭제이 자습서의 시작 부분에서 설명한 대로 이 자습서를 진행하는 동안 만든 모든 리소스를 종료하여 요금이 부과되지 않도록 해야 합니다. 삭제 하 여이 작업을 수행할 수 있습니다.AWS CloudFormation스택에서 만든생성AWS리소스 (p. 299)이 자습서의 주제를 다음과 같이 참조하십시오.

1. 열기AWS CloudFormation의AWS관리 콘솔.2. 열기스택페이지로 이동하여 스택을 선택합니다.3. 삭제를 선택합니다.

자세한 정보AWS서비스 예에 대해서는 단원을 참조하십시오.AWS SDK for JavaScript교차 서비스 예제.

인증된 사용자와 함께 전사 앱 빌드이 자습서에서는 다음을 수행하는 방법을 알아봅니다.

• Amazon Cognito 자격 증명 풀을 사용하여 인증을 구현하여 Amazon Cognito 사용자 풀과 연동된 사용자를 수락합니다.

• Amazon Transcribe 를 사용하여 브라우저에서 음성 녹음을 기록하고 표시할 수 있습니다.

시나리오이 앱을 사용하면 사용자가 고유한 이메일 및 사용자 이름으로 등록할 수 있습니다. 전자 메일을 확인하면 앱에 자동으로 기록되어 표시되는 음성 메시지를 녹음할 수 있습니다.

303

Page 312: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Steps

작동 방식앱은 두 개의 Amazon S3 버킷을 사용합니다. 하나는 애플리케이션 코드를 호스팅하고 다른 하나는 기록을저장하는 데 사용됩니다. Amazon Cognito 사용자 풀을 사용하여 사용자를 인증합니다. 인증된 사용자는 필요한AWS서비스.

사용자가 음성 메시지를 처음 녹음할 때 Amazon S3는 Amazon S3 버킷에 사용자 이름이 포함된 고유한 폴더를 만들어 기록을 저장합니다. Amazon Transcribe는 음성 메시지를 텍스트로 기록하고 JSON에 사용자폴더에 저장합니다. 사용자가 앱을 새로 고치면 해당 대화 내용이 표시되고 다운로드 또는 삭제할 수 있습니다.

이 자습서를 완료하는 데 약 30분 정도 걸립니다.

Steps앱을 빌드하려면

1. 사전 조건 (p. 304)2. 생성AWS리소스 (p. 304)3. HTML 생성 (p. 305)4. 브라우저 스크립트 준비 (p. 306)5. 앱 실행 (p. 311)6. 리소스 삭제 (p. 311)

Prerequisites• 이 노드 JavaScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모

듈과 호환됩니다. 안내를 따릅니다.GitHub.• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용

은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

이 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. Node.js 최신 버전을 다운로드하고 설치하려면Node.js 다운로드.그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

생성AWS리소스이 항목은 인증된 사용자에 대한 음성 메시지를 기록하고 표시하는 앱을 빌드하는 방법에 대한 자습서의 일부입니다. 해당 자습서의 시작 부분에서 시작하려면 인증된 사용자와 함께 전사 앱 빌드 (p. 303) 섹션을 참조하십시오.

이 항목에서는 프로비슨 방법에 대해 설명합니다.AWS리소스를 사용하여 이 앱에 대한AWS CloudDevelopment Kit (CDK).

Note

이AWS CDK는 클라우드 애플리케이션 리소스를 정의할 수 있는 소프트웨어 개발 프레임워크입니다. 자세한 내용은 AWS Cloud Development Kit (CDK) 개발자 안내서를 참조하십시오.

앱에 대한 리소스를 만들려면GitHub 에 있음를 생성하려면AWS CDK스택 중 하나를 사용하여AWSWebServices 관리 콘솔또는AWS CLI. 자습서를 마쳤을 때 스택을 수정하거나 스택과 관련 리소스를 삭제하는 방법에 대한 지침은GitHub 에 있음.

304

Page 313: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드HTML 생성

Note

스택 이름은 내에서 고유해야AWS리전 및AWS계정을 생성합니다. 최대 128자까지 지정할 수 있으며 숫자와 하이픈을 사용할 수 있습니다.

결과 스택은 다음 리소스를 자동으로 프로비저닝합니다.

• 인증된 사용자 역할이 있는 Amazon Cognito 자격 증명 풀입니다.• Amazon S3 및 Amazon Transcribe 에 대한 권한이 있는 IAM 정책이 인증된 사용자 역할에 연결됩니다.• Amazon Cognito 사용자 풀로 사용자가 앱을 등록하고 로그인할 수 있습니다.• 애플리케이션 파일을 호스팅하는 Amazon S3 버킷• 기록을 저장할 Amazon S3 버킷

Important

이 Amazon S3 버킷은 읽기 (LIST) 퍼블릭 액세스를 허용하므로 누구나 버킷 내의 객체를 나열하고 정보를 오용할 수 있습니다. 자습서를 완료한 직후에 이 Amazon S3 버킷을 삭제하지 않는 경우Amazon S3 보안 모범 사례의Amazon Simple Storage Service 개발자 가이드.

HTML 생성이 항목은 인증된 사용자에 대한 음성 메시지를 기록하고 표시하는 앱을 빌드하는 방법에 대한 자습서의 일부입니다. 해당 자습서의 시작 부분에서 시작하려면 인증된 사용자와 함께 전사 앱 빌드 (p. 303) 섹션을 참조하십시오.

생성index.html파일을 복사하고 아래 내용을 복사하여 붙여 넣습니다. 이 페이지에는 음성 메시지를 녹음하기 위한 단추 패널과 현재 사용자의 이전에 기록된 메시지를 표시하는 테이블이 있습니다. 스크립트 태그의 끝에있는body요소를 호출합니다.main.js, 앱에 대한 모든 브라우저 스크립트가 포함되어 있습니다. 이자습서의 다음 섹션에 설명된 대로 Webpack을 사용하여 main.js 를 만듭니다.

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>title</title> <link rel="stylesheet" type="text/css" href="recorder.css"> <style> table, td { border: 1px solid black; } </style></head><body><h2>Record</h2><p> <button id="record" onclick="startRecord()"></button> <button id="stopRecord" disabled onclick="stopRecord()">Stop</button><p id="demo" style="visibility: hidden;"></p></p><p> <audio id="recordedAudio"></audio></p>

<h2>My transcriptions</h2><table id="myTable1" style ="width:678px;"></table><table id="myTable" style ="width:678px;"> <tr> <td style = "font-weight:bold">Time created</td>

305

Page 314: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 준비

<td style = "font-weight:bold">Transciption</td> <td style = "font-weight:bold">Download</td> <td style = "font-weight:bold">Delete</td> </tr></table>

<script type="text/javascript" src="./main.js"></script></body>

</html>

이 코드 예제를 사용할 수 있습니다.GitHub 에 있음.

브라우저 스크립트 준비이 항목은 인증된 사용자에 대한 음성 메시지를 기록하고 표시하는 앱을 빌드하는 방법에 대한 자습서의 일부입니다. 해당 자습서의 시작 부분에서 시작하려면 인증된 사용자와 함께 전사 앱 빌드 (p. 303) 섹션을 참조하십시오.

다음과 같은 세 가지 파일이 있습니다.index.html,recorder.js, 및helper.js, 당신은 하나의 번들로번들해야합니다main.jsWebpack 사용 이 항목에서는index.js사용할 수있는 JavaScript 용 SDK를 사용하는GitHub 에 있음.

Note

recorder.js및helper.js가 필요하지만 Node.js 코드가 포함되어 있지 않기 때문에 인라인 주석에 설명되어 있습니다.여기에서및여기에서GitHub 에 각각 있음.

먼저 매개 변수를 정의합니다.COGNITO_ID는 사용자가 생성한 Amazon Cognito 사용자 풀의 엔드포인트입니다.생성AWS리소스 (p. 304)이 자습서의 주제를 참조하십시오. 형식이 지정됩니다.cognito-idp.AWS_REGION.amazonaws.com/USER_POOL_ID. 사용자 풀 ID는ID_버버의AWS자격 증명 토큰에 의해 앱 URL에서 제거되는getToken함수를 'helper.js '파일에 넣습니다. 이 토큰은loginData변수를 사용하여 Amazon Transcribe 및 Amazon S3 클라이언트 객체에 로그인을 제공합니다. Replace버버를 사용하여AWS리전 및“버버”를 바꾸기로 바꿉니다.“버버버버버 버 버버버”를 사용하여IdentityPoolId( 사용)샘플 페이지이 예제에 대해 생성한 Amazon Cognito 자격 증명 풀입니다. 이것은 또한 각 클라이언트 객체로 전달됩니다.

Note

// Import the required AWS SDK clients and commands for Node.jsimport "./helper.js";import "./recorder.js";import { CognitoIdentityClient } from"@aws-sdk/client-cognito-identity";import { fromCognitoIdentityPool,} from"@aws-sdk/credential-provider-cognito-identity";import { CognitoIdentityProviderClient, GetUserCommand,} from"@aws-sdk/client-cognito-identity-provider";import { S3RequestPresigner } from"@aws-sdk/s3-request-presigner";import { createRequest } from"@aws-sdk/util-create-request";import { formatUrl } from"@aws-sdk/util-format-url";import { TranscribeClient, StartTranscriptionJobCommand,

306

Page 315: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 준비

} from"@aws-sdk/client-transcribe";import { S3Client, PutObjectCommand, GetObjectCommand, ListObjectsCommand, DeleteObjectCommand,} from"@aws-sdk/client-s3";import fetch from "node-fetch";

// Set the parameters.// 'COGINTO_ID' has the format 'cognito-idp.eu-west-1.amazonaws.com/COGNITO_ID'.let COGNITO_ID = "COGNITO_ID";// Get the Amazon Cognito ID token for the user. 'getToken()' is in 'helper.js'.let idToken = getToken();let loginData = { [COGNITO_ID]: idToken,};

const params = { Bucket: "BUCKET", // The Amazon Simple Storage Solution (S3) bucket to store the transcriptions. Region: "REGION", // The AWS Region identityPoolID: "IDENTITY_POOL_ID", // Amazon Cognito Identity Pool ID.};

// Create an Amazon Transcribe service client object.const client = new TranscribeClient({ region: params.Region, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: params.Region }), identityPoolId: params.identityPoolID, logins: loginData, }),});

// Create an Amazon S3 client object.const s3Client = new S3Client({ region: params.Region, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: params.Region }), identityPoolId: params.identityPoolID, logins: loginData, }),});

HTML 페이지가로드되면updateUserInterface는 사용자가 앱에 처음 로그인한 경우 Amazon S3 버킷에사용자 이름이 포함된 폴더를 생성합니다. 그렇지 않은 경우 사용자 인터페이스가 사용자의 이전 세션의 모든 대화 내용으로 업데이트됩니다.

let updateUserInterface;window.onload = updateUserInterface = async () => { // Set the parameters. const userParams = { // Get the access token. 'GetAccessToken()' is in 'helper.js'. AccessToken: getAccessToken(), }; // Create a CognitoIdentityProviderClient client object. const client = new CognitoIdentityProviderClient({ region: params.Region }); try { const data = await client.send(new GetUserCommand(userParams)); const username = data.Username; // Export username for use in 'recorder.js'.

307

Page 316: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 준비

exports.username = username; try { // If this is user's first sign-in, create a folder with user's name in Amazon S3 bucket. // Otherwise, no effect. const Key = `${username}/`; try { const data = await s3Client.send( new PutObjectCommand({ Key: Key, Bucket: params.Bucket }) ); console.log("Folder created for user ", data.Username); } catch (err) { console.log("Error", err); } try { // Get a list of the objects in the Amazon S3 bucket. const data = await s3Client.send( new ListObjectsCommand({ Bucket: params.Bucket, Prefix: username }) ); // Create a variable for the list of objects in the Amazon S3 bucket. const output = data.Contents; // Loop through the objects, populating a row on the user interface for each object. for (var i = 0; i < output.length; i++) { var obj = output[i]; const objectParams = { Bucket: params.Bucket, Key: obj.Key, }; // Get the name of the object from the Amazon S3 bucket. const data = await s3Client.send(new GetObjectCommand(objectParams)); // Extract the body contents, a readable stream, from the returned data. const result = data.Body; // Create a variable for the string version of the readable stream. let stringResult = ""; // Use 'yeidlUnit8Chunks' to convert the readable streams into JSON. for await (let chunk of yieldUint8Chunks(result)) { stringResult += String.fromCharCode.apply(null, chunk); } // The setTimeout function waits while readable stream is converted into JSON. setTimeout(function () { // Parse JSON into human readable transcript, which will be displayed on user interface (UI). const outputJSON = JSON.parse(stringResult).results.transcripts[0] .transcript; // Create name for transcript, which will be displayed. const outputJSONTime = JSON.parse(stringResult) .jobName.split("/")[0] .replace("-job", ""); i++; // // Display the details for the transcription on the UI. // 'displayTranscriptionDetails()' is in 'helper.js'. displayTranscriptionDetails( i, outputJSONTime, objectParams.Key, outputJSON ); }, 1000); } } catch (err) { console.log("Error", err); } } catch (err) { console.log("Error creating presigned URL", err);

308

Page 317: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 준비

} } catch (err) { console.log("Error", err); }};

// Convert readable streams.async function* yieldUint8Chunks(data) { const reader = data.getReader(); try { while (true) { const { done, value } = await reader.read(); if (done) return; yield value; } } finally { reader.releaseLock(); }}

사용자가 기록을 위해 음성 메시지를 녹음할 때upload에서 Amazon S3 버킷에 녹화를 업로드합니다. 이 함수는recorder.js파일을 생성합니다.

// Upload recordings to Amazon S3 bucketwindow.upload = async function (blob, userName) { // Set the parameters for the recording recording. const Key = `${userName}/test-object-${Math.ceil(Math.random() * 10 ** 10)}`;

// Create a presigned URL to upload the transcription to the Amazon S3 bucket when it is ready. try { // Create an Amazon S3RequestPresigner object. const signer = new S3RequestPresigner({ ...s3Client.config }); // Create the request. const request = await createRequest( s3Client, new PutObjectCommand({ Key, Bucket: params.Bucket }) ); // Define the duration until expiration of the presigned URL. const expiration = new Date(Date.now() + 60 * 60 * 1000); // Create and format the presigned URL. let signedUrl; signedUrl = formatUrl(await signer.presign(request, expiration)); console.log(`\nPutting "${Key}"`); } catch (err) { console.log("Error creating presigned URL", err); } try { // Upload the object to the Amazon S3 bucket using a presigned URL. response = await fetch(signedUrl, { method: "PUT", headers: { "content-type": "application/octet-stream", }, body: blob, }); // Create the transcription job name. In this case, it's the current date and time. const today = new Date(); const date = today.getFullYear() + "-" + (today.getMonth() + 1) +

309

Page 318: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 준비

"-" + today.getDate(); const time = today.getHours() + "-" + today.getMinutes() + "-" + today.getSeconds(); const jobName = date + "-time-" + time;

// Call the "createTranscriptionJob()" function. createTranscriptionJob( "s3://" + params.Bucket + "/" + Key, jobName, params.Bucket, Key ); } catch (err) { console.log("Error uploading object", err); }};

// Create the AWS Transcribe transcription job.const createTranscriptionJob = async (recording, jobName, bucket, key) => { // Set the parameters for transcriptions job const params = { TranscriptionJobName: jobName + "-job", LanguageCode: "en-US", // For example, 'en-US', OutputBucketName: bucket, OutputKey: key, Media: { MediaFileUri: recording, // For example, "https://transcribe-demo.s3-REGION.amazonaws.com/hello_world.wav" }, }; try { // Start the transcription job. const data = await client.send(new StartTranscriptionJobCommand(params)); console.log("Success - transcription submitted", data); } catch (err) { console.log("Error", err); }};

deleteTranscription는 사용자 인터페이스에서 필사체를 삭제하고deleteRowAmazon S3 버킷에서 기존 기록을 삭제합니다. 둘 다에 의해 트리거됩니다삭제사용자 인터페이스에서 단추를 선택합니다.

// Delete a transcription from the Amazon S3 bucket.window.deleteJSON = async (jsonFileName) => { try { const data = await s3Client.send( new DeleteObjectCommand({ Bucket: params.Bucket, Key: jsonFileName, }) ); console.log("Success - JSON deleted"); } catch (err) { console.log("Error", err); }};// Delete a row from the user interface.window.deleteRow = function (rowid) { const row = document.getElementById(rowid); row.parentNode.removeChild(row);};

310

Page 319: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드앱 실행

마지막으로 명령 프롬프트에서 다음을 실행하여 이 예제의 JavaScriptmain.js:

webpack index.js --mode development --target web --devtool false -o main.js

Note

Webpack 설치에 대한 자세한 내용은webpack으로 애플리케이션 번들링 (p. 42).

앱 실행이 항목은 인증된 사용자에 대한 음성 메시지를 기록하고 표시하는 앱을 빌드하는 방법에 대한 자습서의 일부입니다. 해당 자습서의 시작 부분에서 시작하려면 인증된 사용자와 함께 전사 앱 빌드 (p. 303) 섹션을 참조하십시오.

아래 위치에서 앱을 볼 수 있습니다.

DOMAIN/login?client_id=APP_CLIENT_ID&response_type=token&scope=aws.cognito.signin.user.admin+email+openid+phone+profile&redirect_uri=REDIRECT_URL

Amazon Cognito 를 사용하면AWS웹 서비스 관리 콘솔입니다. Amazon Cognito 사용자 풀의 앱 클라이언트설정으로 이동한 다음호스팅된 UI 실행. 앱의 URL의 형식은 다음과 같습니다.

Important

호스팅 된 UI는 기본적으로 '코드'의 응답 유형을 사용합니다. 그러나이 튜토리얼은 '토큰'응답 유형용으로 설계되었으므로 변경해야합니다.

를 삭제합니다.AWS리소스이 항목은 인증된 사용자에 대한 음성 메시지를 기록하고 표시하는 앱을 빌드하는 방법에 대한 자습서의 일부입니다. 해당 자습서의 시작 부분에서 시작하려면 인증된 사용자와 함께 전사 앱 빌드 (p. 303) 섹션을 참조하십시오.

311

Page 320: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드API Gateway 사용하여 Lambda 호출

자습서를 완료한 후 불필요한 비용이 발생하지 않도록 리소스를 삭제해야 합니다. Amazon S3 버킷에 콘텐츠를 추가했으므로 수동으로 삭제해야 합니다. 그런 다음 중 하나를 사용하여 나머지 리소스를 삭제할 수 있습니다AWSWeb Services 관리 콘솔또는AWS CLI. 자습서를 마쳤을 때 스택을 수정하거나 스택과 관련 리소스를 삭제하는 방법에 대한 지침은GitHub 에 있음.

API Gateway 사용하여 Lambda 호출Amazon API Gateway 를 사용하여 Lambda 함수를 호출할 수 있습니다.AWS서비스를 사용하여 규모와 관계없이 REST 및 WebSocket API를 생성, 유지, 모니터링 및 보호하기 위한 서비스를 제공합니다. API 개발자는 액세스 할 수있는 API를 만들 수 있습니다.AWS또는 다른 웹 서비스는 물론AWS클라우드 API Gateway개발자는 자체 클라이언트 애플리케이션에서 사용할 API를 생성할 수 있습니다. 자세한 내용은 단원을 참조하십시오.Amazon API Gateway 란 무엇입니까?.

AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. 다양한 프로그래밍 언어로 Lambda 함수를 만들 수 있습니다. AWS Lambda에 대한 자세한 정보는AWS Lambda란 무엇입니까?를 참조하세요.

이 예에서는 Lambda JavaScript 런타임 API를 사용하여 Lambda 함수를 생성합니다. 이 예는 다른 호출AWS서비스를 사용하여 특정 사용 사례를 수행할 수 있습니다. 예를 들어, 조직에서 이 그림에 표시된 것처럼 1년 기념일에 직원을 축하하는 모바일 문자 메시지를 직원에게 보내는 경우를 가정해 보겠습니다.

이 예제는 완료하는 데 약 20분 정도 걸립니다.

이 예에서는 JavaScript 논리를 사용하여 이 사용 사례를 수행하는 솔루션을 만드는 방법을 보여 줍니다. 예를 들어 Lambda 함수를 사용하여 데이터베이스를 읽고 1주년 기념일에 도달한 직원을 확인하는 방법, 데이터를 처리하는 방법, 문자 메시지를 보내는 방법을 배웁니다. 그런 다음 API Gateway 이를 사용하여AWSLambda함수를 Rest 끝점을 사용 하 여. 예를 들어 다음 curl 명령을 사용하여 Lambda 함수를 호출할 수 있습니다.

curl -XGET "https://xxxxqjko1o3.execute-api.us-east-1.amazonaws.com/cronstage/employee"

이AWS자습서에서는 이러한 필드를 포함하는 직원이라는 Amazon DynamoDB 테이블을 사용합니다.

• id테이블의 기본 키입니다.• 이름- 직원의 이름• phone- 직원 전화 번호입니다.• StartDate- 직원의 시작 날짜

312

Page 321: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드사전 요구 사항 작업

Important

완료 비용: 이AWS이 문서에 포함된 서비스는AWS프리 티어 그러나 비용이 청구되지 않도록 하려면 이 예제를 완료한 후 모든 리소스를 종료해야 합니다.

앱을 빌드하려면 다음을 수행합니다.

1. 사전 조건 완료 (p. 313)2. 생성AWS리소스 (p. 313)3. 브라우저 스크립트 준비 (p. 315)4. Lambda 함수 생성 및 업로드 (p. 315)5. Lambda 함수 배포 (p. 317)6. 앱 실행 (p. 318)7. 리소스 삭제 (p. 322)

사전 요구 사항 작업이 주제는 Amazon API Gateway 통해 Lambda 함수를 호출하는 방법을 보여 주는 자습서의 일부입니다.AWS SDK for JavaScript. 해당 자습서의 시작 부분에서 시작하려면 API Gateway 사용하여 Lambda 호출 (p. 312) 섹션을 참조하십시오.

이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript및타사 모듈을 참조하십시오. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

Lambda 현재 ECMAScript 6 (ES6) 구문을 지원하지 않기 때문에이 예제에서는 CommonJS 시스템택스를 사용합니다. 자세한 내용은 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57)

생성AWS리소스이 주제는 Amazon API Gateway 통해 Lambda 함수를 호출하는 방법을 보여 주는 자습서의 일부입니다.AWS SDK for JavaScript. 해당 자습서의 시작 부분에서 시작하려면 API Gateway 사용하여 Lambda 호출 (p. 312) 섹션을 참조하십시오.

이 자습서를 시작하려면 다음 리소스가 필요합니다.

• **직원** 이라는 이름의 Amazon DynamoDB 테이블과 이전 그림에 표시된 필드가**ID**라는 키와 함께 제공됩니다. 이 사용 사례를 테스트할 유효한 휴대폰을 포함하여 올바른 데이터를 입력해야 합니다. 자세한내용은 단원을 참조하십시오.테이블 생성.

• Lambda 함수를 실행할 수 있는 권한이 연결된 IAM 역할입니다.• Lambda 함수를 호스팅하기 위한 Amazon S3 버킷입니다.

이러한 리소스는 수동으로 만들 수 있지만AWS CloudFormation이 튜토리얼에 설명 된대로.

생성AWS리소스 사용AWS CloudFormationAWS CloudFormation를 사용하면 생성 및 프로비저닝할 수 있습니다.AWS인프라 배포를 예상한 대로반복해서 수행할 수 있습니다. 에 대한 자세한 내용AWS CloudFormation에 대한 자세한 내용은AWSCloudFormation개발자 안내서를 참조하십시오..

313

Page 322: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드생성AWS리소스

를 만들려면AWS CloudFormation스택을 사용하여AWS CLI:

1. 설치 및 구성AWS CLI[] 의 지침을 따르지 않습니다.AWS CLI사용 설명서.2. 이라는 이름의 파일을 만듭니다.setup.yaml프로젝트 폴더의 root 디렉터리에서 콘텐츠를 복사하세

요.(GitHub 에 있음)를 그것으로 가져옵니다.

Note

이AWS CloudFormation템플릿을 사용하여 생성 된AWS CDK사용 가능(GitHub 에 있음). AWSCDK에 대한 자세한 내용은 AWS Cloud Development Kit (CDK) 개발자 안내서 단원을 참조하세요.

3. 명령줄에서 다음 명령을 실행하여STACK_NAME스택에 고유한 이름을 갖도록 합니다.

Important

스택 이름은 내에서 고유해야 합니다.AWS지역 및AWS계정에 로그인합니다. 최대 128자까지지정할 수 있으며 숫자와 하이픈을 사용할 수 있습니다.

aws cloudformation create-stack --stack-name STACK_NAME --template-body file://setup.yaml --capabilities CAPABILITY_IAM

자세한 내용은create-stack명령 매개 변수에 대한 자세한 내용은AWS CLI명령 참조 안내서, 그리고AWS CloudFormation사용 설명서.

4. 그런 다음 procdure를 따름으로써 테이블을 채 웁니다.테이블 채우기 (p. 314).

테이블 채우기테이블을 채우려면 먼저libs라는 파일을 생성합니다.dynamoClient.js를 클릭하고 아래 내용을 붙여 넣으십시오.

const { DynamoDBClient } = require ( "@aws-sdk/client-dynamodb" );// Set the AWS Region.const REGION = "REGION"; // e.g. "us-east-1" // Create an Amazon Lambda service client object.const dynamoClient = new DynamoDBClient({region:REGION});module.exports = { dynamoClient };

이 코드는 사용할 수 있습니다(GitHub 에 있음).

그런 다음 라는 이름의 파일을 만듭니다.populate-table.js프로젝트 폴더의 root 디렉터리에서 콘텐츠를 복사하세요.(GitHub 에 있음)를 그것으로 가져옵니다. 항목 중 하나에 대 한 값을 대체phone속성을 E.164형식의 유효한 휴대폰 번호로 바꾸고startDate오늘 날짜.

명령줄에서 다음 명령을 실행합니다.

node populate-table.js

const { BatchWriteItemCommand } = require ( "aws-sdk/client-dynamodb" );const {dynamoClient} = require ( "./libs/dynamoClient" );

// Set the parameters.export const params = { RequestItems: { Employees: [ {

314

Page 323: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드AWS Lambda 함수 생성

PutRequest: { Item: { id: { N: "1" }, firstName: { S: "Bob" }, phone: { N: "155555555555654" }, startDate: { S: "2019-12-20" }, }, }, }, { PutRequest: { Item: { id: { N: "2" }, firstName: { S: "Xing" }, phone: { N: "155555555555653" }, startDate: { S: "2019-12-17" }, }, }, }, { PutRequest: { Item: { id: { N: "55" }, firstName: { S: "Harriette" }, phone: { N: "155555555555652" }, startDate: { S: "2019-12-19" }, }, }, }, ], },};

export const run = async () => { try { const data = await dbclient.send(new BatchWriteItemCommand(params)); console.log("Success", data); } catch (err) { console.log("Error", err); }};run();

이 코드는 사용할 수 있습니다(GitHub 에 있음).

AWS Lambda 함수 생성SDK 구성에서libs디렉토리라는 파일 생성snsClient.js및lambdaClient.js를 클릭하고 아래 내용을 각각 붙여넣습니다.

const { SNSClient } = require("@aws-sdk/client-sns");// Set the AWS Region.const REGION = "REGION"; // e.g. "us-east-1"// Create an Amazon Simple Notification Service client object.const snsClient = new SNSClient({region:REGION});module.exports = { snsClient };

ReplaceREGION를 사용하여AWS리전. 이 코드는 사용할 수 있습니다(GitHub 에 있음).

315

Page 324: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드AWS Lambda 함수 생성

const { LambadaClient } = require( "@aws-sdk/client-lambda" );// Set the AWS Region.const REGION = "eu-west-1"; // e.g. "us-east-1"// Create an Amazon Lambda service client object.const lambdaClient = new LambdaClient({region:REGION});module.exports = { lambdaClient };

ReplaceREGION를 사용하여AWS리전. 이 코드는 사용할 수 있습니다(GitHub 에 있음).

먼저 필요한AWS SDK for JavaScript(v3) 모듈 및 명령입니다. 그런 다음 오늘 날짜를 계산하여 매개 변수에할당하십시오. 그런 다음 매개 변수를 만듭니다.ScanCommand.바꾸기TABLE_NAME에서 만든 테이블의 이름을생성AWS리소스 (p. 313)섹션을 참조하십시오.

다음 코드 조각은 이 단계를 보여줍니다. (전체 예제는 Lambda 함수 번들링 (p. 317) 섹션을 참조하십시오.)

"use strict";// Load the required clients and commands.const { ScanCommand } = require ( "@aws-sdk/client-dynamodb" );const { PublishCommand } = require ( "@aws-sdk/client-sns" );const {lambdaClient} = require ( "./libs/lambdaClient" );const {snsClient} = require ( "./libs/snsClient" );

// Get today's date.const today = new Date();const dd = String(today.getDate()).padStart(2, "0");const mm = String(today.getMonth() + 1).padStart(2, "0"); //January is 0!const yyyy = today.getFullYear();const date = yyyy + "-" + mm + "-" + dd;

// Set the parameters for the ScanCommand method.const params = { // Specify which items in the results are returned. FilterExpression: "startDate = :topic", // Define the expression attribute value, which are substitutes for the values you want to compare. ExpressionAttributeValues: { ":topic": { S: date }, }, // Set the projection expression, which the the attributes that you want. ProjectionExpression: "firstName, phone", TableName: "TABLE_NAME",};

DynamoDB 테이블을 스캔합니다.먼저 호출되는 비동기/대기 함수를 만듭니다.sendText를 사용하여 Amazon SNS 사용하여 문자 메시지를게시합니다.PublishCommand. 그런 다음try블록 패턴을 사용하여 DynamoDB 테이블에서 오늘 근무 기념일이 있는 직원을 검색한 다음sendText함수를 사용하여 이러한 직원들에게 문자 메시지를 보낼 수 있습니다. 오류가 발생할 경우catch블록이 호출됩니다.

다음 코드 조각은 이 단계를 보여줍니다. (전체 예제는 Lambda 함수 번들링 (p. 317) 섹션을 참조하십시오.)

exports.handler = async (event, context, callback) => { // Helper function to send message using Amazon SNS. async function sendText(textParams) { try { const data = await snsClient.send(new PublishCommand(textParams));

316

Page 325: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수 배포

console.log("Message sent"); } catch (err) { console.log("Error, message not sent ", err); } } try { // Scan the table to check identify employees with work anniversary today. const data = await dynamoClient.send(new ScanCommand(params)); data.Items.forEach(function (element, index, array) { const textParams = { PhoneNumber: element.phone.N, Message: "Hi " + element.firstName.S + "; congratulations on your work anniversary!", }; // Send message using Amazon SNS. sendText(textParams); }); } catch (err) { console.log("Error, could not scan table ", err); }};

Lambda 함수 번들링이 주제에서는mylambdafunction.ts및 필수AWS SDK for JavaScript모듈을index.js.

1. 아직 수행하지 않았다면 지금 따르세요.사전 요구 사항 작업 (p. 313)를 사용하여 webpack을 설치할수 있습니다.

Note

에 대한 내용은Webpack참조,webpack으로 애플리케이션 번들링 (p. 42).2. 명령 줄에서 다음을 실행하여 이 예제의 JavaScript<index.js>:

webpack mylambdafunction.ts --mode development --target node --devtool false --output-library-target umd -o index.js

Important

출력의 이름은 알index.js. 이는 Lambda 함수에는index.js핸들러가 작동하도록 합니다.3. 번들로 제공되는 출력 파일을 압축합니다.index.js라는 ZIP 파일로mylambdafunction.zip.4. 업로드mylambdafunction.zip에서 생성한 Amazon S3 버킷에생성AWS리소스 (p. 313)이 자습서

의 주제를 참조하십시오.

Lambda 함수 배포이 주제는 Amazon API Gateway 통해 Lambda 함수를 호출하는 방법을 보여 주는 자습서의 일부입니다.AWS SDK for JavaScript. 해당 자습서의 시작 부분에서 시작하려면 API Gateway 사용하여 Lambda 호출 (p. 312) 섹션을 참조하십시오.

프로젝트의 루트에서lambda-function-setup.ts파일을 열고 아래 내용을 붙여 넣으십시오.

Replace버버_버버Lambda 함수의 ZIP 버전을 업로드한 Amazon S3 버킷의 이름으로 바꿉니다. Replace버버 버버 버버이름: Lambda 함수의 ZIP 버전. Replace버버에서 생성한 IAM 역할의 Amazon 리소스 번호 (ARN) 를생성AWS리소스 (p. 313)이 자습서의 주제를 참조하십시오. Replace버버 버버 버버Lambda 함수의 이름을 갖도록 합니다.

317

Page 326: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수를 호출할 API Gateway 를 구성합니다.

// Load the required Lambda client and commands.const { CreateFunctionCommand} = require ( "@aws-sdk/client-lambda" );const { lambdaClient} = require ( "./libs/lambdaClient.js );

// Set the parameters.const params = { Code: { S3Bucket: "BUCKET_NAME", // BUCKET_NAME S3Key: "ZIP_FILE_NAME", // ZIP_FILE_NAME }, FunctionName: "LAMBDA_FUNCTION_NAME", Handler: "index.handler", Role: "IAM_ROLE_ARN", // IAM_ROLE_ARN; e.g., arn:aws:iam::650138640062:role/v3-lambda-tutorial-lambda-role Runtime: "nodejs12.x", Description: "Scans a DynamoDB table of employee details and using Amazon Simple Notification Services (Amazon SNS) to " + "send employees an email the each anniversary of their start-date.",};

const run = async () => { try { const data = await lambdaClient.send(new CreateFunctionCommand(params)); console.log("Success", data); // successful response } catch (err) { console.log("Error", err); // an error occurred }};run();

명령줄에 다음을 입력하여 Lambda 함수를 배포합니다.

node lambda-function-setup.ts

이 코드 예제를 사용할 수 있습니다.(GitHub 에 있음).

Lambda 함수를 호출할 API Gateway 를 구성합니다.이 주제는 Amazon API Gateway 통해 Lambda 함수를 호출하는 방법을 보여 주는 자습서의 일부입니다.AWS SDK for JavaScript. 해당 자습서의 시작 부분에서 시작하려면 API Gateway 사용하여 Lambda 호출 (p. 312) 섹션을 참조하십시오.

앱을 빌드하려면 다음을 수행합니다.

1. 나머지 API 만들기 (p. 318)2. API Gateway 메서드 테스트 (p. 320)3. API Gateway 메서드 배포 (p. 321)

나머지 API 만들기API Gateway 콘솔을 사용하여 Lambda 함수의 나머지 끝점을 만들 수 있습니다. 완료되면 편안한 호출을 사용하여 Lambda 함수를 호출 할 수 있습니다.

1. 에 로그인하려면Amazon API Gateway 콘솔.

318

Page 327: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수를 호출할 API Gateway 를 구성합니다.

2. 나머지 API에서빌드.

3. Select새로운 API.

4. 를 지정합니다.직원API 이름으로 설명을 제공합니다.

5. API 생성(Create API)을 선택합니다.6. 선택리소스아래에서직원섹션을 참조하십시오.

7. 이름 필드에 을 지정합니다.직원.8. 리소스 생성을 선택합니다.9. 에서작업드롭다운을 선택하고리소스 생성.

319

Page 328: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수를 호출할 API Gateway 를 구성합니다.

10. 선택/직원에서만들기 방법( 사용)작업를 선택한 다음GET아래 드롭다운 메뉴에서/직원. 확인 표시 아이콘을 선택합니다.

11. 선택Lambda 함수를 입력하고틀: 마일람다함수Lambda 함수 이름으로 저장을 선택합니다.

API Gateway 메서드 테스트자습서의 이 시점에서, 당신은 호출 API Gateway 메서드를 테스트 할 수 있습니다틀: 마일람다함수Lambda함수 메서드를 테스트하려면테스트다음 그림과 같이 됩니다.

320

Page 329: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수를 호출할 API Gateway 를 구성합니다.

Lambda 함수가 호출되면 로그 파일을 보고 성공적인 메시지를 볼 수 있습니다.

API Gateway 메서드 배포테스트에 성공한 후 메서드를 배포할 수 있습니다.Amazon API Gateway 콘솔.

1. 선택Get.

2. 에서작업드롭다운을 선택하고API 배포.

3. 에 을 입력합니다.API 배포양식을 선택하고배포.

321

Page 330: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드리소스 삭제

4. 변경 사항 저장을 선택합니다.5. 선택Get를 다시 호출하고 URL이 변경되는지 확인합니다. Lambda 함수를 호출하는 데 사용할 수 있는

호출 URL입니다.

리소스 삭제이 주제는 Amazon API Gateway 통해 Lambda 함수를 호출하는 방법을 보여 주는 자습서의 일부입니다.AWS SDK for JavaScript. 해당 자습서의 시작 부분에서 시작하려면 API Gateway 사용하여 Lambda 호출 (p. 312) 섹션을 참조하십시오.

축하합니다! Amazon API Gateway 통해 Lambda 함수를 호출한 경우AWS SDK for JavaScript. 이 자습서의시작 부분에서 설명한 대로 이 자습서를 진행하는 동안 만든 모든 리소스를 종료하여 요금이 부과되지 않도록 해야 합니다. 이 작업을 수행할 수 있는AWS CloudFormation스택에서 만든생성AWS리소스 (p. 313)이자습서의 주제를 다음과 같이 참조하십시오.

1. 열기AWS CloudFormation의AWS관리 콘솔.2. 열기스택페이지로 이동하여 스택을 선택합니다.3. 삭제를 선택합니다.

자세한 정보AWS교차 서비스 예에 대한 자세한 내용은AWS SDK for JavaScript교차 서비스 예.

생성AWS서버리스 워크플로 사용AWS SDK forJavaScript

를 생성할 수 있습니다.AWS서버를 사용하지 않는 워크플로를 사용하여AWS Step Functions the AWSSDKfor JavaAWS Step Functions. 각 워크플로 단계는AWS Lambda함수를 사용합니다. Lambda 는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. Step Functions 서버리스 오케스트레이션 서비스로 Lambda 함수와 다른AWS서비스를 사용하여 비즈니스 크리티컬 애플리케이션을 구축할 수 있습니다.

322

Page 331: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드사전 조건 작업

Note

다양한 프로그래밍 언어로 Lambda 함수를 만들 수 있습니다. 이 자습서에서는 Lambda JavaAPI를 사용하여 구현된 Lambda 함수입니다. Lambda 에 대한 자세한 내용은 단원을 참조하십시오.Lambda 무엇입니까?.

이 자습서에서는 조직에 대한 지원 티켓을 만드는 워크플로를 만듭니다. 각 워크플로 단계는 티켓에 대한 작업을 수행합니다. 이 자습서에서는 JavaScript t를 사용하여 워크플로 데이터를 처리하는 방법을 보여 줍니다. 예를 들어 워크플로에 전달된 데이터를 읽는 방법, 단계 간에 데이터를 전달하는 방법 및AWS서비스를워크플로에서 가져옵니다.

완료 비용: 이AWS이 문서에 포함된 서비스는AWS프리 티어.

참고: 더 이상 요금이 부과되지 않도록 이 자습서를 진행하는 동안 만든 모든 리소스를 종료해야 합니다.

앱을 빌드하려면

1. 사전 조건 작업 (p. 323)2. 생성AWS리소스 (p. 323)3. 워크플로우 생성 (p. 324)4. Lambda 함수 생성 (p. 327)5. Step Functions 콘솔을 사용하여 워크플로 실행 (p. 333)

사전 조건 작업이 주제는 Lambda 함수를 호출하는 방법을 보여 주는 자습서의 일부입니다.AWS Step Functions. 해당 자습서의 시작 부분에서 시작하려면 생성AWS서버리스 워크플로 사용AWS SDK for JavaScript (p. 322) 섹션을 참조하십시오.

이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript및타사 모듈을 참조하십시오. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

Lambda 현재 ECMAScript 6 (ES6) 구문을 지원하지 않기 때문에이 예제에서는 CommonJS 시스템택스를 사용합니다. 자세한 내용은 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57)

생성AWS리소스이 주제는 Lambda 함수를 호출하는 방법을 보여 주는 자습서의 일부입니다.AWS Step Functions. 해당 자습서의 시작 부분에서 시작하려면 생성AWS서버리스 워크플로 사용AWS SDK for JavaScript (p. 322) 섹션을 참조하십시오.

이 자습서에는 다음 리소스가 필요합니다.

• Amazon DynamoDB 테이블케이스이라는 이름의 키를 사용하여Id.• 이라는 이름의 IAM 역할lambda-supportLambda 함수를 호출하는 데 사용됩니다. 이 역할에는 Lambda

함수에서 Amazon DynamoDB 및 Amazon 단순 이메일 서비스 서비스를 호출할 수 있는 정책이 있습니다.• 이라는 이름의 IAM 역할workflow-support워크플로를 호출하는 데 사용됩니다.

323

Page 332: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드워크플로우 생성

• Lambda 함수를 호스팅할 Amazon S3 버킷.

이러한 리소스는 수동으로 만들 수 있지만AWS Cloud Development Kit (CDK)(AWS CDK) 이 튜토리얼에서설명한대로.

생성AWS를 사용하여 리소스 생성AWS CloudFormationAWS CloudFormation를 사용하면 생성 및 프로비저닝할 수 있습니다.AWS인프라 배포를 예상한 대로 반복해서 수행할 수 있습니다. 에 대한 자세한 내용AWS CloudFormation자세한 내용은AWS CloudFormation개발자 안내서를 참조하십시오..

를 만들려면AWS CloudFormation스택:

1. 설치 및 구성AWS CLI의 지시 사항을 따릅니다.AWS CLI사용 설명서.2. 이라는 이름의 파일을 만듭니다.setup.yaml프로젝트 폴더의 루트 디렉터리에 있는 내용을 복사하

고GitHub 에 있음를 그것으로 가져옵니다.

Note

이AWS CloudFormation템플릿을 사용하여 생성 된AWS CDK사용 가능GitHub 에 있음. AWSCDK에 대한 자세한 내용은 AWS Cloud Development Kit (CDK) 개발자 안내서 단원을 참조하세요.

3. 명령 줄에서 다음 명령을 실행하여STACK_NAME을 스택에 고유한 이름으로 바꿉니다.

Important

스택 이름은 내에서 고유해야 합니다.AWS지역 및AWS계정에 로그인합니다. 최대 128자까지지정할 수 있으며 숫자와 하이픈은 허용됩니다.

aws cloudformation create-stack --stack-name STACK_NAME --template-body file://setup.yaml --capabilities CAPABILITY_IAM

자세한 내용은create-stack명령 매개 변수에 대한 자세한 내용은AWS CLI명령 참조 안내서, 그리고AWS CloudFormation사용 설명서.

생성AWSAmazon Web Services 관리 콘솔을 사용하는 리소스콘솔에서 앱에 대한 리소스를 생성하려면AWS CloudFormation사용 설명서. 제공된 템플릿을 사용하여 다음과 같은 이름의 파일을 만듭니다.setup.yaml을 클릭하고 내용을 복사하십시오.GitHub 에 있음.

Important

스택 이름은 내에서 고유해야 합니다.AWS지역 및AWS계정에 로그인합니다. 최대 128자까지 지정할 수 있으며 숫자와 하이픈은 허용됩니다.

콘솔에서 스택을 열어 콘솔의 리소스 목록을 봅니다.AWS CloudFormation대시보드를 선택하고리소스탭을선택합니다. 자습서에는 이러한 항목이 필요합니다.

워크플로우 생성이 주제는 Lambda 함수를 호출하는 방법을 보여 주는 자습서의 일부입니다.AWS Step Functions. 해당 자습서의 시작 부분에서 시작하려면 생성AWS서버리스 워크플로 사용AWS SDK for JavaScript (p. 322) 섹션을 참조하십시오.

다음 그림에서는 이 자습서를 사용하여 만들 작업 흐름을 보여 줍니다.

324

Page 333: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드워크플로우 생성

워크플로의 각 단계에서 수행되는 작업은 다음과 같습니다.

+Start- 워크플로를 시작합니다.

+케이스 열기— 지원 티켓 ID 값을 워크플로에 전달하여 처리합니다.

+대/소문자 할당— 직원에게 지원 사례를 할당하고 데이터를 DynamoDB 테이블에 저장합니다.

+이메일 보내기— Simple Email Service (Amazon SES) 를 사용하여 새 티켓이 있음을 알리는 이메일 메시지를 직원에게 보냅니다.

+End- 워크플로를 중지합니다.

Step 함수를 사용하여 서버를 사용하지 않는 워크플로 만들기지원 티켓을 처리하는 워크플로를 만들 수 있습니다. Step Functions 사용하여 워크플로를 정의하려면 상태시스템을 정의하는 Amazon State Language (JSON 기반) 문서를 생성합니다. 아마존 미국 언어 문서는 각단계를 설명합니다. 문서를 정의한 후 Step 함수는 워크플로를 시각적으로 나타냅니다. 다음 그림은 AmazonState Language 문서와 워크플로의 시각적 표현을 보여 줍니다.

325

Page 334: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드워크플로우 생성

워크플로는 단계 간에 데이터를 전달할 수 있습니다. 예를 들어,케이스 열기단계는 사례 ID 값 (워크플로에전달됨) 을 처리하고 해당 값을대/소문자 할당단계를 선택합니다. 이 자습서의 뒷부분에서 Lambda 함수에서응용 프로그램 논리를 만들어 데이터 값을 읽고 처리합니다.

워크플로를 생성하려면

1. 열기Amazon Web Services 콘솔.2. 선택상태 시스템 만들기.3. [코드 조각으로 작성]을 선택합니다. 에서유형영역에서표준.

4. 다음 코드를 입력하여 아마존 미국 언어 문서를 지정합니다.

{"Comment": "A simple AWS Step Functions state machine that automates a call center support session.","StartAt": "Open Case","States": {"Open Case": {"Type": "Task","Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME","Next": "Assign Case"},"Assign Case": {"Type": "Task","Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME","Next": "Send Email"},"Send Email": {"Type": "Task","Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME","End": true}}}

Note

Lambda 리소스 값과 관련된 오류에 대해 걱정하지 마십시오. 이 자습서에서는 나중에 이 값을업데이트합니다.

5. [다음(Next)]을 선택합니다.6. 이름 필드에 을 입력합니다.지원 상태 컴퓨터.

326

Page 335: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수 생성

7. 에서권한섹션에서기존 역할 선택.8. 선택워크플로우 지원(생성한 IAM 역할) 을 반환합니다.

9. 상태 머신 생성을 선택합니다. 상태 시스템이 성공적으로 생성되었다는 메시지가 나타납니다.

Lambda 함수 생성이 주제는 Lambda 함수를 호출하는 방법을 보여 주는 자습서의 일부입니다.AWS Step Functions. 해당 자습서의 시작 부분에서 시작하려면 생성AWS서버리스 워크플로 사용AWS SDK for JavaScript (p. 322) 섹션을 참조하십시오.

Lambda 런타임 API를 사용하여 Lambda 함수를 만듭니다. 이 예에서는 각 Lambda 함수에 해당하는 세 가지워크플로 단계가 있습니다.

다음 단원에서 설명한 대로 Lambda 함수를 생성합니다.

• GetId Lambda 함수 (p. 327)- 티켓 ID 값을 처리하는 워크플로의 첫 번째 단계로 사용됩니다.• Lambda 클래스 (p. 328)- 직원에게 티켓을 할당하고 데이터를 DynamoDB 데이터베이스에 저장하는 워

크플로의 두 번째 단계로 사용됩니다.• Lambda 클래스 (p. 329)- Amazon SES 를 사용하여 직원에게 티켓에 대해 알리기 위해 이메일 메시지를

보내는 워크플로의 세 번째 단계로 사용됩니다.

GetId Lambda 함수워크플로의 두 번째 단계로 전달되는 티켓 ID 값을 반환하는 Lambda 함수를 만듭니다.

327

Page 336: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수 생성

exports.handler = async (event) => {// Create a support case using the input as the case ID, then return a confirmation messagetry{ const myCaseID = event.inputCaseID; var myMessage = "Case " + myCaseID + ": opened..."; var result = { Case: myCaseID, Message: myMessage }; }catch(err){ console.log('Error', err); }};

명령 줄에 다음을 입력하여 webpack을 사용하여 파일을index.js.

webpack getid.js --mode development --target node --devtool false --output-library-target umd -o index.js

그런 다음 압축index.js을 (를)ZIP파일 이름getid.js.zip.업로드ZIP파일을 이 예제의 주제에서 생성한 Amazon S3 버킷에 복사합니다.

이 코드 예제를 사용할 수 있습니다.GitHub 에 있음.

Lambda 클래스티켓을 할당할 직원을 선택하는 Lambda 함수를 생성한 다음 티켓 데이터를케이스.

"use strict";// Load the required clients and commands.const { DynamoDBClient, PutItemCommand } = require("@aws-sdk/client-dynamodb");

const REGION = "eu-west-1"; //e.g. "us-east-1"// Create the client service objects. const dbclient = new DynamoDBClient({ region: REGION });exports.handler = async (event) => { try{ // Helper function to send message using Amazon SNS. const val = event; //PersistCase adds an item to a DynamoDB table const tmp = (Math.random() <= 0.5) ? 1 : 2; console.log(tmp); if (tmp == 1) { const params = { TableName: "Case", Item: { id: {N: val.Case}, empEmail: {S: "[email protected]"}, name: {S: "Tom Blue"} }, } console.log('adding item for tom'); try { const data = await dbclient.send(new PutItemCommand(params)); console.log(data); } catch (err) { console.error(err); } var result = { Email: params.Item.empEmail }; return result; } else { const params = {

328

Page 337: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수 생성

TableName: "Case", Item: { id: {N: val.Case}, empEmail: {S: "[email protected]"}, name: {S: "Sarah White"} }, } console.log('adding item for sarah'); try { const data = await dbclient.send(new PutItemCommand(params)); console.log(data); } catch (err) { console.error(err); } return params.Item.empEmail; var result = { Email: params.Item.empEmail }; } } catch(err){ console.log("Error" , err) }}

명령 줄에 다음을 입력하여 webpack을 사용하여 파일을index.js.

webpack additem.js --mode development --target node --devtool false --output-library-target umd -o index.js

그런 다음 압축index.js을 (를)ZIP파일 이름additem.js.zip.업로드ZIP파일을 이 예제의 주제에서 생성한 Amazon S3 버킷에 복사합니다.

이 코드 예제를 사용할 수 있습니다.GitHub 에 있음.

Lambda 클래스

새 티켓에 대해 알리기 위해 이메일을 보내는 Lambda 함수를 만듭니다. 두 번째 단계에서 전달된 전자 메일주소가 사용됩니다.

// Load the required clients and commands.const { SESClient, SendEmailCommand } = require("@aws-sdk/client-ses");

// Set the AWS Region.const REGION = "eu-west-1"; //e.g. "us-east-1"

// Create the client service objects.const sesclient = new SESClient({ region: REGION });

exports.handler = async (event) => { // Enter a sender email address. This address must be verified. const sender = "Sender Name <[email protected]>";

// AWS Step Functions passes the employee's email to the event. // This address must be verified. const recepient = event.S;

// The subject line for the email. const subject = "New case";

// The email body for recipients with non-HTML email clients. const body_text =

329

Page 338: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수 생성

"Hello,\r\n" + "Please check the database for new ticket assigned to you.";

// The HTML body of the email. const body_html = `<html><head></head><body><h1>Hello!</h1><p>Please check the database for new ticket assigned to you.</p></body></html>`;

// The character encoding for the email. const charset = "UTF-8"; var params = { Source: sender, Destination: { ToAddresses: [ recepient ], }, Message: { Subject: { Data: subject, Charset: charset }, Body: { Text: { Data: body_text, Charset: charset }, Html: { Data: body_html, Charset: charset } } } }; try { const data = await sesclient.send(new SendEmailCommand(params)); console.log(data); } catch (err) { console.error(err); }

};

명령 줄에 다음을 입력하여 webpack을 사용하여 파일을index.js.

webpack sendemail.js --mode development --target node --devtool false --output-library-target umd -o index.js

그런 다음 압축index.js을 (를)ZIP파일 이름sendemail.js.zip.업로드ZIP파일을 이 예제의 주제에서생성한 Amazon S3 버킷에 복사합니다.

이 코드 예제를 사용할 수 있습니다.GitHub 에 있음.

Lambda 함수 배포

를 배포하려면getidLambda 함수:

1. Lambda 콘솔을 다음 위치에서 엽니다.Amazon Web Services 콘솔.2. Create Function(함수 생성)을 선택합니다.3. 새로 작성을 선택합니다.

330

Page 339: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수 생성

4. 에서기본정보 섹션에서게티드를 이름으로 입력합니다.5. 에서런타임를 선택하고Node.js 14x.6. 선택기존 역할 사용를 선택한 다음람다 지원(에서 생성한 IAM 역할).

7. 함수 생성을 선택합니다.8. 선택할다음에서 업로드-Amazon S3 사무소.9. 선택업로드를 선택하고다음에서 업로드-Amazon S3 사무소를 입력하고Amazon S3 링크.

10. 저장을 선택합니다.11. 이 절차를 반복하여애드템.js.zip및센데메일.js.zip를 새로운 Lambda 함수로 변환합니다. 작업을 마치면

Amazon State Language 문서에서 참조할 수 있는 세 가지 Lambda 함수를 갖게 됩니다.

워크플로에 Lambda 함수 추가이 주제는 Lambda 함수를 호출하는 방법을 보여 주는 자습서의 일부입니다.AWS Step Functions. 해당 자습서의 시작 부분에서 시작하려면 생성AWS서버리스 워크플로 사용AWS SDK for JavaScript (p. 322) 섹션을 참조하십시오.

1. Lambda 콘솔을 엽니다. Lambda Amazon 리소스 이름 (ARN) 값은 오른쪽 상단 모서리에서 볼 수 있습니다.

331

Page 340: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수 생성

2. 값을 복사한 다음 Step Functions 콘솔에 있는 아마존 국가 언어 문서의 1단계에 붙여 넣습니다.

3. 에 대 한 리소스를 업데이트 합니다.대/소문자 할당및이메일 보내기단계를 참조하십시오. 이것은 사용하여 만든 Lambda 함수를 연결하는 방법입니다.AWSStep Functions 사용하여 만든 워크 플로우로 SDKfor Java.

332

Page 341: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수 생성

Step Functions 콘솔을 사용하여 워크플로 실행이 주제는 Lambda 함수를 호출하는 방법을 보여 주는 자습서의 일부입니다.AWS Step Functions. 해당 자습서의 시작 부분에서 시작하려면 생성AWS서버리스 워크플로 사용AWS SDK for JavaScript (p. 322) 섹션을 참조하십시오.

Step Functions 콘솔에서 워크플로를 호출할 수 있습니다. 실행은 JSON 입력을 수신합니다. 이 예제에서는다음 JSON 데이터를 워크플로에 전달할 수 있습니다.

{"inputCaseID": "001"}

워크플로를 실행하려면 다음과 같이 하십시오.

1. Step Functions 콘솔에서실행 시작.2. 에서입력섹션에서 JSON 데이터를 전달합니다. 워크플로우를 봅니다. 각 단계가 완료되면 녹색으로 바

뀝니다.

3. 단계가 빨간색으로 바뀌면 오류가 발생했습니다. 단계를 클릭하고 오른쪽에서 액세스할 수 있는 로그를볼 수 있습니다.

워크플로가 완료되면 DynamoDB 테이블에서 데이터를 볼 수 있습니다.

333

Page 342: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드실행할 예약된 이벤트 만들기AWS Lambda함수

축하합니다.AWS서버를 사용하지 않는 워크플로를 사용하여AWSSDK for Java. 이 자습서의 시작 부분에서설명한 대로 이 자습서를 진행하는 동안 만든 모든 리소스를 종료하여 요금이 부과되지 않도록 해야 합니다.이 작업을 수행하려면AWS CloudFormation스택에서 만든생성AWS리소스 (p. 323)항목은 다음과 같습니다.

1. 열기AWS CloudFormation의AWS관리 콘솔.2. 열기스택페이지로 이동하여 스택을 선택합니다.3. 삭제를 선택합니다.

자세한 정보AWS교차 서비스 예제에 대한 자세한 내용은AWS SDK for JavaScript교차 서비스 예제.

실행할 예약된 이벤트 만들기AWS Lambda함수Amazon CloudWatch 이벤트를 사용하여 Lambda 함수를 호출하는 예약된 이벤트를 생성할 수 있습니다.cron 표현식을 사용하여 Lambda 함수가 호출되는 시기를 예약하도록 CloudWatch 이벤트를 구성할 수 있습니다. 예를 들어, 매일 Lambda 함수를 호출하도록 CloudWatch 이벤트를 예약할 수 있습니다. Lambda 는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다.

AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. 다양한 프로그래밍 언어로 Lambda 함수를 만들 수 있습니다. AWS Lambda에 대한 자세한 정보는AWS Lambda란 무엇입니까?를 참조하십시오.

이 자습서에서는 Lambda JavaScript 런타임 API를 사용하여 Lambda 함수를 생성합니다. 이 예는 다른 호출AWS서비스를 사용하여 특정 사용 사례를 수행할 수 있습니다. 예를 들어, 조직에서 이 그림에 표시된 것처럼 1년 기념일에 직원을 축하하는 모바일 문자 메시지를 직원에게 보내는 경우를 가정해 보겠습니다.

이 자습서를 완료하는 데 약 20분 정도 걸립니다.

이 자습서에서는 JavaScript 로직을 사용하여 이 사용 사례를 수행하는 솔루션을 생성하는 방법을 보여 줍니다. 예를 들어 Lambda 함수를 사용하여 데이터베이스를 읽고 1주년 기념일에 도달한 직원을 확인하는 방법,데이터를 처리하는 방법, 문자 메시지를 보내는 방법을 배웁니다. 그런 다음 cron 표현식을 사용하여 평일마다 Lambda 함수를 호출하는 방법을 배웁니다.

이AWS자습서에서는 이러한 필드를 포함하는 직원이라는 Amazon DynamoDB 테이블을 사용합니다.

334

Page 343: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드사전 조건 작업

• id- 테이블의 기본 키.• FirstName- 직원의 이름.• phone- 직원의 전화 번호입니다.• StartDate- 직원의 시작 날짜.

Important

완료 비용: 이AWS이 문서에 포함된 서비스는AWS프리 티어 그러나 이 자습서를 완료한 후에는 모든 리소스를 종료하여 요금이 부과되지 않도록 해야 합니다.

앱을 빌드하려면 다음과 같이 하십시오.

1. 사전 조건 완료 (p. 335)2. 생성AWS리소스 (p. 335)3. 브라우저 스크립트 준비 (p. 338)4. Lambda 함수 생성 및 업로드 (p. 338)5. Lambda 함수 배포 (p. 340)6. 앱 실행 (p. 341)7. 리소스 삭제 (p. 342)

사전 조건 작업이 주제는 Amazon CloudWatch 예약 이벤트를 사용하여 Lambda 함수를 호출하는 방법을 보여 주는 자습서의 일부입니다.AWS SDK for JavaScript. 해당 자습서의 시작 부분에서 시작하려면 실행할 예약된 이벤트 만들기AWS Lambda함수 (p. 334) 섹션을 참조하십시오.

이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript및타사 모듈입니다. 의 지침을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

Lambda 현재 ECMAScript 6 (ES6) 구문을 지원하지 않기 때문에이 예제에서는 CommonJS 시스템택스를 사용합니다. 자세한 내용은 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57)

생성AWS리소스이 주제는 Amazon CloudWatch 예약 이벤트를 통해 Lambda 함수를 호출하는 방법을 보여 주는 자습서의 일부입니다.AWS SDK for JavaScript. 해당 자습서의 시작 부분에서 시작하려면 실행할 예약된 이벤트 만들기AWS Lambda함수 (p. 334) 섹션을 참조하십시오.

335

Page 344: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드생성AWS리소스

이 자습서를 시작하려면 다음 리소스가 필요합니다.

• Amazon DynamoDB 테이블직원라는 이름의 키를 사용합니다.Id및 이전 그림에 표시된 필드를 표시합니다. 이 사용 사례를 테스트할 유효한 휴대폰을 포함하여 올바른 데이터를 입력해야 합니다. 자세한 내용은단원을 참조하십시오.테이블 생성.

• Lambda 함수를 실행할 수 있는 권한이 연결된 IAM 역할입니다.• Lambda 함수를 호스팅하는 Amazon S3 버킷입니다.

이러한 리소스는 수동으로 만들 수 있지만AWS CloudFormation이 튜토리얼에 설명 된대로.

생성AWS리소스 사용AWS CloudFormationAWS CloudFormation를 사용하면 생성 및 프로비저닝할 수 있습니다.AWS인프라 배포를 예상한 대로 반복해서 실행합니다. 에 대한 자세한 내용AWS CloudFormation에 대한 내용은AWS CloudFormation개발자 안내서를 참조하십시오..

를 만들려면AWS CloudFormation스택을 사용하여AWS CLI:

1. 설치 및 구성AWS CLI의 지침에 따라AWS CLI사용 설명서.2. 이라는 이름의 파일을 생성합니다.setup.yaml프로젝트 폴더의 root 디렉터리에 있는 내용을 복사하

고여기 GitHub 에 있습니다.를 그것으로 가져옵니다.

Note

이AWS CloudFormation템플릿을 사용하여 생성 된AWS CDK사용 가능여기 GitHub 에 있습니다.. AWS CDK에 대한 자세한 내용은 AWS Cloud Development Kit (CDK) 개발자 안내서를 참조하세요.

3. 명령줄에서 다음 명령을 실행하여STACK_NAME스택의 고유 이름으로 바꿉니다.

Important

스택 이름은AWS리전 및AWS계정에 로그인합니다. 최대 128자까지 지정할 수 있으며 숫자와하이픈을 사용할 수 있습니다.

webpack mylamdbafunction.js --mode development --target node --devtool false --output-library-target umd -o index.js

자세한 내용은create-stack명령 매개 변수에 대한 자세한 내용은AWS CLI명령 참조 안내서, 그리고AWS CloudFormation사용 설명서.

콘솔에서 스택을 열어 콘솔의 리소스 목록을 봅니다.AWS CloudFormation대시보드를 선택하고리소스탭을 선택합니다. 자습서에는 이러한 항목이 필요합니다.

4. 스택을 만들 때AWS SDK for JavaScript에 설명된 대로 DynamoDB 테이블을 채울 수 있습니다. (p. 336).

테이블을 채우려면 먼저libs이라는 이름의 파일을 만듭니다.dynamoClient.js를 클릭하고 아래 내용을붙여 넣으십시오.

const { DynamoDBClient } = require( "@aws-sdk/client-dynamodb" );// Set the AWS Region.const REGION = "REGION"; // e.g. "us-east-1"// Create an Amazon DynamodDB service client object.const dynamoClient = new DynamoDBClient({region:REGION});module.exports = { dynamoClient };

336

Page 345: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드생성AWS리소스

이 코드는 사용할 수 있습니다.여기 GitHub 에 있습니다..

다음으로 이름이 인 파일을 생성합니다.populate-table.js프로젝트 폴더의 root 디렉터리에 있는 내용을 복사하고여기 GitHub 에 있습니다.를 그것으로 가져옵니다. 항목 중 하나에 대 한 값을 대체phone속성을E.164 형식의 유효한 휴대폰 번호로 바꾸고startDate오늘 날짜.

명령줄에서 다음 명령을 실행합니다.

node populate-table.js

const {BatchWriteItemCommand } = require( "aws-sdk/client-dynamodb" );const {dynamoClient} = require( "./libs/dynamoClient" );// Set the parameters.const params = { RequestItems: { Employees: [ { PutRequest: { Item: { id: { N: "1" }, firstName: { S: "Bob" }, phone: { N: "155555555555654" }, startDate: { S: "2019-12-20" }, }, }, }, { PutRequest: { Item: { id: { N: "2" }, firstName: { S: "Xing" }, phone: { N: "155555555555653" }, startDate: { S: "2019-12-17" }, }, }, }, { PutRequest: { Item: { id: { N: "55" }, firstName: { S: "Harriette" }, phone: { N: "155555555555652" }, startDate: { S: "2019-12-19" }, }, }, }, ], },};

export const run = async () => { try { const data = await dbclient.send(new BatchWriteItemCommand(params)); console.log("Success", data); } catch (err) { console.log("Error", err); }};run();

337

Page 346: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드AWS Lambda 함수 생성

이 코드는 사용할 수 있습니다.여기 GitHub 에 있습니다..

AWS Lambda 함수 생성SDK 구성먼저 필요한AWS SDK for JavaScript(v3) 모듈 및 명령:DynamoDBClient및 DynamoDBScanCommand,및SNSClientAmazon SNSPublishCommand명령입니다. ReplaceREGION를 사용하여AWS리전. 그런 다음 오늘 날짜를 계산하여 매개 변수에 할당하십시오. 그런 다음 매개 변수를 만듭니다.ScanCommand.replaceTABLE_NAME에서 생성한 테이블의 이름을생성AWS리소스 (p. 335)섹션을 참조하십시오.

다음 코드 조각은 이 단계를 보여줍니다. (전체 예제는 Lambda 함수 번들링 (p. 339) 섹션을 참조하십시오.)

"use strict";// Load the required clients and commands.const { DynamoDBClient, ScanCommand } = require("@aws-sdk/client-dynamodb");const { SNSClient, PublishCommand } = require("@aws-sdk/client-sns");

//Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"

// Get today's date.const today = new Date();const dd = String(today.getDate()).padStart(2, "0");const mm = String(today.getMonth() + 1).padStart(2, "0"); //January is 0!const yyyy = today.getFullYear();const date = yyyy + "-" + mm + "-" + dd;

// Set the parameters for the ScanCommand method.const params = { // Specify which items in the results are returned. FilterExpression: "startDate = :topic", // Define the expression attribute value, which are substitutes for the values you want to compare. ExpressionAttributeValues: { ":topic": { S: date }, }, // Set the projection expression, which the the attributes that you want. ProjectionExpression: "firstName, phone", TableName: "TABLE_NAME",};

DynamoDB 테이블 스캔먼저 호출되는 비동기/대기 함수를 만듭니다.sendText를 사용하여 Amazon SNS 사용하여 문자 메시지를게시합니다.PublishCommand. 그런 다음try블록 패턴을 사용하여 DynamoDB 테이블에서 오늘 근무 기념일이 있는 직원을 검색한 다음sendText함수를 사용하여 이러한 직원에게 문자 메시지를 보낼 수 있습니다.오류가 발생할 경우catch블록이 호출됩니다.

다음 코드 조각은 이 단계를 보여줍니다. (전체 예제는 Lambda 함수 번들링 (p. 339) 섹션을 참조하십시오.)

exports.handler = async (event, context, callback) => { // Helper function to send message using Amazon SNS. async function sendText(textParams) { try {

338

Page 347: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드AWS Lambda 함수 생성

const data = await snsclient.send(new PublishCommand(textParams)); console.log("Message sent"); } catch (err) { console.log("Error, message not sent ", err); } } try { // Scan the table to check identify employees with work anniversary today. const data = await dbclient.send(new ScanCommand(params)); data.Items.forEach(function (element, index, array) { const textParams = { PhoneNumber: element.phone.N, Message: "Hi " + element.firstName.S + "; congratulations on your work anniversary!", }; // Send message using Amazon SNS. sendText(textParams); }); } catch (err) { console.log("Error, could not scan table ", err); }};

Lambda 함수 번들링이 주제에서는mylambdafunction.js과 필수AWS SDK for JavaScript모듈을라는 번들 파일로index.js.

1. 아직 수행하지 않은 경우사전 조건 작업 (p. 335)를 사용하여 webpack을 설치할 수 있습니다.

Note

에 대한 내용은Webpack참조,webpack으로 애플리케이션 번들링 (p. 42).2. 명령 줄에서 다음을 실행하여 이 예제의 JavaScript<index.js>:

webpack mylamdbafunction.js --mode development --target node --devtool false --output-library-target umd -o index.js

Important

출력의 이름은 알index.js. 이는 Lambda 함수에는index.js핸들러가 작동하도록 합니다.3. 번들로 제공되는 출력 파일,index.js라는 ZIP 파일로my-lambda-function.zip.4. 업로드mylambdafunction.zip에서 생성한 Amazon S3 버킷으로생성AWS리소스 (p. 335)이 자습

서의 주제를 참조하십시오.

전체 브라우저 스크립트 코드는 다음과 같습니다.mylambdafunction.js.

"use strict";// Load the required clients and commands.const { DynamoDBClient, ScanCommand } = require("@aws-sdk/client-dynamodb");const { SNSClient, PublishCommand } = require("@aws-sdk/client-sns");

//Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"

// Get today's date.const today = new Date();const dd = String(today.getDate()).padStart(2, "0");

339

Page 348: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수 배포

const mm = String(today.getMonth() + 1).padStart(2, "0"); //January is 0!const yyyy = today.getFullYear();const date = yyyy + "-" + mm + "-" + dd;

// Set the parameters for the ScanCommand method.const params = { // Specify which items in the results are returned. FilterExpression: "startDate = :topic", // Define the expression attribute value, which are substitutes for the values you want to compare. ExpressionAttributeValues: { ":topic": { S: date }, }, // Set the projection expression, which the the attributes that you want. ProjectionExpression: "firstName, phone", TableName: "TABLE_NAME",};

// Create the client service objects.const dbclient = new DynamoDBClient({ region: REGION });const snsclient = new SNSClient({ region: REGION });

exports.handler = async (event, context, callback) => { // Helper function to send message using Amazon SNS. async function sendText(textParams) { try { const data = await snsclient.send(new PublishCommand(textParams)); console.log("Message sent"); } catch (err) { console.log("Error, message not sent ", err); } } try { // Scan the table to check identify employees with work anniversary today. const data = await dbclient.send(new ScanCommand(params)); data.Items.forEach(function (element, index, array) { const textParams = { PhoneNumber: element.phone.N, Message: "Hi " + element.firstName.S + "; congratulations on your work anniversary!", }; // Send message using Amazon SNS. sendText(textParams); }); } catch (err) { console.log("Error, could not scan table ", err); }};

Lambda 함수 배포이 주제는 Amazon CloudWatch 예약 이벤트를 통해 Lambda 함수를 호출하는 방법을 보여 주는 자습서의 일부입니다.AWS SDK for JavaScript. 해당 자습서의 시작 부분에서 시작하려면 실행할 예약된 이벤트 만들기AWS Lambda함수 (p. 334) 섹션을 참조하십시오.

프로젝트의 루트에서lambda-function-setup.js파일을 열고 아래 내용을 붙여 넣으십시오.

Replace버버 버버Lambda 함수의 ZIP 버전을 업로드한 Amazon S3 버킷의 이름을 합니다. Replace버버 버버 버버Lambda 함수의 ZIP 버전 이름을 합니다. Replace버버버 버버 버에서 생성한 IAM 역할의 Amazon 리소스 번호(ARN) 를생성AWS리소스 (p. 335)이 자습서의 주제를 참조하십시오. Replace버버 버버 버버Lambda 함수의이름을 합니다.

340

Page 349: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수를 호출하도록 CloudWatch 를 구성합니다.

// Load the required Lambda client and commands.const { CreateFunctionCommand,} = require("@aws-sdk/client-lambda");const { lambdaClient} = require("..libs/lambdaClient.js");

// Instantiate an Lambda client service object.const lambda = new LambdaClient({ region: REGION });

// Set the parameters.const params = { Code: { S3Bucket: "BUCKET_NAME", // BUCKET_NAME S3Key: "ZIP_FILE_NAME", // ZIP_FILE_NAME }, FunctionName: "LAMBDA_FUNCTION_NAME", Handler: "index.handler", Role: "IAM_ROLE_ARN", // IAM_ROLE_ARN; e.g., arn:aws:iam::650138640062:role/v3-lambda-tutorial-lambda-role Runtime: "nodejs12.x", Description: "Scans a DynamoDB table of employee details and using Amazon Simple Notification Services (Amazon SNS) to " + "send employees an email the each anniversary of their start-date.",};

const run = async () => { try { const data = await lambda.send(new CreateFunctionCommand(params)); console.log("Success", data); // successful response } catch (err) { console.log("Error", err); // an error occurred }};run();

Lambda 함수를 배포하려면 명령줄에 다음을 입력합니다.

node lambda-function-setup.js

이 코드 예제를 사용할 수 있습니다.여기 GitHub 에 있습니다..

Lambda 함수를 호출하도록 CloudWatch 를 구성합니다.Lambda 함수를 호출하도록 CloudWatch 를 구성하려면 다음과 같이 하십시오.

1. 열기함수Lambda 콘솔에서.2. Lambda 함수를 선택합니다.3. Designer에서 트리거 추가를 선택합니다.4. 트리거 유형을CloudWatch 이벤트/브리지.5. [규칙] 에서새 규칙 생성.6. 규칙 이름과 규칙 설명을 입력합니다.7. 규칙 유형의 경우예약 표현식.

341

Page 350: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드리소스 삭제

8. 에서예약 표현식필드에 cron 표현식을 입력합니다. 예,크론 (0 12? * 월-금*).9. [추가]를 선택합니다.

Note

자세한 내용은 단원을 참조하십시오.CloudWatch 이벤트로 Lambda 사용.

리소스 삭제이 주제는 Amazon CloudWatch 예약 이벤트를 통해 Lambda 함수를 호출하는 방법을 보여 주는 자습서의 일부입니다.AWS SDK for JavaScript. 해당 자습서의 시작 부분에서 시작하려면 실행할 예약된 이벤트 만들기AWS Lambda함수 (p. 334) 섹션을 참조하십시오.

축하합니다! Amazon CloudWatch 예약 이벤트를 통해 Lambda 함수를 호출한 경우AWS SDK forJavaScript. 이 자습서의 시작 부분에서 설명한 대로 이 자습서를 진행하는 동안 만든 모든 리소스를 종료하여 요금이 부과되지 않도록 해야 합니다. 삭제하면 됩니다.AWS CloudFormation스택에서 만든생성AWS리소스 (p. 335)항목은 다음과 같습니다.

1. AWS CloudFormation 콘솔을 엽니다.2. 에서스택페이지에서 스택을 선택합니다.3. 삭제를 선택합니다.

자세한 정보AWS교차 서비스 예에 대한 내용은AWS SDK for JavaScript교차 서비스 예제.

Lambda 함수 만들기 및 사용이 자습서에서는 DynamoDB 테이블을 생성하는 Lambda 함수를 브라우저에서 만들고 실행하는 방법에 대해 설명합니다.

이 자습서를 완료하는 데 약 20분 정도 걸립니다.

앱을 빌드하려면 다음과 같이 하세요.

1. 사전 필수 작업 (p. 342)2. 생성AWS리소스 (p. 343)3. HTML 만들기 (p. 345)4. 브라우저 스크립트 준비 (p. 345)5. Lambda 함수를 만들고 업로드합니다. (p. 347)6. Lambda 함수를 배포합니다. (p. 348)7. 리소스 삭제 (p. 349)

사전 필수 작업이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈을 지원합니다. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

342

Page 351: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드생성AWS리소스

Important

Lambda 현재 ECMAScript 6 (ES6) 구문을 지원하지 않기 때문에이 예제에서는 CommonJS 시스템택스를 사용합니다. 자세한 내용은 단원을 참조하십시오.JavaScript ES6/공용JS 구문 (p. 57)

생성AWS리소스이 항목은 Lambda 함수를 만들고 배포하고 실행하는 방법을 보여 주는 자습서의 일부입니다.AWS SDK forJavaScript. 해당 자습서의 시작 부분에서 시작하려면 Lambda 함수 만들기 및 사용 (p. 342) 섹션을 참조하십시오.

이 자습서를 시작하려면 다음과 같은 리소스가 필요합니다.

• 인증되지 않은 사용자 역할이 있는 Amazon Cognito 자격 증명 풀입니다.• DynamoDB 및 Lambda 에 대한 권한이 있는 IAM 정책이 인증되지 않은 사용자 역할에 연결됩니다.• 브라우저 HTML 및 스크립트 페이지와 Lambda 함수를 호스팅하는 Amazon S3 버킷입니다.

이러한 리소스는 수동으로 만들 수 있지만AWS Cloud Development Kit (CDK)(AWS CDK) 이 튜토리얼에서설명한대로.

생성AWS를 사용하여 리소스AWS CloudFormationAWS CloudFormation를 사용하여 생성 및 프로비저닝할 수 있습니다.AWS인프라 배포를 예상한 대로 및 반복적으로 수행할 수 있습니다. 에 대한 자세한 내용AWS CloudFormation자세한 내용은AWSCloudFormation개발자 안내서를 참조하십시오..

를 만들려면AWS CloudFormation스택:

1. 설치 및 구성AWS CLI의 지시 사항을 따릅니다.AWS CLI사용 설명서.2. 이라는 이름의 파일을 만듭니다.describe-stack-resources.js프로젝트 폴더의 root 디렉터리입

니다.3. 이라는 이름의 파일을 만듭니다.setup.yaml프로젝트 폴더의 root 디렉터리에(GitHub 에 있음)를 그것

으로 가져옵니다.

Note

이AWS CloudFormation템플릿을 사용하여 생성 된AWS CDK사용 가능(GitHub 에 있음). AWSCDK에 대한 자세한 내용은 AWS Cloud Development Kit (CDK) 개발자 안내서 단원을 참조하세요.

4. 명령 줄에서 다음 명령을 실행하여STACK_NAME을 스택의 고유한 이름으로 바꿉니다.

Important

스택 이름은AWS지역 및AWS계정에 로그인합니다. 최대 128자여야 하며, 숫자와 하이픈을 사용할 수 있습니다.

aws cloudformation create-stack --stack-name STACK_NAME --template-body file://setup.yaml --capabilities CAPABILITY_IAM

자세한 내용은create-stack명령 매개 변수에 대한 자세한 내용은AWS CLI명령 참조, 그리고AWSCloudFormation사용 설명서.

5. 아래 코드를 복사하여describe-stack-resources.js.

343

Page 352: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드생성AWS리소스

// Load the AWS SDK for Node.jsconst { CloudFormationClient, DescribeStackResourcesCommand, CreateStackCommand, DescribeStacksCommand} = require("@aws-sdk/client-cloudformation");

// Create S3 service objectconst cloudformation = new CloudFormationClient();

var params = { StackName: process.argv[2]}

const getVariables = async () => { try { const data = await cloudformation.send( new DescribeStacksCommand({StackName: params.StackName})); console.log('Status: ', data.Stacks[0].StackStatus); if (data.Stacks[0].StackStatus == "CREATE_COMPLETE") { const data = await cloudformation.send( new DescribeStackResourcesCommand({StackName: params.StackName}) ); for (var i = 0; i < data.StackResources.length; i++) { var obj = data.StackResources[i].ResourceType; if (obj == "AWS::IAM::Policy") { const IDENTITY_POOL_ID = data.StackResources[i].LogicalResourceId; console.log("IDENTITY_POOL_ID:", IDENTITY_POOL_ID); var identity_pool_id = IDENTITY_POOL_ID; } if (obj == "AWS::S3::Bucket") { const BUCKET_NAME = data.StackResources[i].PhysicalResourceId; console.log("BUCKET_NAME:", BUCKET_NAME); var bucket = BUCKET_NAME; } if (obj == "AWS::IAM::Role") { const IAM_ROLE = data.StackResources[i].StackId; console.log("IAM_ROLE:", IAM_ROLE); var iam_role = IAM_ROLE; } } } else{ console.log('Stack not ready yet. Try again in a few minutes.') } }catch (err) { console.log("Error listing resources", err); } };getVariables();

이 코드는 사용할 수 있습니다(GitHub 에 있음).6. 명령 줄에서 다음 명령을 실행하여STACK_NAME을 스택의 고유한 이름으로 바꿉니다.

node describe-stack-resources.js STACK_NAME

단원을 메모해 둡니다.IAM_ROLE,아이덴티티 풀 아이디, 및버킷_이름이 튜토리얼에서 필요할 때 명령줄에서 반환되는 것을 볼 수 있습니다.

344

Page 353: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드HTML 만들기

HTML 만들기이 항목은 Lambda 함수를 만들고 배포하고 실행하는 방법을 보여 주는 자습서의 일부입니다.AWS SDK forJavaScript. 해당 자습서의 시작 부분에서 시작하려면 Lambda 함수 만들기 및 사용 (p. 342) 섹션을 참조하십시오.

먼저 를 생성합니다.LambdaAppfolder. 이 폴더에서index.html파일을 복사하고 아래 내용을 복사하여 붙여 넣습니다. 업로드index.html파일을 생성한 Amazon S3 버킷에생성AWS리소스 (p. 343)이 자습서의주제를 참조하십시오.

<!doctype html><html><head><meta charset="UTF-8"><title>Card Slots</title>

</head>

<body> <button type="button" onclick="createtable()">Create a table!</button> <script type="text/javascript" src="main.js"></script></body></html>

이 코드 예제를 사용할 수 있습니다.(GitHub 에 있음).

브라우저 스크립트 준비이 항목은 Lambda 함수를 만들고 배포하고 실행하는 방법을 보여 주는 자습서의 일부입니다.AWS SDK forJavaScript. 해당 자습서의 시작 부분에서 시작하려면 Lambda 함수 만들기 및 사용 (p. 342) 섹션을 참조하십시오.

먼저 필요한 서비스 클라이언트 개체를 만듭니다. 만들기libs폴더를 만들고 두 개의 파일을 만듭니다.dynamoClient.js및lambdaClient.js. 아래 코드를dynamoClient.js.

const { CognitoIdentityClient } = require ( "@aws-sdk/client-cognito-identity" );const { fromCognitoIdentityPool } = require ( "@aws-sdk/credential-provider-cognito-identity" );const { DynamoDBClient } = require ( "@aws-sdk/client-dynamodb" );

const REGION = "REGION";const IDENTITY_POOL_ID = "IDENTITY_POOL_ID"; // An Amazon Cognito Identity Pool ID.

// Create an Amazon DynamoDB service client object.const dynamoClient = new DynamoDBClient({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: REGION }), identityPoolId: IDENTITY_POOL_ID, }),});

module.exports = { dynamoClient };

아래 코드를lambdaClient.js.

const { lambdaClient } = require ("@aws-sdk/client-lambda" );const { fromCognitoIdentityPool,

345

Page 354: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 준비

} = require ( "@aws-sdk/credential-provider-cognito-identity" );const { CognitoIdentityClient } = require ("@aws-sdk/client-cognito-identity" );

// Set the AWS Region.const REGION = "eu-west-1"; // e.g., 'us-east-2'const IDENTITY_POOL_ID = "eu-west-1:dc7d706a-1f07-4fa5-baa7-edfabc05f293";

// Create an AWS Lambda client service object that initializes the Amazon Cognito credentials provider.const lambdaClient = new LambdaClient({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: REGION }), identityPoolId: IDENTITY_POOL_ID }),});module.exports = {lambdaClient}

둘 다 대체하십시오.REGION를 사용하여AWS지역으로 이동합니다. 쇼와 같이 Lambda 클라이언트 서비스객체를 만듭니다. Replace버버버버버 버 버버버를 사용하여IdentityPoolId에서 생성한 Amazon Cognito 자격증명 풀의생성AWS리소스 (p. 343)이 자습서의 주제를 참조하십시오.

에서LambdaApp폴더에서 파일 이름index.js를 클릭하고 아래 내용을 붙여 넣으십시오.

// Load the required clients and packages.const { InvokeCommand } = require ("@aws-sdk/client-lambda" );const { lambdaClient } = require ( "../libs/lambdaClient" );

// Set the parmaeters.const params={ // The name of the AWS Lambda function. FunctionName: "LAMBDA_FUNCTION", InvocationType: "RequestResponse", LogType: "None"}

// Call the Lambda function.window.createTable = async () => { try { const data = await lambdaClient.send(new InvokeCommand(params)); console.log("Table Created", data); document.getElementById('message').innerHTML = "Success, table created" } catch (err) { console.log("Error", err); }};

매개 변수에서버버 버버에 고유 한 이름으로AWS계정 (예:createTable.

이 코드 예제를 사용할 수 있습니다.(GitHub 에 있음).

마지막으로 명령 프롬프트에서 다음을 실행하여 이 예제의 JavaScriptmain.js.

webpack LambdaApp/index.js --mode development --target web --devtool false -o LambdaApp/main.js

Note

webpack 설치에 대한 자세한 내용은webpack으로 애플리케이션 번들링 (p. 42).

346

Page 355: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수 생성

Lambda 함수 생성이 항목은 Lambda 함수를 만들고 배포하고 실행하는 방법을 보여 주는 자습서의 일부입니다.AWS SDK forJavaScript. 해당 자습서의 시작 부분에서 시작하려면 Lambda 함수 만들기 및 사용 (p. 342) 섹션을 참조하십시오.

프로젝트의 루트에서mylambdafunction.js파일을 복사하고 아래 내용을 복사하여 붙여 넣습니다.ReplaceREGION를 사용하여AWS지역으로 이동합니다.

다음 명령을 실행하여 Lambda 함수와 필요한 Amazon Web Services 모듈을 번들로 묶습니다.

webpack mylamdbafunction.js --mode development --target node --devtool false --output-library-target umd -o index.js

Important

출력의 이름이index.js. 이는 Lambda 함수에는index.js핸들러가 작동하도록 합니다.

번들로 제공되는 출력 파일을 압축하고index.js라는 ZIP 파일로my-lambda-function.zip.

업로드my-lambda-function.zip에서 생성한 Amazon S3 버킷에생성AWS리소스 (p. 343)이 자습서의주제를 참조하십시오.

"use strict";// Load the required clients and packages.const { CreateTableCommand } = require ( "@aws-sdk/client-dynamodb" );const { dynamoClient } = require ( "./libs/dynamoClient" );

// Set the parameters.const params = { AttributeDefinitions: [ { AttributeName: "Season", //ATTRIBUTE_NAME_1 AttributeType: "N", //ATTRIBUTE_TYPE }, { AttributeName: "Episode", //ATTRIBUTE_NAME_2 AttributeType: "N", //ATTRIBUTE_TYPE }, ], KeySchema: [ { AttributeName: "Season", //ATTRIBUTE_NAME_1 KeyType: "HASH", }, { AttributeName: "Episode", //ATTRIBUTE_NAME_2 KeyType: "RANGE", }, ], ProvisionedThroughput: { ReadCapacityUnits: 1, WriteCapacityUnits: 1, }, TableName: "TABLE_NAME", //TABLE_NAME StreamSpecification: { StreamEnabled: false, },};

exports.handler = async(event, context, callback) => {

347

Page 356: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Lambda 함수를 배포합니다.

try { const data = await dynamoClient.send(new CreateTableCommand(params)); console.log("Table Created", data); } catch (err) { console.log("Error", err); }};

이 코드 예제를 사용할 수 있습니다.(GitHub 에 있음).

Lambda 함수를 배포합니다.이 항목은 Lambda 함수를 만들고 배포하고 실행하는 방법을 보여 주는 자습서의 일부입니다.AWS SDK forJavaScript. 해당 자습서의 시작 부분에서 시작하려면 Lambda 함수 만들기 및 사용 (p. 342) 섹션을 참조하십시오.

프로젝트의 루트에서lambda-function-setup.js파일을 열고 아래 내용을 붙여 넣으십시오.

Replace버버_버버을 Lambda 함수의 ZIP 버전을 업로드한 Amazon S3 버킷의 이름으로 바꿉니다. Replace버이름: Lambda 함수의 ZIP 버전 Replace버버에서 생성한 IAM 역할의 Amazon 리소스 번호 (ARN) 를생성AWS리소스 (p. 343)이 자습서의 주제를 참조하십시오. Replace버버 버버에서 함수를 제공 한 동일한 이름으로/Lambda/index.js의브라우저 스크립트 준비 (p. 345)이 자습서의 주제를 참조하십시오.

// Load the Lambda client.const { LambdaClient, CreateFunctionCommand} = require("@aws-sdk/client-lambda");

//Set the AWS Region.const REGION = "REGION"; //e.g. "us-east-1"

// Instantiate an AWS Lambda client service object.const lambda = new LambdaClient({ region: REGION });

// Set the parameters.const params = { Code: { S3Bucket: "BUCKET_NAME", // BUCKET_NAME S3Key: "ZIP_FILE_NAME", // ZIP_FILE_NAME }, FunctionName: "FUNCTION_NAME", Handler: "index.handler", Role: "IAM_ROLE_ARN", // IAM_ROLE_ARN; e.g., arn:aws:iam::650138640062:role/v3-lambda-tutorial-lambda-role Runtime: "nodejs12.x", Description: "Creates an Amazon DynamoDB table.",};

const run = async () => { try { const data = await lambda.send(new CreateFunctionCommand(params)); console.log("Success", data); // successful response } catch (err) { console.log("Error", err); // an error occurred }};run();

명령줄에 다음을 입력하여 Lambda 함수를 배포합니다.

348

Page 357: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드리소스 삭제

node lambda-function-setup.js

이 코드 예제를 사용할 수 있습니다.(GitHub 에 있음).

앱을 실행하려면index.html애플리케이션을 호스팅하는 Amazon S3 버킷에 있습니다. 이렇게 하려면 콘솔에서 Amazon S3 버킷을 열고 해당 버킷을 선택한 후객체 URL.

리소스 삭제이 항목은 Lambda 함수를 만들고 배포하고 실행하는 방법을 보여 주는 자습서의 일부입니다.AWS SDK forJavaScript. 해당 자습서의 시작 부분에서 시작하려면 Lambda 함수 만들기 및 사용 (p. 342) 섹션을 참조하십시오.

자습서를 완료한 후 불필요한 요금이 발생하지 않도록 리소스를 삭제해야 합니다. 를 삭제하면 됩니다.AWSCloudFormation스택에서 만든생성AWS리소스 (p. 343)이 자습서의 주제를 참조하십시오.

DynamoDB 테이블을 만들었으므로 수동으로 삭제해야 합니다. 자세한 내용은 단원을 참조하십시오.ddb_deletetable.js샘플(GitHub 에 있음). 그런 다음 중 하나를 사용하여 나머지 리소스를 삭제할 수있습니다Amazon Web Services 콘솔또는AWS CLI. 자습서를 마쳤을 때 스택을 수정하거나 스택과 관련 리소스를 삭제하는 방법에 대한 지침은(GitHub 에 있음).

Amazon Lex 챗봇 구축웹 애플리케이션 내에서 Amazon Lex 챗봇을 생성하여 웹 사이트 방문자의 참여를 유도할 수 있습니다.Amazon Llex 챗봇은 사용자와 직접 연락하지 않고 사용자와 온라인 채팅 대화를 수행하는 기능입니다. 예를들어, 다음 그림은 사용자가 호텔 객실 예약에 참여한 Amazon Lex 챗봇을 보여줍니다.

Amazon Lex 챗봇이 만든AWS튜토리얼은 여러 언어를 처리 할 수 있습니다. 예를 들어 프랑스어를 사용하는사용자는 프랑스어 텍스트를 입력하고 프랑스어로 응답을 받을 수 있습니다.

349

Page 358: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Lex 챗봇 구축

마찬가지로 사용자는 이탈리아어로 된 Amazon Lex 챗봇과 통신할 수 있습니다.

이AWS자습서는 Amazon Lex 의 챗봇을 만들고 Node.js 웹 애플리케이션에 통합하는 과정을 안내합니다. 이AWS SDK for JavaScript(버전 3) 은 이러한AWS서비스:

• Amazon Lex• Amazon Comprehend• Amazon Translate

완료 비용: 이AWS이 문서에 포함된 서비스는AWS프리 티어.

참고: 요금이 부과되지 않도록 이 자습서를 진행하는 동안 만든 모든 리소스를 종료해야 합니다.

앱을 빌드하려면 다음과 같이 하십시오.

1. 사전 조건 (p. 351)2. 리소스를 프로비저닝합니다. (p. 351)3. Amazon Lex (p. 352)4. HTML 생성 (p. 353)

350

Page 359: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Prerequisites

5. 브라우저 스크립트 작성 (p. 353)6. 다음 단계 (p. 357)

Prerequisites이 주제는 웹 애플리케이션 내에서 Amazon Lex 챗봇을 생성하여 웹 사이트 방문자와 소통하는 자습서의 일부입니다. 해당 자습서의 시작 부분에서 시작하려면 Amazon Lex 챗봇 구축 (p. 349) 섹션을 참조하십시오.

이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈을 참조하십시오. 안내를 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

이 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 설치하려면Node.js 다운로드..그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

생성AWS리소스이 주제는 웹 애플리케이션 내에서 Amazon Lex 챗봇을 생성하여 웹 사이트 방문자와 소통하는 자습서의 일부입니다. 해당 자습서의 시작 부분에서 시작하려면 Amazon Lex 챗봇 구축 (p. 349) 섹션을 참조하십시오.

이 자습서를 수행하려면 다음 리소스가 필요합니다.

• 다음에 대한 권한이 연결된 인증되지 않은 IAM 역할:• Amazon Comprehend• Amazon Translate• Amazon Lex

이 리소스를 수동으로 만들 수 있지만AWS CloudFormation이 튜토리얼에 설명 된대로.

생성AWS리소스 사용AWS CloudFormationAWS CloudFormation를 사용하면 를 생성하고 프로비저닝할 수 있습니다.AWS인프라 배포를 예상한 대로및 반복적으로 수행할 수 있습니다. 에 대한 자세한 내용AWS CloudFormation단원을 참조하십시오.AWSCloudFormation개발자 안내서를 참조하십시오..

를 만들려면AWS CloudFormation스택을 사용하여AWS CLI:

1. 설치 및 구성AWS CLI의 지시 사항을 따릅니다.AWS CLI사용 설명서.2. 이라는 이름의 파일을 만듭니다.setup.yaml프로젝트 폴더의 루트 디렉터리에 내용을 복사합니

다.(GitHub 에 있음)를 그것으로 가져옵니다.

Note

이AWS CloudFormation템플릿을 사용하여 생성 된AWS CDK사용 가능(GitHub 에 있음). AWSCDK에 대한 자세한 내용은 AWS Cloud Development Kit (CDK) 개발자 안내서를 참조하세요.

3. 명령 줄에서 다음 명령을 실행하여STACK_NAME을 스택의 고유한 이름으로 바꿉니다.

351

Page 360: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Amazon Lex 봇 만들기

Important

스택 이름은 내에서 고유해야 합니다.AWS및 리전AWS계정을 참조하십시오. 최대 128자까지지정할 수 있으며 숫자와 하이픈을 사용할 수 있습니다.

aws cloudformation create-stack --stack-name STACK_NAME --template-body file://setup.yaml --capabilities CAPABILITY_IAM

에 대한 자세한 내용은create-stack명령 매개 변수에 대한 내용은AWS CLI명령 참조, 그리고AWSCloudFormation사용 설명서.

생성된 리소스를 보려면 Amazon Lex 콘솔을 열고 스택을 선택한 다음리소스탭을 선택합니다.

Amazon Lex 봇 만들기첫 번째 단계는 Amazon Web Services 관리 콘솔을 사용하여 Amazon Lex 챗봇을 만드는 것입니다. 이 예에서, Amazon LexBookTrip예제가 사용됩니다. 자세한 내용은 단원을 참조하십시오.여행 예약.

• Amazon Web Services 관리 콘솔에 로그인한 다음 에서 Amazon Lex 콘솔을 엽니다.Amazon WebServices.

• 봇 페이지에서생성.• 선택BookTripBlueprint에 있음 (봇 이름 기본값BookTrip).

• 기본 설정을 입력하고생성콘솔은 []BookTrip봇). [Editor] 탭에서 미리 구성된 의도 의 세부 정보를 검토합니다.

• 테스트 창에서 봇을 테스트합니다. 입력 하 여 테스트를 시작호텔 객실을 예약하고 싶습니다.

352

Page 361: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드HTML 생성

• 선택게시를 사용하고 별칭 이름을 지정합니다 (AWS SDK for JavaScript).

Note

당신은 참조 할 필요가봇 이름및봇 별칭JavaScript 코드에서.

HTML 생성이 주제는 웹 애플리케이션 내에서 Amazon Lex 챗봇을 생성하여 웹 사이트 방문자와 소통하는 자습서의 일부입니다. 해당 자습서의 시작 부분에서 시작하려면 Amazon Lex 챗봇 구축 (p. 349) 섹션을 참조하십시오.

index.html이라는 이름의 파일을 만듭니다. 아래 코드를 복사하여 붙여 넣습니다.index.html. HTML 참조main.js. 이것은 index.js 번들로 제공되는 버전으로, 필요한AWS SDK for JavaScript모듈을 참조하십시오. 이 파일을HTML 생성 (p. 353).index.html참고 문헌도style.css, 스타일을 추가합니다.

<!DOCTYPE html><head> <title>Amazon Lex - Sample Application (BookTrip)</title> <link type="text/css" rel="stylesheet" href="style.css"></head>

<body><h1 id="title">Amazon Lex - BookTrip</h1><p id="intro"> This multiple language chatbot shows you how easy it is to incorporate <a href="https://aws.amazon.com/lex/" title="Amazon Lex (product)" target="_new">Amazon Lex</a> into your web apps. Try it out.</p><div id="conversation"></div><input type="text" id="wisdom" size="80" value="" placeholder="J'ai besoin d'une chambre d'hôtel"><br><button onclick="createResponse()">Send Text</button><script type="text/javascript" src="./main.js"></script></body>

이 코드도 사용할 수 있습니다(GitHub 에 있음).

브라우저 스크립트 작성이 주제는 웹 애플리케이션 내에서 Amazon Lex 챗봇을 생성하여 웹 사이트 방문자와 소통하는 자습서의 일부입니다. 해당 자습서의 시작 부분에서 시작하려면 Amazon Lex 챗봇 구축 (p. 349) 섹션을 참조하십시오.

353

Page 362: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 작성

index.js이라는 이름의 파일을 만듭니다. 아래 코드를 복사하여 붙여 넣습니다.index.js. 필요한 를가져옵니다.AWS SDK for JavaScript모듈 및 명령을 사용합니다. Amazon Lex, Amazon Comprehend 및Amazon Translate 에 대한 클라이언트를 만듭니다. ReplaceREGION다음으로 바꿉니다.AWS리전 및버버버버버 버 버버버에서 생성한 자격 증명 풀의 ID를생성AWS리소스 (p. 351). 이 자격 증명 풀 ID를 검색하려면Amazon Cognito 콘솔에서 자격 증명 풀을 열고자격 증명 풀 편집을 선택하고샘플 코드사이드 메뉴에서. 콘솔에 자격 증명 풀 ID가 빨간색으로 표시됩니다.

먼저 를 생성합니다.libs디렉토리는 세 개의 파일을 생성하여 필요한 서비스 클라이언트 객체를 생성합니다.comprehendClient.js,lexClient.js, 및transcribeClient.js. 아래의 적절한 코드를 각 코드에 붙여 넣고REGION및버버버버버 버 버버버각각에 대해 를 입력합니다.

Note

생성한 Amazon Cognito 자격 증명 풀의 ID를생성AWS리소스 사용AWS CloudFormation (p. 351).

import { CognitoIdentityClient } from "@aws-sdk/client-cognito-identity";import { fromCognitoIdentityPool } from "@aws-sdk/credential-provider-cognito-identity";import { ComprehendClient } from "@aws-sdk/client-comprehend";const REGION = "REGION"; //e.g. "us-east-1"const IdentityPoolId = "IDENTITY_POOL_ID";const comprehendClient = new ComprehendClient({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: REGION }), identityPoolId: IdentityPoolId }),});

import { CognitoIdentityClient } from "@aws-sdk/client-cognito-identity";import { fromCognitoIdentityPool } from "@aws-sdk/credential-provider-cognito-identity";import { LexClient } from "@aws-sdk/client-lex";const REGION = "REGION"; //e.g. "us-east-1"const IdentityPoolId = "IDENTITY_POOL_ID";const lexClient = new LexRuntimeServiceClient({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: REGION }), identityPoolId: IdentityPoolId }),});

import { CognitoIdentityClient } from "@aws-sdk/client-cognito-identity";import { fromCognitoIdentityPool } from "@aws-sdk/credential-provider-cognito-identity";import { TranslateClient } from "@aws-sdk/client-translate";const REGION = "REGION"; //e.g. "us-east-1"const IdentityPoolId = "IDENTITY_POOL_ID";const translateClient = new TranslateClient({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: REGION }), identityPoolId: IdentityPoolId }),});

이 코드는 사용할 수 있습니다(GitHub에 있음)..

354

Page 363: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 작성

그런 다음,index.html파일을 복사하여 붙여 넣습니다.

Replace버_버버및버_버버를 각각 Amazon Lex 봇의 별칭과 이름으로 바꾸고USER_ID를 사용자 ID로 바꿉니다.이createResponse비동기 함수는 다음 작업을 수행합니다.

• 사용자가 입력 한 텍스트를 브라우저로 가져 와서 Amazon Invehend를 사용하여 언어 코드를 결정합니다.• 언어 코드를 가져와 Amazon Translate 사용하여 텍스트를 영어로 번역합니다.• 번역된 텍스트를 가져와 Amazon Lex 를 사용하여 응답을 생성합니다.• 브라우저 페이지에 대한 응답을 게시합니다.

import { DetectDominantLanguageCommand} from "@aws-sdk/client-comprehend";import { TranslateTextCommand} from "@aws-sdk/client-translate";import { PostTextCommand} from "@aws-sdk/client-lex-runtime-service";import {lexClient} from ".libs/lexClient.js";import {comprehendClient} from ".libs/comprehendClient.js";import {translateClient} from ".libs/translateClient.js";

var g_text = "";// set the focus to the input boxdocument.getElementById("wisdom").focus();

function showRequest(daText) { var conversationDiv = document.getElementById("conversation"); var requestPara = document.createElement("P"); requestPara.className = "userRequest"; requestPara.appendChild(document.createTextNode(g_text)); conversationDiv.appendChild(requestPara); conversationDiv.scrollTop = conversationDiv.scrollHeight;};

function showResponse(lexResponse) { var conversationDiv = document.getElementById("conversation"); var responsePara = document.createElement("P"); responsePara.className = "lexResponse";

var lexTextResponse = lexResponse;

responsePara.appendChild(document.createTextNode(lexTextResponse)); responsePara.appendChild(document.createElement("br")); conversationDiv.appendChild(responsePara); conversationDiv.scrollTop = conversationDiv.scrollHeight;};

function handletext(text) { g_text = text; var xhr = new XMLHttpRequest(); xhr.addEventListener("load", loadNewItems, false); xhr.open("POST", "../text", true); // A Spring MVC controller xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //necessary xhr.send("text=" + text);};

function loadNewItems(event) { var msg = event.target.responseText; showRequest(); showResponse(msg);

355

Page 364: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 작성

// re-enable input var wisdomText = document.getElementById("wisdom"); wisdomText.value = ""; wisdomText.locked = false;};

// Respond to user's input.const createResponse = async () => { // Confirm there is text to submit. var wisdomText = document.getElementById("wisdom"); if (wisdomText && wisdomText.value && wisdomText.value.trim().length > 0) { // Disable input to show it is being sent. var wisdom = wisdomText.value.trim(); wisdomText.value = "..."; wisdomText.locked = true;

const comprehendParams = { Text: wisdom }; try { const data = await comprehendClient.send( new DetectDominantLanguageCommand(comprehendParams) ); console.log("Success. The language code is: ", data.Languages[0].LanguageCode); const translateParams = { SourceLanguageCode: data.Languages[0].LanguageCode, TargetLanguageCode: "en", // For example, "en" for English. Text: wisdom }; try { const data = await translateClient.send( new TranslateTextCommand(translateParams) ); console.log("Success. Translated text: ", data.TranslatedText); const lexParams = { botAlias: "BOT_ALIAS", botName: "BOT_NAME", inputText: data.TranslatedText, userId: "USER_ID" // For example, 'chatbot-demo'. }; try { const data = await lexClient.send(new PostTextCommand(lexParams)); console.log("Success. Response is: ", data.message); document.getElementById("conversation").innerHTML = data.message; } catch (err) { console.log("Error responding to message. ", err); } } catch (err) { console.log("Error translating text. ", err); } } catch (err) { console.log("Error identifying language. ", err); } }};window.createResponse = createResponse;

이 코드는 사용할 수 있습니다(GitHub에 있음)..

이제 webpack을 사용하여index.js및AWS SDK for JavaScript모듈을 단일 파일로,main.js.

1. 아직 수행하지 않았다면Prerequisites (p. 351)를 사용하여 webpack을 설치할 수 있습니다.

356

Page 365: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드다음 단계

Note

에 대한 내용은Webpack단원을 참조하십시오.webpack으로 애플리케이션 번들링 (p. 42).2. 명령 줄에서 다음을 실행하여 이 예제의 JavaScript<index.js>:

webpack index.js --mode development --target web --devtool false -o main.js

다음 단계이 주제는 웹 애플리케이션 내에서 Amazon Lex 챗봇을 생성하여 웹 사이트 방문자와 소통하는 자습서의 일부입니다. 해당 자습서의 시작 부분에서 시작하려면 Amazon Lex 챗봇 구축 (p. 349) 섹션을 참조하십시오.

축하합니다! Amazon Lex 를 사용하여 대화형 사용자 환경을 만드는 Node.js 애플리케이션을 생성했습니다. 이 자습서의 시작 부분에서 설명한 대로 이 자습서를 진행하는 동안 만든 모든 리소스를 종료하여 요금이부과되지 않도록 해야 합니다. 이 예제에서는 작업을 수행할 수 있습니다.AWS CloudFormation스택에서 만든생성AWS리소스 (p. 351)이 자습서의 주제를 다음과 같이 참조하십시오.

1. AWS CloudFormation 콘솔을 엽니다.2. 에스택페이지에서 스택을 선택합니다.3. 삭제를 선택합니다.

자세한 정보AWS서비스 간 예제는 단원을 참조하십시오.AWS SDK for JavaScript교차 서비스 예제.

예제 메시징 응용 프로그램 만들기를 생성할 수 있습니다.AWS사용하여 메시지를 보내고 검색하는AWS SDK for JavaScriptAmazon SimpleQueue Service (Amazon SQS) 를 참조하십시오. 메시지는 FIFO (선입선출) 큐에 저장되므로 메시지 순서가일관되게 유지됩니다. 예를 들어 큐에 저장된 첫 번째 메시지는 큐에서 읽은 첫 번째 메시지입니다.

Note

Amazon SQS 대한 자세한 내용은 단원을 참조하십시오.Amazon Simple Queue Service란?

이 자습서에서는 라는 Node.js 응용 프로그램을 생성합니다.AWS메시징. 다음 그림은 단원을 보여 줍니다.AWS메시징 응용 프로그램.

357

Page 366: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Prerequisites

완료 비용: 이AWS이 문서에 포함된 서비스는AWS프리 티어.

참고: 요금이 부과되지 않도록 이 자습서를 진행하는 동안 만든 모든 리소스를 종료해야 합니다.

앱을 빌드하려면 다음과 같이 하십시오.

1. 사전 조건 (p. 358)2. 리소스를 프로비저닝합니다. (p. 359)3. 워크플로우 이해 (p. 360)4. HTML 생성 (p. 361)5. 브라우저 스크립트를 생성합니다. (p. 362)6. 다음 단계 (p. 367)

Prerequisites이 주제는 자습서의 일부입니다.AWS사용하여 메시지를 보내고 검색하는AWS SDK for JavaScriptAmazonSimple Queue Service (Amazon SQS) 를 참조하십시오. 해당 자습서의 시작 부분에서 시작하려면 예제 메시징 응용 프로그램 만들기 (p. 357) 섹션을 참조하십시오.

이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

• 이러한 노드 TypeScript 예제를 실행하도록 프로젝트 환경을 설정하고 필요한AWS SDK for JavaScript타사 모듈 및 타사 모듈. 의 지시 사항을 따릅니다.GitHub.

• 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 자격 증명 JSON 파일 제공에 대한 자세한 내용은 공유 자격 증명 파일에서 Node.js 인증 자격 증명 로드 (p. 32) 섹션을 참조하십시오.

Important

이 예제에서는 ECMAScript6 (ES6) 을 사용합니다. 이를 위해서는 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js 다운로드하여 설치하려면Node.js 다운로드..그러나 CommonJS 시스템 택스를 사용하려는 경우JavaScript ES6/공용JS 구문 (p. 57)

358

Page 367: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드생성AWS리소스

생성AWS리소스이 주제는 자습서의 일부입니다.AWS사용하여 메시지를 보내고 검색하는AWS SDK for JavaScriptAmazonSimple Queue Service (Amazon SQS) 대기열 해당 자습서의 시작 부분에서 시작하려면 예제 메시징 응용프로그램 만들기 (p. 357) 섹션을 참조하십시오.

이 자습서를 시작하려면 다음이 필요합니다.

• Amazon SQS 대한 권한이 있는 인증되지 않은 IAM 역할입니다.• 이라는 이름의 FIFO Amazon SQS 대기열메시지. FIFO- 대기열 생성에 대한 자세한 내용은Amazon SQS

대기열 생성.

이 리소스를 수동으로 만들 수 있지만AWS CloudFormation(AWS CloudFormation) 이 튜토리얼에서 설명한대로.

Note

이AWS CloudFormation는 클라우드 애플리케이션 리소스를 정의할 수 있는 소프트웨어 개발 프레임워크입니다. 자세한 내용은 AWS CloudFormation 개발자 안내서를 참조하십시오.

생성AWS를 사용하여 리소스AWS CloudFormationAWS CloudFormation를 사용하면 생성 및 프로비저닝할 수 있습니다.AWS인프라 배포를 예상한 대로 및 반복적으로 수행할 수 있습니다. 에 대한 자세한 내용AWS CloudFormation자세한 내용은AWSCloudFormation개발자 안내서를 참조하십시오..

를 만들려면AWS CloudFormation스택을 사용하여AWS CLI:

1. 설치 및 구성AWS CLI의 지침에 따라AWS CLI사용 설명서.2. 이라는 이름의 파일을 만듭니다.setup.yaml프로젝트 폴더의 루트 디렉터리에 내용을 복사하고여기

GitHub 에서를 그것으로 가져옵니다.

Note

이AWS CloudFormation템플릿을 사용하여 생성 된AWS CDK사용 가능여기 GitHub 에서.AWS CDK에 대한 자세한 내용은 AWS Cloud Development Kit (CDK) 개발자 안내서를 참조하세요.

3. 명령 줄에서 다음 명령을 실행하여 다음과 같이 변경합니다.STACK_NAME을 스택의 고유한 이름으로 바꿉니다.

Important

스택 이름은 내에서 고유해야 합니다.AWS리전 및AWS계정에 로그인합니다. 최대 128자여야하며 숫자와 하이픈을 입력할 수 있습니다.

aws cloudformation create-stack --stack-name STACK_NAME --template-body file://setup.yaml --capabilities CAPABILITY_IAM

자세한 내용은create-stack명령 매개 변수에 대한 자세한 내용은AWS CLI명령 참조 안내서, 그리고AWS CloudFormation사용 설명서.

생성된 리소스를 보려면AWS CloudFormation의AWS관리 콘솔에서 스택을 선택하고 스택을 선택하고리소스탭을 선택합니다.

359

Page 368: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드이해AWS메시징 응용 프로그램

이해AWS메시징 응용 프로그램이 주제는 자습서의 일부입니다.AWS사용하여 메시지를 보내고 검색하는AWS SDK for JavaScriptAmazonSimple Queue Service (Amazon SQS) 대기열 해당 자습서의 시작 부분에서 시작하려면 예제 메시징 응용프로그램 만들기 (p. 357) 섹션을 참조하십시오.

메시지를 SQS 대기열로 전송하는 경우 애플리케이션에 메시지를 입력하고 전송을 선택합니다.

메시지가 전송되면 응용 프로그램은 이 그림과 같이 메시지를 표시합니다.

선택할 수도 있습니다.퍼지를 클릭하여 Amazon SQS 대기열로부터의 메시지를 삭제합니다. 그러면 대기열이 비어 있고 응용 프로그램에 메시지가 표시되지 않습니다.

다음은 응용 프로그램에서 메시지를 처리하는 방법에 대한 설명입니다.

360

Page 369: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드HTML 페이지 생성

• 사용자는 자신의 이름을 선택하고 메시지를 입력하고 메시지를 제출합니다. 그러면pushMessage함수를호출합니다.

• pushMessage는 Amazon SQS 대기열 URL을 검색한 다음 고유한 메시지 ID 값 (GUID) 이 포함된 메시지를 메시지 텍스트와 사용자를 Amazon SQS 대기열로 보냅니다.

• pushMessage는 Amazon SQS 대기열에서 메시지를 검색하고 각 메시지에 대한 사용자 및 메시지를 추출한 다음 메시지를 표시합니다.

• 사용자는 Amazon SQS 대기열 및 사용자 인터페이스에서 메시지를 삭제할 수 있습니다.

HTML 페이지 생성이 주제는 자습서의 일부입니다.AWS사용하여 메시지를 보내고 검색하는AWS SDK for JavaScriptAmazonSimple Queue Service (Amazon SQS) 대기열 해당 자습서의 시작 부분에서 시작하려면 예제 메시징 응용프로그램 만들기 (p. 357) 섹션을 참조하십시오.

이제 응용 프로그램의 그래픽 사용자 인터페이스 (GUI) 에 필요한 HTML 파일을 만듭니다. index.html이라는 이름의 파일을 만듭니다. 아래 코드를 복사하여 붙여 넣습니다.index.html. 이 HTML 참조main.js.이것은 index.js 번들로 제공되는 버전으로, 필요한AWS SDK for JavaScript모듈로 이동합니다.

<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"><head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="icon" href="./images/favicon.ico" /> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"/> <link rel="stylesheet" href="./css/styles.css"/> <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> <script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script> <script src="./js/main.js"></script> <style> .messageelement { margin: auto; border: 2px solid #dedede; background-color: #D7D1D0 ; border-radius: 5px; max-width: 800px; padding: 10px; margin: 10px 0; }

.messageelement::after { content: ""; clear: both; display: table; }

.messageelement img { float: left; max-width: 60px; width: 100%; margin-right: 20px; border-radius: 50%; }

.messageelement img.right { float: right; margin-left: 20px;

361

Page 370: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 생성

margin-right:0; } </style></head><body>

<div class="container"> <h2>AWS Sample Messaging Application</h2> <div id="messages">

</div>

<div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text" id="basic-addon1">Sender:</span> </div> <select name="cars" id="username"> <option value="Scott">Brian</option> <option value="Tricia">Tricia</option> </select> </div>

<div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text">Message:</span> </div> <textarea class="form-control" id="textarea" aria-label="With textarea"></textarea> <button type="button" onclick="pushMessage()" id="send" class="btn btn-success">Send</button> <button type="button" onclick="purge()" id="refresh" class="btn btn-success">Purge</button> </div> <!-- All of these child items are hidden and only displayed in a FancyBox ------------------------------------------------------> <div id="hide" style="display: none">

<div id="base" class="messageelement"> <img src="../public/images/av2.png" alt="Avatar" class="right" style="width:100%;"> <p id="text">Excellent! So, what do you want to do today?</p> <span class="time-right">11:02</span> </div>

</div></div></body></html>

이 코드도 사용할 수 있습니다.여기 GitHub 에서.

브라우저 스크립트 생성이 주제는 자습서의 일부입니다.AWS사용하여 메시지를 보내고 검색하는AWS SDK for JavaScriptAmazonSimple Queue Service (Amazon SQS) 대기열 해당 자습서의 시작 부분에서 시작하려면 예제 메시징 응용프로그램 만들기 (p. 357) 섹션을 참조하십시오.

이 항목에서는 앱에 대한 브라우저 스크립트를 만듭니다. 당신이 브라우저 스크립트를 만든 경우, 당신은라는 파일로 번들main.js의 설명에 따라JavaScript 번들링 (p. 366).

index.js이라는 이름의 파일을 만듭니다. 에서 코드를 복사하여 붙여 넣습니다.여기 GitHub 에서를 그것으로 가져옵니다.

이 코드는 다음 절에서 설명합니다.

362

Page 371: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 생성

1. 구성 (p. 363)2. 포퓰라테카 (p. 363)3. 푸시메시지 (p. 364)4. 퍼지 (p. 366)

Configuration먼저 를 생성합니다.libs디렉토리라는 이름의 파일을 생성하여 필요한 Amazon SQS 클라이언트 객체를 생성합니다.sqsClient.js. ReplaceREGION및버버버 버 버버버각 에서 를 생성합니다.

Note

생성한 Amazon Cognito 자격 증명 풀의 ID를생성AWS리소스 (p. 359).

import { CognitoIdentityClient } from "@aws-sdk/client-cognito-identity";import { fromCognitoIdentityPool } from "@aws-sdk/credential-provider-cognito-identity";import {SQSClient} from "@aws-sdk/client-sqs"'const REGION = "REGION"; //e.g. "us-east-1"const IdentityPoolId = "IDENTITY_POOL_ID";const sqsClient = new SQSClient({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: REGION }), identityPoolId: IdentityPoolId }),});

에서index.js, 필요한AWS SDK for JavaScript모듈 및 명령을 사용합니다. ReplaceSQS_버 버버에서 생성한Amazon SQS 대기열의 이름을생성AWS리소스 (p. 359).

import { GetQueueUrlCommand, SendMessageCommand, ReceiveMessageCommand, PurgeQueueCommand,} from "@aws-sdk/client-sqs";import { sqsClient } from "./libs/sqsClient.js";

const QueueName = "SQS_QUEUE_NAME"; // The Amazon SQS queue name, which must end in .fifo for this example.

populateChat이populateChat함수 onload는 Amazon SQS 대기열의 URL을 자동으로 검색하고 대기열에 있는 모든 메시지를 검색하여 표시합니다.

$(function () { populateChat();});

const populateChat = async () => { try { // Set the Amazon SQS Queue parameters. const queueParams = { QueueName: QueueName, Attributes: {

363

Page 372: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 생성

DelaySeconds: "60", MessageRetentionPeriod: "86400", }, }; // Get the Amazon SQS Queue URL. const data = await sqsClient.send(new GetQueueUrlCommand(queueParams)); console.log("Success. The URL of the SQS Queue is: ", data.QueueUrl); // Set the parameters for retrieving the messages in the Amazon SQS Queue. var getMessageParams = { QueueUrl: data.QueueUrl, MaxNumberOfMessages: 10, MessageAttributeNames: ["All"], VisibilityTimeout: 20, WaitTimeSeconds: 20, }; try { // Retrieve the messages from the Amazon SQS Queue. const data = await sqsClient.send( new ReceiveMessageCommand(getMessageParams) ); console.log("Successfully retrieved messages", data.Messages);

// Loop through messages for user and message body. var i; for (i = 0; i < data.Messages.length; i++) { const name = data.Messages[i].MessageAttributes.Name.StringValue; const body = data.Messages[i].Body; // Create the HTML for the message. var userText = body + "<br><br><b>" + name; var myTextNode = $("#base").clone(); myTextNode.text(userText); var image_url; var n = name.localeCompare("Scott"); if (n == 0) image_url = "./images/av1.png"; else image_url = "./images/av2.png"; var images_div = '<img src="' + image_url + '" alt="Avatar" class="right" style=""width:100%;"">'; myTextNode.html(userText); myTextNode.append(images_div);

// Add the message to the GUI. $("#messages").append(myTextNode); } } catch (err) { console.log("Error loading messages: ", err); } } catch (err) { console.log("Error retrieving SQS queue URL: ", err); }};

푸시 메시지사용자는 자신의 이름을 선택하고 메시지를 입력하고 메시지를 제출합니다. 그러면pushMessage함수를 호출합니다.pushMessage는 Amazon SQS 대기열 URL을 검색한 다음 고유한 메시지 ID 값 (GUID) 이 포함된메시지를 메시지 텍스트와 사용자를 Amazon SQS 대기열로 보냅니다. 그런 다음 Amazon SQS 대기열에서모든 메시지를 검색하여 표시합니다.

const pushMessage = async () => { // Get and convert user and message input. var user = $("#username").val();

364

Page 373: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 생성

var message = $("#textarea").val();

// Create random deduplication ID. var dt = new Date().getTime(); var uuid = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function ( c ) { var r = (dt + Math.random() * 16) % 16 | 0; dt = Math.floor(dt / 16); return (c == "x" ? r : (r & 0x3) | 0x8).toString(16); });

try { // Set the Amazon SQS Queue parameters. const queueParams = { QueueName: QueueName, Attributes: { DelaySeconds: "60", MessageRetentionPeriod: "86400", }, }; const data = await sqsClient.send(new GetQueueUrlCommand(queueParams)); console.log("Success. The URL of the SQS Queue is: ", data.QueueUrl); // Set the parameters for the message. var messageParams = { MessageAttributes: { Name: { DataType: "String", StringValue: user, }, }, MessageBody: message, MessageDeduplicationId: uuid, MessageGroupId: "GroupA", QueueUrl: data.QueueUrl, }; const result = await sqsClient.send(new SendMessageCommand(messageParams)); console.log("Success", result.MessageId);

// Set the parameters for retrieving all messages in the SQS queue. var getMessageParams = { QueueUrl: data.QueueUrl, MaxNumberOfMessages: 10, MessageAttributeNames: ["All"], VisibilityTimeout: 20, WaitTimeSeconds: 20, };

// Retrieve messages from SQS Queue. const final = await sqsClient.send( new ReceiveMessageCommand(getMessageParams) ); console.log("Successfully retrieved", final.Messages); $("#messages").empty(); // Loop through messages for user and message body. var i; for (i = 0; i < final.Messages.length; i++) { const name = final.Messages[i].MessageAttributes.Name.StringValue; const body = final.Messages[i].Body; // Create the HTML for the message. var userText = body + "<br><br><b>" + name; var myTextNode = $("#base").clone(); myTextNode.text(userText); var image_url; var n = name.localeCompare("Scott"); if (n == 0) image_url = "./images/av1.png";

365

Page 374: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트 생성

else image_url = "./images/av2.png"; var images_div = '<img src="' + image_url + '" alt="Avatar" class="right" style=""width:100%;"">'; myTextNode.html(userText); myTextNode.append(images_div); // Add the HTML to the GUI. $("#messages").append(myTextNode); } } catch (err) { console.log("Error", err); }};// Make the function available to the browser window.window.pushMessage = pushMessage;

메시지 지우기purge는 Amazon SQS 대기열 및 사용자 인터페이스에서 메시지를 삭제합니다.

// Delete the message from the Amazon SQS queue.const purge = async () => { try { // Set the Amazon SQS Queue parameters. const queueParams = { QueueName: QueueName, Attributes: { DelaySeconds: "60", MessageRetentionPeriod: "86400", }, }; // Get the Amazon SQS Queue URL. const data = await sqsClient.send(new GetQueueUrlCommand(queueParams)); console.log("Success", data.QueueUrl); // Delete all the messages in the Amazon SQS Queue. const result = await sqsClient.send( new PurgeQueueCommand({ QueueUrl: data.QueueUrl }) ); // Delete all the messages from the GUI. $("#messages").empty(); console.log("Success. All messages deleted.", data); } catch (err) { console.log("Error", err); }};

// Make the function available to the browser window.window.purge = purge;

JavaScript 번들링

이 comlete 브라우저 스크립트 코드를 사용할 수 있습니다.(GitHub에 있음)..

이제 webpack을 사용하여index.js및AWS SDK for JavaScript모듈을 단일 파일로 구성main.js.

1. 아직 수행하지 않은 경우Prerequisites (p. 358)를 사용하여 webpack을 설치할 수 있습니다.

Note

에 대한 자세한 정보Webpack참조,webpack으로 애플리케이션 번들링 (p. 42).2. 명령 줄에서 다음을 실행하여 이 예제의 JavaScript<index.js>:

366

Page 375: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드다음 단계

webpack index.js --mode development --target web --devtool false -o main.js

다음 단계축하합니다! 생성 및 배포한AWSAmazon SQS 사용하는 메시징 애플리케이션입니다. 이 자습서의 시작 부분에서 설명한 대로 이 자습서를 진행하는 동안 만든 모든 리소스를 종료하여 더 이상 비용이 청구되지 않도록 해야 합니다. 이 작업은 삭제하여 수행할 수 있습니다.AWS CloudFormation스택에서 만든생성AWS리소스 (p. 359)이 자습서의 주제를 다음과 같이 참조하십시오.

1. 열기AWS CloudFormation의AWS관리 콘솔.2. 열기스택페이지로 이동하여 스택을 선택합니다.3. 삭제를 선택합니다.

자세한 정보AWS교차 서비스 예제에 대한 내용은AWS SDK for JavaScript교차 서비스 예제.

367

Page 376: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드데이터 보호

이 문제에 대한 보안AWS제품 또는 서비스

Amazon Web Services(AWS)에서 가장 우선순위가 높은 것이 클라우드 보안입니다. AWS 고객은 보안에 매우 보안에 민감한 조직의 요구 사항에 부합하도록 구축된 데이터 센터 및 네트워크 아키텍처의 혜택을 누릴수 있습니다. 보안은 AWS와 귀하의 공동 책임입니다. 공동 책임 모델은 이 사항을 클라우드 내 보안 및 클라우드의 보안으로 설명합니다.

클라우드의 보안 – AWS는 AWS 클라우드에서 모든 서비스를 실행하는 인프라를 보호하며 안전하게 사용할수 있는 서비스를 제공합니다. 당사의 보안 책임은 AWS에서 우선 순위가 가장 높으며, 서드 파티 감사자는AWS 규정 준수 프로그램의 일환으로 정기적으로 보안 효율성을 테스트하고 검증합니다.

클라우드 내 보안 – 사용자의 책임은 사용하는 AWS 서비스, 그리고 데이터의 민감도, 조직의 요구 사항, 관련 법률 및 규정을 비롯한 기타 요소에 의해 결정됩니다.

이AWS제품 또는 서비스는공동 책임 모델특정 Amazon Web Services (AWS) 서비스를 지원합니다. AWS서비스 보안 정보는 AWS 서비스 보안 설명서 페이지 및 규정 준수 프로그램의 AWS 규정 준수 업무 범위에속하는 AWS 서비스를 참조하십시오.

주제• 이 데이터 보호에 대해 자세히 알아보기AWS제품 또는 서비스 (p. 368)• 이 문제에 대한 Identity and Access ManagementAWS제품 또는 서비스 (p. 369)• 이에 대한 규정 준수 확인AWS제품 또는 서비스 (p. 369)• 이 문제에 대한 복원성AWS제품 또는 서비스 (p. 370)• 이를 위한 인프라 보안AWS제품 또는 서비스 (p. 370)• TLS 1.2 적용 (p. 370)

이 데이터 보호에 대해 자세히 알아보기AWS제품 또는 서비스

이AWS 공동 책임 모델이 데이터 보호에 적용됩니다.AWS제품 또는 서비스에 대해 알아봅니다. 이 모델에서 설명하는 것처럼 AWS는 모든 AWS 클라우드 를 실행하는 글로벌 인프라를 보호할 책임이 있습니다. 이인프라에서 호스팅되는 콘텐츠에 대한 제어를 유지하는 것은 사용자의 책임입니다. 이 콘텐츠에는 사용하는AWS 서비스에 대한 보안 구성 및 관리 작업이 포함됩니다. 데이터 프라이버시에 대한 자세한 내용은 데이터 프라이버시 FAQ를 참조하세요. 유럽의 데이터 보호에 대한 자세한 내용은 AWS 보안 블로그에서 AWSShared Responsibility Model and GDPR 블로그 게시물을 참조하세요.

데이터를 보호하려면 AWS 계정 자격 증명을 보호하고 AWS Identity and Access Management(IAM)를 사용하여 개별 사용자 계정을 설정하는 것이 좋습니다. 이러한 방식에서는 각 사용자에게 자신의 직무를 충실히이행하는 데 필요한 권한만 부여됩니다. 또한 다음과 같은 방법으로 데이터를 보호하는 것이 좋습니다.

• 각 계정마다 멀티 팩터 인증(MFA)을 사용합니다.• SSL/TLS를 사용하여 AWS 리소스와 통신합니다. TLS 1.2 이상을 권장합니다.• AWS CloudTrail로 API 및 사용자 활동 로깅을 설정합니다.• AWS 암호화 솔루션을 AWS 서비스 내의 모든 기본 보안 컨트롤과 함께 사용합니다.• Amazon S3에 저장된 개인 데이터를 검색하고 보호하는 데 도움이 되는 Amazon Macie와 같은 고급 관리

형 보안 서비스를 사용합니다.

368

Page 377: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드ID 및 액세스 관리

• 명령줄 인터페이스 또는 API를 통해 AWS에 액세스할 때 FIPS 140-2 검증된 암호화 모듈이 필요한 경우FIPS 엔드포인트를 사용합니다. 사용 가능한 FIPS 엔드포인트에 대한 자세한 내용은 Federal InformationProcessing Standard(FIPS) 140-2를 참조하세요.

고객의 이메일 주소와 같은 기밀 정보나 중요한 정보는 태그나 이름 필드와 같은 자유 양식 필드에 입력하지않는 것이 좋습니다. 이 작업에는 다음이 포함됩니다.AWS제품 또는 서비스 또는 기타AWS콘솔, API,AWSCLI또는AWSSDK 이름에 사용되는 태그 또는 자유 형식 필드에 입력하는 모든 데이터는 청구 또는 진단 로그에 사용될 수 있습니다. 외부 서버에 URL을 제공할 때 해당 서버에 대한 요청을 검증하기 위해 자격 증명정보를 URL에 포함시켜서는 안됩니다.

이 문제에 대한 Identity and AccessManagementAWS제품 또는 서비스

AWS Identity and Access Management(IAM) 는 Amazon Web Services (AWS) 서비스에 대한 액세스를 관리자가 안전하게 제어할 수 있도록 지원하는AWS있습니다. IAM 관리자가 사용자를 제어할 수 있습니다.인증된(로그인) 및공인(사용 권한 있음) 에서 리소스를 사용할 수 있습니다.AWS서비스. IAM은 추가 비용 없이사용할 수 있는 AWS 서비스입니다.

이 기능을 사용하려면AWS액세스 할 수있는 제품 또는 서비스AWS를 사용하려면AWS계정 및AWS자격 증명. 의 보안을 높이려면AWS계정을 사용하려면IAM 사용자를 사용하여 액세스 자격 증명을 제공하는 대신AWS계정 자격 증명

IAM을 사용한 작업에 대한 자세한 내용은 단원을 참조하십시오.AWS Identity and Access Management.

IAM 사용자에 대한 개요와 계정 보안에 중요한 이유는AWSSecurity Credentials의Amazon Web Services 일반 참조.

이AWS제품 또는 서비스는공동 책임 모델특정 Amazon Web Services (AWS) 서비스를 지원합니다. AWS서비스 보안 정보는 AWS 서비스 보안 설명서 페이지 및 규정 준수 프로그램의 AWS 규정 준수 업무 범위에속하는 AWS 서비스를 참조하십시오.

이에 대한 규정 준수 확인AWS제품 또는 서비스이AWS제품 또는 서비스는공동 책임 모델특정 Amazon Web Services (AWS) 서비스를 지원합니다. AWS서비스 보안 정보는 AWS 서비스 보안 설명서 페이지 및 규정 준수 프로그램의 AWS 규정 준수 업무 범위에속하는 AWS 서비스를 참조하십시오.

여러 AWS 규정 준수 프로그램의 일환으로 타사 감사자가 AWS 서비스의 보안 및 규정 준수를 평가합니다.여기에는 SOC, PCI, FedRAMP, HIPAA 등이 포함됩니다. AWS는 규정 준수 프로그램 제공 AWS 범위 내 서비스의 특정 규정 준수 프로그램 범위에 있는 AWS 서비스의 자주 업데이트되는 목록을 제공합니다.

AWS Artifact를 사용하여 다운로드할 수 있는 타사 감사 보고서가 있습니다. 자세한 내용은 AWS Artifact의보고서 다운로드를 참조하십시오.

AWS 규정 준수 프로그램에 대한 자세한 내용은 AWS 규정 준수 프로그램을 참조하세요.

이를 사용할 때 귀하의 규정 준수 책임AWS제품 또는 서비스를 사용하여AWS서비스는 데이터의 민감도, 조직의 규정 준수 목표, 관련 법률과 규정에 따라 결정됩니다. AWS 서비스 사용 시 HIPAA, PCI, FedRAMP와같은 표준으로 규정 준수해야 하는 경우 다음과 같은 AWS 도움말 리소스를 활용하십시오.

• 보안 및 규정 준수 Quick Start 안내서 – 아키텍처 고려 사항에 대해 설명하고 보안 및 규정 준수에 중점을둔 기본 환경을 AWS에 배포하기 위한 단계를 제공하는 배포 안내서입니다.

369

Page 378: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드복원성

• HIPAA Security of Compliance for Compliance for 아키텍처— 회사의 사용 방법을 설명하는 백서AWS를사용해 HIPAA 규정 준수 애플리케이션을 생성할 수 있습니다.

• AWS규정 준수 리소스— 귀사의 산업 및 위치에 적용할 수 있는 통합 문서 및 안내서 모음입니다.• AWS Config – 리소스 구성이 내부 관행, 업계 지침 및 규정을 얼마나 잘 준수하고 있는지 평가하는 서비스

입니다.• AWS Security Hub – 보안 업계 표준 및 모범 사례 준수 여부를 확인하는 데 도움이 되는 AWS 내 보안 상

태에 대한 포괄적인 뷰입니다.

이 문제에 대한 복원성AWS제품 또는 서비스Amazon Web Services(AWS) 글로벌 인프라는 AWS 리전 및 가용 영역을 중심으로 구축됩니다.

AWS 리전에서는 물리적으로 분리되고 격리된 다수의 가용 영역을 제공하며 이러한 가용 영역은 짧은 지연시간, 높은 처리량 및 높은 중복성을 갖춘 네트워크에 연결되어 있습니다.

가용 영역을 사용하면 중단 없이 가용 영역 간에 자동으로 장애 조치가 이루어지는 애플리케이션 및 데이터베이스를 설계하고 운영할 수 있습니다. 가용 영역은 기존의 단일 또는 다중 데이터 센터 인프라보다 가용성,내결함성, 확장성이 뛰어납니다.

AWS 리전 및 가용 영역에 대한 자세한 내용은 AWS 글로벌 인프라를 참조하십시오.

이AWS제품 또는 서비스는공동 책임 모델특정 Amazon Web Services (AWS) 서비스를 지원합니다. AWS서비스 보안 정보는 AWS 서비스 보안 설명서 페이지 및 규정 준수 프로그램의 AWS 규정 준수 업무 범위에속하는 AWS 서비스를 참조하십시오.

이를 위한 인프라 보안AWS제품 또는 서비스이AWS제품 또는 서비스는공동 책임 모델특정 Amazon Web Services (AWS) 서비스를 지원합니다. AWS서비스 보안 정보는 AWS 서비스 보안 설명서 페이지 및 규정 준수 프로그램의 AWS 규정 준수 업무 범위에속하는 AWS 서비스를 참조하십시오.

TLS 1.2 적용AWS 서비스와 통신할 때 보안을 강화하려면 TLS 1.2 이상을 사용하도록 AWS SDK for JavaScript를 구성합니다.

전송 계층 보안(TLS)은 웹 브라우저 및 기타 애플리케이션에서 네트워크를 통해 교환되는 데이터의 프라이버시 및 무결성을 보장하기 위해 사용하는 프로토콜입니다.

Node.js에서 TLS 확인 및 적용AWS SDK for JavaScript를 Node.js와 함께 사용하면 기본 Node.js 보안 계층을 사용하여 TLS 버전을 설정합니다.

Node.js 8.0.0 이상에서는 TLS 1.2를 지원하는 OpenSSL 1.0.2의 최소 버전을 사용합니다. 사용 가능한 경우JavaScript K는 기본적으로 TLS 1.2를 사용합니다.

OpenSSL 및 TLS의 버전 확인컴퓨터에 Node.js에서 사용하는 OpenSSL의 버전을 얻으려면 다음 명령을 실행합니다.

370

Page 379: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드Node.js에서 TLS 확인 및 적용

node -p process.versions

목록에 있는 OpenSSL 버전은 다음 예제와 같이 Node.js에서 사용하는 버전입니다.

openssl: '1.1.1d'

컴퓨터에서 Node.js에서 사용하는 TLS 버전을 얻으려면 노드 셸을 시작하고 순서대로 다음 명령을 실행합니다.

> var tls = require("tls");> var tlsSocket = new tls.TLSSocket();> tlsSocket.getProtocol();

마지막 명령은 다음 예제와 같이 TLS 버전을 출력합니다.

'TLSv1.3'

Node.js는 기본적으로 이 버전의 TLS를 사용하고 호출이 성공하지 못하면 다른 버전의 TLS를 협상하려고시도합니다.

TLS의 최소 버전 적용Node.js는 호출이 실패하면 TLS 버전을 협상합니다. 명령줄에서 스크립트를 실행할 때 또는 JavaScript 코드의 요청에 따라 이 협상 중에 허용 가능한 최소 TLS 버전을 적용할 수 있습니다.

명령줄에서 최소 TLS 버전을 지정하려면 Node.js 버전 11.0.0 이상을 사용해야 합니다. 특정 Node.js 버전을설치하려면 먼저 다음 단계를 사용하여 노드 버전 관리자 (nvm) 를 설치합니다.노드 버전 관리자 설치 및 업데이트. 그런 다음, 다음 명령을 실행하여 특정 버전의 Node.js를 설치하고 사용합니다.

nvm install 11nvm use 11

TLS 1.2가 허용 가능한 최소 버전인 경우 이를 적용하려면 다음 예제와 같이 스크립트를 실행할 때 --tls-min-v1.2 인수를 지정합니다.

node --tls-min-v1.2 yourScript.js

JavaScript 코드에서 특정 요청에 대해 허용 가능한 최소 TLS 버전을 지정하려면 다음 예제와 같이httpOptions 파라미터를 사용하여 프로토콜을 지정합니다.

const https = require("https");const {NodeHttpHandler} = require("@aws-sdk/node-http-handler");const {DynamoDBClient} = require("@aws-sdk/client-dynamodb");

const client = new DynamoDBClient({ region: "us-west-2", requestHandler: new NodeHttpHandler({ httpsAgent: new https.Agent( { secureProtocol: 'TLSv1_2_method' } ) })});

371

Page 380: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드브라우저 스크립트에서 TLS 확인 및 적용

브라우저 스크립트에서 TLS 확인 및 적용브라우저 스크립트에서 JavaScript 용 SDK를 사용하면 브라우저 설정이 사용되는 TLS 버전을 제어합니다.브라우저에서 사용하는 TLS 버전은 스크립트로 검색하거나 설정할 수 없으며 사용자가 구성해야 합니다. 브라우저 스크립트에 사용된 TLS 버전을 확인하고 적용하려면 해당 브라우저의 지침을 참조하십시오.

372

Page 381: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드문서 기록

문서 기록AWS SDK for JavaScript버전 3문서 기록

• 최신 설명서 업데이트:2020년 11월 9일

다음 표에서는 VV3 릴리스에서 변경된 중요 사항에 대해 설명합니다.AWS SDK for JavaScript2020년 10월20일 이 설명서에 대한 업데이트 알림을 받으려면 RSS 피드를 구독하면 됩니다.

update-history-change update-history-description update-history-date

UpdatedAWS Lambda자습서 (p. 298)

Amazon DynamoDB 테이블에 데이터를 제출하기 위한 브라우저기반 애플리케이션을 구축하는 방법을 보여주는 자습서가 추가되었습니다.

2020년 10월 20일

Node.js 항목의 자격 증명 설정이업데이트되었습니다. (p. 28)

에 대한 Node.js 자격 증명을 설정하는 방법에 대한 항목 업데이트AWS SDK for JavaScriptV3

2020년 10월 20일

V3으로 마이그레이션 (p. 24) 마이그레이션하는 방법을 설명하는 항목이 추가되었습니다.AWSSDK for JavaScriptV3

2020년 10월 20일

시작하기 (p. 8) 브라우저에서 시작하고 Node.js사용을 시작하기 위한 업데이트항목AWS SDK for JavaScriptV3

2020년 10월 20일

브라우저 빌더 (p. 373) 에 대한 정보AWS이 필요하지 않기 때문에 브로셔 빌더가제거되었습니다AWS SDK forJavaScriptV3

2020년 10월 20일

Amazon Transcribe 서비스 예제가 업데이트되었습니다. (p. 283)

업데이트된 Amazon Transcribe서비스 예AWS SDK forJavaScriptV3

2020년 10월 20일

Amazon Simple Storage Service서비스 예제 업데이트 (p. 172)

에 대한 Amazon Simple StorageService 예제 업데이트AWS SDKfor JavaScriptV3

2020년 10월 20일

Amazon Simple Queue Service예제 서비스 (p. 267)

에 대한 Amazon Simple QueueService 예제 업데이트AWS SDKfor JavaScriptV3

2020년 10월 20일

Amazon Simple NotificationService 예제 서비스 (p. 247)

다음 Amazon Simple NotificationService 서비스 예제 업데이트AWS SDK for JavaScriptV3

2020년 10월 20일

373

Page 382: JavaScript용 AWS SDK

AWS SDK for JavaScript SDK 버전 3용 개발자 가이드문서 기록

Amazon Simple Email Service 서비스 예제 업데이트 (p. 222)

에 대한 Amazon Simple EmailService 예제 업데이트AWS SDKfor JavaScriptV3

2020년 10월 20일

Amazon S3 Glacier Service 예제서비스가 업데이트됨 (p. 136)

에 대한 Amazon S3 GlacierService 예제 업데이트AWS SDKfor JavaScriptV3

2020년 10월 20일

Amazon Redshift 서비스 예제 업데이트 (p. 290)

업데이트 된 Amazon Redshift서비스 예AWS SDK forJavaScriptV3

2020년 10월 20일

Amazon Lex 서비스 예제가 업데이트되었습니다. (p. 170)

업데이트된 Amazon Lex 서비스예AWS SDK for JavaScriptV3

2020년 10월 20일

Amazon Kinesis 서비스 예시 업데이트 (p. 162)

업데이트된 Amazon Kinesis서비스 예제AWS SDK forJavaScriptV3

2020년 10월 20일

Amazon Elastic Compute Cloud서비스 예제 업데이트 (p. 103)

에 대한 Amazon Elastic ComputeCloud 서비스 예제 업데이트AWSSDK for JavaScriptV3

2020년 10월 20일

Amazon DynamoDB 서비스 예제가 업데이트되었습니다. (p. 79)

업데이트된 Amazon DynamoDB서비스 예제AWS SDK forJavaScriptV3

2020년 10월 20일

Amazon CloudWatch 서비스 예제가 업데이트되었습니다. (p. 59)

업데이트된 Amazon CloudWatch서비스 예제AWS SDK forJavaScriptV3

2020년 10월 20일

AWS Elemental MediaConvert 서비스 예제 업데이트됨 (p. 121)

업데이트된 AWS ElementalMediaConvert 서비스 예제AWSSDK for JavaScriptV3

2020년 10월 20일

AWS Identity and AccessManagement 서비스 예제 업데이트됨 (p. 139)

UpdatedAWS Identity and AccessManagement에 대한 서비스 예제AWS SDK for JavaScriptV3

2020년 10월 20일

AWS Lambda 서비스 예제 업데이트됨 (p. 169)

UpdatedAWS Lambda에 대한 서비스 예제AWS SDK forJavaScriptV3

2020년 10월 20일

AWS SDK for JavaScript V3 개발자 안내서 미리 보기 (p. 373)

출시 전 버전의AWS SDK forJavaScriptV3 개발자 안내서

2020년 10월 19일

374