UpdateItem - Amazon DynamoDB

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

UpdateItem

중요

이 단원에서 언급되는 API 버전 2011-12-05는 사용 중단되었으며 새 애플리케이션에 사용해서는 안 됩니다.

현재 하위 수준 API에 대한 설명서는 Amazon DynamoDB API 참조 섹션을 참조하세요.

설명

기존 항목의 속성을 편집합니다. 조건부 업데이트를 수행할 수 있습니다(속성 이름-값 페어가 없는 경우 새로 삽입하거나 특정 예상 속성 값이 있는 경우 기존 이름-값 페어를 바꿉니다).

참고

UpdateItem을 사용하여 기본 키 속성을 업데이트할 수 없습니다. 대신 해당 항목을 삭제하고 PutItem을 사용하여 새 속성이 포함된 새 항목을 만듭니다.

UpdateItem 작업에는 업데이트를 수행하는 방법을 정의하는 Action 파라미터가 포함되어 있습니다. 속성 값을 입력, 삭제 또는 추가할 수 있습니다.

속성 값은 null이 될 수 없습니다. 문자열과 이진 형식 속성 길이는 0보다 커야 합니다. 설정 유형 속성은 비어 있으면 안 됩니다. 값이 비어 있는 요청은 ValidationException으로 거부됩니다.

기존 항목에 지정된 기본 키가 있는 경우:

  • PUT - 지정된 속성을 추가합니다. 속성이 이미 있는 경우 새 값으로 바뀝니다.

  • DELETE - 지정된 값이 없는 경우 속성과 해당 값을 제거합니다. 값 세트가 지정된 경우 지정된 세트의 값이 이전 세트에서 제거됩니다. 따라서 속성 값에 [a,b,c]가 포함되어 있고 삭제 작업에 [a,c]가 포함되어 있으면 최종 속성 값은 [b]가 됩니다. 지정된 값 유형은 기존 값 유형과 일치해야 합니다. 빈 세트를 지정하는 것은 유효하지 않습니다.

  • ADD - 숫자에 대해 또는 대상 속성이 세트(문자열 세트 포함)인 경우에만 추가 작업을 사용합니다. ADD는 대상 속성이 단일 문자열 값이거나 스칼라 이진 값인 경우에는 작동하지 않습니다. 지정된 값은 숫자 값에 추가(기존 숫자 값 증가 또는 감소)되거나 문자열 세트에 추가 값으로 추가됩니다. 값 세트가 지정된 경우 해당 값이 기존 세트에 추가됩니다. 예를 들어 원래 값이 [1,2]이고 제공한 값이 [3]이면 추가 작업 후 세트는 [4,5]가 아니라 [1,2,3]이 됩니다. 세트 속성에 대한 Add 작업이 지정되어 있으며 지정된 속성 유형이 기존 세트 유형과 일치하지 않는 경우 오류가 발생합니다.

    존재하지 않는 속성에 대해 ADD를 사용하면 해당 속성과 그 값이 항목에 추가됩니다.

항목이 지정된 기본 키와 일치하지 않는 경우:

  • PUT - 지정된 기본 키가 포함된 새 항목을 만듭니다. 그런 다음 지정된 속성을 추가합니다.

  • DELETE - 아무 것도 발생하지 않습니다.

  • ADD - 속성 값에 대해 제공된 기본 키와 숫자(또는 숫자 세트)가 포함된 항목을 만듭니다. 문자열 또는 이진 형식에는 유효하지 않습니다.

참고

ADD를 사용하여 업데이트 전에는 존재하지 않은 항목의 숫자 값을 증가 또는 감소시키는 경우, DynamoDB는 초기 값으로 0을 사용합니다. 또한 ADD를 사용하여 항목을 업데이트함으로써 업데이트 전에는 존재하지 않은 속성의 숫자 값을 증가 또는 감소시키는 경우, DynamoDB는 초기 값으로 0을 사용합니다. 예를 들어, ADD를 사용하여 업데이트 전에는 존재하지 않은 속성에 +3을 추가합니다. DynamoDB는 0을 초기 값으로 사용하고 업데이트 후의 값은3입니다.

이 작업의 사용에 대한 자세한 내용은 항목 및 속성 작업 단원을 참조하세요.

요청

구문

// This header is abbreviated. // For a sample of a complete header, see DynamoDB 하위 수준 API. POST / HTTP/1.1 x-amz-target: DynamoDB_20111205.UpdateItem content-type: application/x-amz-json-1.0 {"TableName":"Table1", "Key": {"HashKeyElement":{"S":"AttributeValue1"}, "RangeKeyElement":{"N":"AttributeValue2"}}, "AttributeUpdates":{"AttributeName3":{"Value":{"S":"AttributeValue3_New"},"Action":"PUT"}}, "Expected":{"AttributeName3":{"Value":{"S":"AttributeValue3_Current"}}}, "ReturnValues":"ReturnValuesConstant" }
이름 설명 필수
TableName

업데이트할 항목이 포함된 테이블 이름입니다.

유형: String

Key

항목을 정의하는 기본 키입니다. 기본 키에 대한 자세한 내용은 프라이머리 키 단원을 참조하세요.

형식: 해당 값에 대한 HashKeyElement 및 해당 값에 대한 RangeKeyElement의 맵

AttributeUpdates

업데이트의 새 값 및 작업에 대한 속성 이름의 맵입니다. 속성 이름은 수정할 속성을 지정하며, 기본 키 속성은 포함할 수 없습니다.

형식: 속성 업데이트에 대한 속성 이름, 값 및 작업의 맵.

