응답 객체 사용 - AWS SDK for JavaScript

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

응답 객체 사용

서비스 객체 메서드가 호출되면 해당 메서드는 콜백 함수에 자신을 전달해 AWS.Response 객체를 반환합니다. AWS.Response 객체의 속성을 통해 응답 내용에 액세스합니다. 응답 내용에 액세스하는 데 사용할 수 있는 AWS.Response 객체의 속성은 다음과 같이 두 가지가 있습니다.

  • data 속성

  • error 속성

표준 콜백 메커니즘을 사용하는 경우 이러한 두 가지 속성은 다음 예에서처럼 익명 콜백 함수에 대한 파라미터로 제공됩니다.

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

응답 객체에서 반환된 데이터에 액세스

AWS.Response 객체의 data 속성에는 서비스 요청에서 반환되는 직렬화된 데이터가 포함되어 있습니다. 요청에 성공하면 data 속성에는 반환되는 데이터에 대한 맵을 포함하는 객체가 들어 있습니다. 오류가 발생하면 data 속성이 null일 수 있습니다.

다음은 게임의 일부로 사용할 이미지 파일의 이름을 검색하기 위해 DynamoDB 테이블의 getItem 메서드를 호출하는 예제입니다.

// Initialize parameters needed to call DynamoDB var slotParams = { Key : {'slotPosition' : {N: '0'}}, TableName : 'slotWheels', ProjectionExpression: 'imageFile' }; // prepare request object for call to DynamoDB var request = new AWS.DynamoDB({region: 'us-west-2', apiVersion: '2012-08-10'}).getItem(slotParams); // log the name of the image file to load in the slot machine request.on('success', function(response) { // logs a value like "cherries.jpg" returned from DynamoDB console.log(response.data.Item.imageFile.S); }); // submit DynamoDB request request.send();

이 예제의 경우 DynamoDB 테이블은 슬롯 머신을 당긴 결과를 slotParams의 파라미터가 지정한 대로 보여주는 이미지 조회 테이블입니다.

getItem 메서드 호출에 성공하면 AWS.Response 객체의 data 속성에는 DynamoDB에서 반환한 Item 객체가 포함되어 있습니다. 반환된 데이터는 요청의 ProjectionExpression 파라미터에 따라 액세스되는데, 이번 경우에서 이 파라미터는 Item 객체의 imageFile 멤버입니다. imageFile 멤버가 문자열 값을 가지고 있기 때문에 imageFileS 하위 멤버 값을 통해 이미지의 파일 이름에 액세스합니다.

반환된 데이터를 통해 페이징

경우에 따라 서비스 요청에서 반환하는 data 속성의 내용이 여러 페이지에 걸쳐 있을 수 있습니다. response.nextPage 메서드를 호출하여 데이터의 다음 페이지에 액세스할 수 있습니다. 이 메서드는 새 요청을 보냅니다. 이 요청에 대한 응답은 콜백 또는 성공 및 오류 리스너를 사용해 캡처할 수 있습니다.

response.hasNextPage 메서드를 호출하여 서비스 요청에서 반환한 데이터에 추가 페이지가 있는지 확인할 수 있습니다. 이 메서드는 부울을 반환하여 response.nextPage 호출 시 추가 데이터를 반환하는지 여부를 나타냅니다.

s3.listObjects({Bucket: 'bucket'}).on('success', function handlePage(response) { // do something with response.data if (response.hasNextPage()) { response.nextPage().on('success', handlePage).send(); } }).send();

응답 객체에서 오류 정보에 액세스

AWS.Response 객체의 error 속성에는 서비스 오류 또는 전송 오류 이벤트 발생 시 확인 가능한 오류 데이터가 포함되어 있습니다. 오류는 다음과 같은 양식으로 반환됩니다.

{ code: 'SHORT_UNIQUE_ERROR_CODE', message: 'a descriptive error message' }

오류 발생 시 data 속성의 값은 null입니다. 실패 상태일 수 있는 이벤트를 처리하는 경우에는 data 속성 값에 액세스하려고 시도하기 전에 error 속성을 설정했는지 항상 확인하십시오.

발신 요청 객체에 액세스

request 속성은 발신 AWS.Request 객체에 대한 액세스를 제공합니다. 이는 원래 AWS.Request 객체가 보낸 원래 파라미터에 액세스하기 위해 해당 객체를 참조하는 경우 유용합니다. 다음 예제에서 request 속성은 원래 서비스 요청의 Key 파라미터에 액세스하는 데 사용됩니다.

s3.getObject({Bucket: 'bucket', Key: 'key'}).on('success', function(response) { console.log("Key was", response.request.params.Key); }).send();