AttributeUpdates:Action

업데이트 수행 방법을 지정합니다. 가능한 값은 PUT(기본), ADD 또는 DELETE입니다. 의미는 UpdateItem 설명에 있습니다.

유형: String

기본값: PUT

아니요
Expected

조건부 업데이트의 속성을 지정합니다. Expected 파라미터를 사용하면 속성 이름뿐만 아니라, DynamoDB에서 속성 값이 이미 존재하는지 또는 속성 값이 존재하며 이를 변경하기 전에 특정 값이 있는지 확인해야 하는지 여부를 제공할 수 있습니다.

형식: 속성 이름의 맵

아니요
Expected:AttributeName 조건부 입력에 대한 속성 이름입니다.

유형: String

아니요
Expected:AttributeName: ExpectedAttributeValue 이 파라미터를 사용하여 속성 이름-값 페어의 값이 존재할지 여부를 지정합니다.

다음 JSON 표기법은 항목의 "Color" 속성이 없을 경우 해당 항목을 업데이트합니다.

"Expected" : {"Color":{"Exists":false}}

다음 JSON 표기법은 항목을 업데이트하기 전에 이름이 "Color"인 속성의 기존 값이 "Yellow"인지 여부를 확인합니다.

"Expected" : {"Color":{"Exists":true},{"Value":{"S":"Yellow"}}}

기본적으로 Expected 파라미터를 사용하고 Value를 제공하는 경우 DynamoDB는 속성이 존재하고 바꿀 현재 값이 있는 것으로 가정합니다. 따라서 {"Exists":true}가 내재되어 있으므로 지정하지 않아도 됩니다. 요청을 다음과 같이 줄일 수 있습니다.

"Expected" : {"Color":{"Value":{"S":"Yellow"}}}
참고

확인할 속성 값이 없을 때 {"Exists":true}를 지정하면 DynamoDB는 오류를 반환합니다.

아니요
ReturnValues

속성 이름-값 페어가 UpdateItem 요청으로 업데이트되기 전에 이를 가져오려면 이 파라미터를 사용합니다. 가능한 파라미터 값은 NONE(기본) 또는 ALL_OLD, UPDATED_OLD, ALL_NEW 또는 UPDATED_NEW입니다. ALL_OLD가 지정되어 있으며 UpdateItem이 속성 이름-값 페어를 덮어쓴 경우, 이전 항목의 내용이 반환됩니다. 이 파라미터가 제공되지 않거나 NONE인 경우, 아무 것도 반환되지 않습니다. ALL_NEW가 지정된 경우, 해당 항목에 대한 새 버전의 모든 속성이 반환됩니다. UPDATED_NEW가 지정된 경우, 업데이트된 속성의 새 버전만 반환됩니다.

유형: String

아니요

응답

구문

다음 구문 예는 요청에 ALL_OLDReturnValues 파라미터가 지정되어 있다고 가정합니다. 그렇지 않을 경우 응답에는 ConsumedCapacityUnits 요소만 있습니다.

HTTP/1.1 200 x-amzn-RequestId: 8966d095-71e9-11e0-a498-71d736f27375 content-type: application/x-amz-json-1.0 content-length: 140 {"Attributes":{ "AttributeName1":{"S":"AttributeValue1"}, "AttributeName2":{"S":"AttributeValue2"}, "AttributeName3":{"S":"AttributeValue3"}, "AttributeName5":{"B":"dmFsdWU="} }, "ConsumedCapacityUnits":1 }
이름 설명
Attributes

속성 이름-값 페어의 맵입니다. 단 ReturnValues 파라미터가 요청에서 NONE 이외의 값으로 지정된 경우만 해당됩니다.

형식: 속성 이름-값 페어의 맵

ConsumedCapacityUnits

작업에서 사용한 쓰기 용량 단위의 수입니다. 이 값은 할당 처리량에 적용되는 수를 나타냅니다. 자세한 내용은 DynamoDB 프로비저닝된 용량 테이블의 설정 관리 단원을 참조하세요.

형식: 숫자

특수 오류

오류 설명
ConditionalCheckFailedException 조건부 확인이 실패했습니다. 속성("+ name +") 값은 ("+ value +")이지만 ("+ expValue +")로 예상되었습니다.
ResourceNotFoundExceptions 지정된 항목 또는 속성을 찾을 수 없습니다.

예시

AWS SDK를 사용하는 예는 항목 및 속성 작업 단원을 참조하세요.

샘플 요청

// This header is abbreviated. For a sample of a complete header, see DynamoDB 하위 수준 API. POST / HTTP/1.1 x-amz-target: DynamoDB_20111205.UpdateItem content-type: application/x-amz-json-1.0 {"TableName":"comp5", "Key": {"HashKeyElement":{"S":"Julie"},"RangeKeyElement":{"N":"1307654350"}}, "AttributeUpdates": {"status":{"Value":{"S":"online"}, "Action":"PUT"}}, "Expected":{"status":{"Value":{"S":"offline"}}}, "ReturnValues":"ALL_NEW" }

샘플 응답

HTTP/1.1 200 OK x-amzn-RequestId: 5IMHO7F01Q9P7Q6QMKMMI3R3QRVV4KQNSO5AEMVJF66Q9ASUAAJG content-type: application/x-amz-json-1.0 content-length: 121 Date: Fri, 26 Aug 2011 21:05:00 GMT {"Attributes": {"friends":{"SS":["Lynda, Aaron"]}, "status":{"S":"online"}, "time":{"N":"1307654350"}, "user":{"S":"Julie"}}, "ConsumedCapacityUnits":1 }