AWS Cloud9 는 더 이상 신규 고객이 사용할 수 없습니다. AWS Cloud9 의 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세히 알아보기
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
에 대한 Amazon DynamoDB 자습서 AWS Cloud9
이 자습서를 사용하면 Amazon DynamoDB 에서 작업할 AWS Cloud9 개발 환경을 설정할 수 있습니다.
DynamoDB는 완전 관리형 데이터베이스 없음SQL 서비스입니다. DynamoDB를 사용하여 데이터 규모에 관계없이 데이터를 저장 및 검색하고, 어떤 수준의 요청 트래픽이라도 처리할 수 있는 데이터베이스 테이블을 생성할 수 있습니다. DynamoDB는 테이블의 데이터와 트래픽을 충분한 수의 서버로 자동 분산하여 지정한 요청 용량과 저장된 데이터 규모를 처리하면서도 일관되고 빠른 성능을 발휘합니다. 자세한 내용은 AWS 웹 사이트의 Amazon DynamoDB
이 샘플을 생성하면 AWS 계정에 요금이 부과될 수 있습니다. 여기에는 Amazon EC2 및 DynamoDB와 같은 서비스에 대해 발생할 수 있는 요금이 포함됩니다. 자세한 내용은 Amazon EC2 요금
추가 AWS 데이터베이스 제공에 대한 자세한 내용은 AWS 웹 사이트의 Amazon Relational Database Service(RDS)
사전 조건
이 샘플을 사용하기 전에 설정이 다음 요구 사항을 충족하는지 확인하세요.
-
기존 AWS Cloud9 EC2 개발 환경이 있어야 합니다. 이 샘플에서는 Amazon Linux 또는 를 실행하는 Amazon EC2 인스턴스에 연결된 EC2 환경이 이미 있다고 가정합니다.Ubuntu 서버. 다른 환경 또는 운영 시스템이라면 이 샘플 지침을 관련 도구를 설치하는 데에 적용해야 합니다. 자세한 내용은 에서 환경 생성 AWS Cloud9 단원을 참조하십시오.
-
기존 환경에 대한 AWS Cloud9 IDE가 이미 열려 있습니다. 환경을 열면 웹 브라우저에서 해당 환경에 IDE 대한 가 AWS Cloud9 열립니다. 자세한 내용은 AWS Cloud9에서 환경 열기 단원을 참조하십시오.
1단계: 환경에 AWS CLI, AWS CloudShell또는 두 가지 모두 설치 및 구성
이 단계에서는 를 AWS Cloud9 IDE 사용하여 환경에서 AWS CLI, AWS CloudShell또는 둘 다를 설치하고 구성하여 DynamoDB와 상호 작용하기 위한 명령을 실행할 수 있습니다. 그런 다음 AWS CLI 를 사용하여 기본 DynamoDB 명령을 실행함으로써 설치 및 구성을 테스트합니다.
-
AWS CLI 또는 AWS CloudShell 에 대한 보안 인증 정보 관리를 설정하고 환경에 AWS CLI, AWS CloudShell또는 둘 다를 설치하려면 AWS CLI 및 AWS CloudShell 샘플 의 1단계와 2단계를 수행한 다음 이 주제로 돌아갑니다. 환경에서 AWS CLI, AWS CloudShell또는 둘 다를 이미 설치하고 구성한 경우 다시 할 필요가 없습니다.
-
환경의 터미널 세션에서 DynamoDB
list-tables
명령을 실행하여 기존 DynamoDB 테이블이 있는 경우 나열하여 , AWS CLI aws-shell 또는 둘 다의 설치 및 구성을 테스트합니다. 터미널 세션을 새로 시작하려면 메뉴 모음에서 [창(Window)], [새 터미널(New Terminal)]을 선택합니다.aws dynamodb list-tables # For the AWS CLI. dynamodb list-tables # For the aws-shell.
참고
이 샘플 전체에서 aws-shell을 사용하는 경우
aws
로 시작하는 각 명령에서aws
를 생략합니다. aws-shell을 시작하려면aws-shell
명령을 실행합니다. aws-shell의 사용을 중지하려면.exit
또는.quit
명령을 실행합니다.이 명령이 성공하면 이미 있는 기존 DynamoDB 테이블 목록이 포함된
TableNames
배열이 출력됩니다. 아직 DynamoDB 테이블이 없는 경우TableNames
배열은 비어 있습니다.{ "TableNames": [] }
DynamoDB 테이블이 있는 경우
TableNames
배열에는 테이블 이름 목록이 들어 있습니다.
2단계: 테이블 생성
이 단계에서는 DynamoDB에서 테이블을 생성하고 테이블의 이름, 레이아웃, 단순 기본 키 및 데이터 처리량 설정을 지정합니다.
Weather
라는 이 샘플 테이블에는 미국의 일부 도시에 대한 일기 예보에 대한 정보가 포함되어 있습니다. 이 테이블에는 다음과 같은 유형의 정보가 들어 있습니다(DynamoDB에서는 각 정보를 속성이라고 함).
-
필요한 고유 도시 ID(
CityID
) -
필수 예보 일자(
Date
) -
도시 이름(
City
) -
주 이름(
State
) -
예보 기상 조건(
Conditions
) -
예보 기온(
Temperatures
)-
예보 최고 기온, 화씨 단위(
HighF
) -
예보 최저 기온, 화씨 단위(
LowF
)
-
테이블을 생성하려면 의 터미널 세션에서 DynamoDB create-table
명령을 AWS Cloud9 IDE실행합니다.
aws dynamodb create-table \ --table-name Weather \ --attribute-definitions \ AttributeName=CityID,AttributeType=N AttributeName=Date,AttributeType=S \ --key-schema \ AttributeName=CityID,KeyType=HASH AttributeName=Date,KeyType=RANGE \ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
이 명령에서:
-
--table-name
은 테이블 이름을 나타냅니다(이 샘플의 경우Weather
). 테이블 이름은 계정 AWS 의 각 AWS 리전 내에서 고유해야 합니다. -
--attribute-definitions
는 테이블 항목을 고유하게 식별하는 데 사용되는 속성을 나타냅니다. 이 테이블의 각 항목은 숫자ID
속성과 ISO-8601 형식의 문자열로 표시되는Date
속성의 조합으로 고유하게 식별됩니다. -
--key-schema
는 테이블의 키 스키마를 나타냅니다. 이 테이블은CityID
및Date
의 복합 기본 키를 갖고 있습니다. 즉, 각 테이블 항목은 반드시CityID
속성 값과Date
속성 값을 가져야 하지만, 테이블의 두 항목이 모두 동일한CityID
속성 값과Date
속성 값을 가질 수 있습니다. -
--provisioned-throughput
은 테이블의 읽기/쓰기 용량을 나타냅니다. DynamoDB는 최대 4KB 크기의 항목에 대해 초당 강력히 일관된 읽기 5회 또는 최대 4KB 크기의 항목에 대해 초당 최종적으로 일관된 읽기 5회를 허용합니다. 또한 DynamoDB는 크기가 최대 1KB인 항목에 대해 초당 최대 5회의 쓰기를 허용합니다.참고
프로비저닝된 처리량을 높게 설정하면 AWS 계정에 추가 요금이 발생할 수 있습니다.
이 명령과 다른 DynamoDB 명령에 대한 자세한 내용은 AWS CLI 명령 참조에서 dynamodb를 참조하세요.
이 명령이 성공하면 생성 중인 새 테이블에 대한 요약 정보가 표시됩니다. 테이블이 성공적으로 생성되었는지 확인하려면 테이블 이름(--table-name
)을 지정하여 DynamoDB describe-table
명령을 실행합니다.
aws dynamodb describe-table --table-name Weather
테이블이 성공적으로 생성되면 TableStatus
값이 CREATING
에서 ACTIVE
로 바뀝니다. 테이블이 성공적으로 생성될 때까지 이 단계를 넘어가지 마세요.
3단계: 테이블에 항목 추가
이 단계에서는 방금 생성한 테이블에 항목을 추가합니다.
-
다음 콘텐츠가 포함된
weather-item.json
이라는 파일을 생성합니다. 새 파일을 생성하려면 메뉴 모음에서 [파일(File)], [새 파일(New File)]을 선택합니다. 파일을 저장하려면 File(파일), Save(저장)를 선택합니다.{ "CityID": { "N": "1" }, "Date": { "S": "2017-04-12" }, "City": { "S": "Seattle" }, "State": { "S": "WA" }, "Conditions": { "S": "Rain" }, "Temperatures": { "M": { "HighF": { "N": "59" }, "LowF": { "N": "46" } } } }
이 코드에서
N
은 숫자인 속성 값을 나타냅니다.S
는 문자열 속성 값입니다.M
은 속성-값 페어의 세트인 맵 속성입니다. 항목 작업을 할 때마다 속성의 데이터 유형을 지정해야 합니다. 사용 가능한 추가 속성 데이터 형식은 Amazon DynamoDB 개발자 가이드에서 데이터 형식을 참조하세요. -
테이블의 이름(
--table-name
)과 JSON형식이 지정된 항목()의 경로를 지정하여 DynamoDBput-item
명령을 실행합니다--item
.aws dynamodb put-item \ --table-name Weather \ --item file://weather-item.json
명령이 성공하면 오류 없이 실행되며 확인 메시지가 표시되지 않습니다.
-
테이블의 현재 콘텐츠를 확인하려면 테이블 이름(
--table-name
)을 지정하여 DynamoDBscan
명령을 실행합니다.aws dynamodb scan --table-name Weather
명령이 성공하면 테이블 및 방금 추가한 항목에 대한 요약 정보가 표시됩니다.
4단계: 테이블에 여러 항목 추가
이 단계에서는 Weather
테이블에 항목을 몇 개 더 추가합니다.
-
다음 콘텐츠가 포함된
more-weather-items.json
이라는 파일을 생성합니다.{ "Weather": [ { "PutRequest": { "Item": { "CityID": { "N": "1" }, "Date": { "S": "2017-04-13" }, "City": { "S": "Seattle" }, "State": { "S": "WA" }, "Conditions": { "S": "Rain" }, "Temperatures": { "M": { "HighF": { "N": "52" }, "LowF": { "N": "43" } } } } } }, { "PutRequest": { "Item": { "CityID": { "N": "1" }, "Date": { "S": "2017-04-14" }, "City": { "S": "Seattle" }, "State": { "S": "WA" }, "Conditions": { "S": "Rain" }, "Temperatures": { "M": { "HighF": { "N": "49" }, "LowF": { "N": "43" } } } } } }, { "PutRequest": { "Item": { "CityID": { "N": "2" }, "Date": { "S": "2017-04-12" }, "City": { "S": "Portland" }, "State": { "S": "OR" }, "Conditions": { "S": "Thunderstorms" }, "Temperatures": { "M": { "HighF": { "N": "59" }, "LowF": { "N": "43" } } } } } }, { "PutRequest": { "Item": { "CityID": { "N": "2" }, "Date": { "S": "2017-04-13" }, "City": { "S": "Portland" }, "State": { "S": "OR" }, "Conditions": { "S": "Rain" }, "Temperatures": { "M": { "HighF": { "N": "51" }, "LowF": { "N": "41" } } } } } }, { "PutRequest": { "Item": { "CityID": { "N": "2" }, "Date": { "S": "2017-04-14" }, "City": { "S": "Portland" }, "State": { "S": "OR" }, "Conditions": { "S": "Rain Showers" }, "Temperatures": { "M": { "HighF": { "N": "49" }, "LowF": { "N": "39" } } } } } }, { "PutRequest": { "Item": { "CityID": { "N": "3" }, "Date": { "S": "2017-04-12" }, "City": { "S": "Portland" }, "State": { "S": "ME" }, "Conditions": { "S": "Rain" }, "Temperatures": { "M": { "HighF": { "N": "59" }, "LowF": { "N": "40" } } } } } }, { "PutRequest": { "Item": { "CityID": { "N": "3" }, "Date": { "S": "2017-04-13" }, "City": { "S": "Portland" }, "State": { "S": "ME" }, "Conditions": { "S": "Partly Sunny" }, "Temperatures": { "M": { "HighF": { "N": "54" }, "LowF": { "N": "37" } } } } } }, { "PutRequest": { "Item": { "CityID": { "N": "3" }, "Date": { "S": "2017-04-14" }, "City": { "S": "Portland" }, "State": { "S": "ME" }, "Conditions": { "S": "Mostly Sunny" }, "Temperatures": { "M": { "HighF": { "N": "53" }, "LowF": { "N": "37" } } } } } } ] }
이 코드에서는 8개의
Item
객체는 이전 단계에서 정의한 단일 항목과 유사하게 테이블에 추가할 8개 항목을 정의합니다. 그러나 다음 단계에서 DynamoDBbatch-write-item
명령을 실행할 때는 포함된 객체에 각Item
객체가 포함된 JSON형식의PutRequest
객체를 제공해야 합니다. 그런 다음 해당PutRequest
객체를 테이블과 같은 이름의 상위 배열에 포함해야 합니다. -
DynamoDB
batch-write-item
명령을 실행하여 추가할 JSON형식이 지정된 항목의 경로를 지정합니다(--request-items
).aws dynamodb batch-write-item \ --request-items file://more-weather-items.json
명령이 성공하면 항목이 성공적으로 추가되었음을 확인하는 다음 메시지가 표시됩니다.
{ "UnprocessedItems": {} }
-
테이블의 현재 콘텐츠를 확인하려면 DynamoDB
scan
명령을 다시 실행합니다.aws dynamodb scan --table-name Weather
이 명령이 성공하면 9개의 항목이 표시됩니다.
5단계: 글로벌 보조 인덱스 생성
DynamoDB scan
명령을 실행하여 항목에 대한 정보를 얻으려면 속도가 느릴 수 있습니다. 테이블의 크기가 커지거나 얻으려는 정보 유형이 복잡할 때 특히 그렇습니다. 하나 이상의 보조 인덱스를 생성하여 보다 쉽게 정보를 얻을 수 있습니다. 이 단계에서는 DynamoDB 가 지원하는 두 가지 유형의 보조 인덱스에 대해 알아봅니다. 이를 로컬 보조 인덱스 및 글로벌 보조 인덱스라고 합니다. 다음으로 글로벌 보조 인덱스를 생성합니다.
이러한 보조 인덱스 유형을 이해하려면 먼저 테이블의 항목을 고유하게 식별하는 기본 키에 대해 알아야합니다. DynamoDB는 단순 기본 키 또는 복합 기본 키를 지원합니다. 단순 기본 키에는 단일 속성이 있으며 해당 속성 값은 테이블의 각 항목에 대해 고유해야 합니다. 이 속성을 파티션 키(또는해시 속성)이라고도 하며 DynamoDB가 빠른 액세스를 위해 항목을 분할하는 데 이 속성을 사용할 수 있습니다. 테이블은 두 개의 속성을 포함하는 복합 기본 키를 가질 수도 있습니다. 첫 번째 속성은 파티션 키이고, 두 번째 속성은 정렬 키(범위 속성이라고도 함)입니다. 복합 기본 키가 있는 테이블에서 두 항목은 동일한 파티션 키 값을 가질 수 있지만 동일한 정렬 키 값까지 가질 수는 없습니다. Weather
테이블은 복합 기본 키를 갖고 있습니다.
로컬 보조 인덱스의 파티션 키는 테이블 자체와 동일하지만, 이 인덱스 유형의 정렬 키는 다를 수 있습니다. 글로벌 보조 인덱스는 파티션 키 및 정렬 키가 모두 테이블 차제와 다를 수 있습니다.
예를 들어 기본 키를 사용하여 CityID
를 기준으로 Weather
항목에 액세스할 수 있습니다. State
를 기준으로 Weather
항목에 액세스하려면 파티션 키가 CityID
(테이블 자체와 동일해야 함)이고 정렬 키가 State
인 로컬 보조 인덱스를 생성할 수 있습니다. City
를 기준으로 Weather
항목에 액세스하려면 파티션 키가 City
이고 정렬 키가 Date
인 글로벌 보조 인덱스를 생성할 수 있습니다.
테이블을 생성하는 동안에만 로컬 보조 인덱스를 생성할 수 있습니다. Weather
테이블이 이미 있기 때문에 로컬 보조 인덱스를 추가할 수 없습니다. 하지만 보조 인덱스는 추가할 수 있습니다. 지금 추가해 보세요.
참고
보조 인덱스를 생성하면 AWS 계정에 추가 요금이 발생할 수 있습니다.
-
다음 콘텐츠가 포함된
weather-global-index.json
이라는 파일을 생성합니다.[ { "Create": { "IndexName": "weather-global-index", "KeySchema": [ { "AttributeName": "City", "KeyType": "HASH" }, { "AttributeName": "Date", "KeyType": "RANGE" } ], "Projection": { "ProjectionType": "INCLUDE", "NonKeyAttributes": [ "State", "Conditions", "Temperatures" ] }, "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 5 } } } ]
이 코드에는 다음이 포함됩니다.
-
이 글로벌 보조 인덱스의 이름은
weather-global-index
입니다. -
City
속성은 파티션 키(해시 속성)이며Date
속성은 정렬 키(범위 속성)입니다. -
Projection
은 이 인덱스를 사용하는 테이블 검색과 일치하는 모든 항목에 대해 기본적으로 검색할 속성(해시 속성 및 범위 속성 제외)을 정의합니다. 이 샘플에서State
,Conditions
,HighF
(Temperatures
의 일부) 및LowF
(역시Temperatures
의 일부) 속성(City
및Date
속성 포함)은 일치하는 모든 항목에 대해 검색됩니다. -
테이블과 마찬가지로 글로벌 보조 인덱스는 프로비저닝된 처리량 설정을 정의해야 합니다.
-
IndexName
,KeySchema
,Projection
및ProvisionedThroughput
설정이Create
객체에 포함되어야 합니다. 이 객체는 다음 단계에서 DynamoDBupdate-table
명령을 실행할 때 생성할 글로벌 보조 인덱스를 정의합니다.
-
-
DynamoDB
update-table
명령을 실행합니다.aws dynamodb update-table \ --table-name Weather \ --attribute-definitions \ AttributeName=City,AttributeType=S AttributeName=Date,AttributeType=S \ --global-secondary-index-updates file://weather-global-index.json
이 명령에서:
-
--table-name
은 업데이트할 테이블의 이름입니다. -
--attribute-definitions
는 인덱스에 포함할 속성입니다. 파티션 키가 항상 먼저 나열되고 정렬 키는 항상 두 번째로 나열됩니다. -
--global-secondary-index-updates
는 글로벌 보조 인덱스를 정의하는 파일의 경로입니다.
이 명령이 성공하면 생성 중인 새 글로벌 보조 인덱스에 대한 요약 정보가 표시됩니다. 글로벌 보조 인덱스가 성공적으로 생성되었는지 확인하려면 테이블 이름(
--table-name
)을 지정하여 DynamoDBdescribe-table
명령을 실행합니다.aws dynamodb describe-table --table-name Weather
글로벌 보조 인덱스가 성공적으로 생성되면
TableStatus
값이UPDATING
에서ACTIVE
로 바뀌고IndexStatus
값이CREATING
에서ACTIVE
로 바뀝니다. 글로벌 보조 인덱스가 성공적으로 생성될 때까지 이 단계를 넘어가지 마세요. 몇 분 정도 걸릴 수 있습니다. -
6단계: 테이블에서 항목 가져오기
테이블에서 항목을 가져오는 방법에는 여러 가지가 있습니다. 이 단계에서는 테이블의 기본 키를 사용하고, 테이블의 다른 속성을 사용하고, 글로벌 보조 인덱스를 사용하여 항목을 가져옵니다.
항목의 기본 키 값을 기준으로 테이블에서 단일 항목을 가져오려면
항목의 기본 키 값을 알고 있는 경우 DynamoDB 명령 get-item
, scan
또는 query
를 실행하여 일치하는 항목을 가져올 수 있습니다. 이들 명령의 주요 차이점은 다음과 같습니다.
-
get-item
은 지정된 기본 키와 함께 항목에 대한 속성 세트를 반환합니다. -
scan
은 테이블 또는 보조 인덱스의 모든 항목에 액세스하여 하나 이상의 항목 및 항목 속성을 반환합니다. -
query
는 기본 키 값을 기반으로 항목을 찾습니다. 복합 기본 키(파티션 키 및 정렬 키)가 있는 테이블 또는 보조 인덱스를 쿼리할 수 있습니다.
이 샘플에서는 이러한 각 명령을 사용하여 CityID
속성 값 1
및 Date
속성 값 2017-04-12
를 포함하는 항목을 가져오는 방법을 보여줍니다.
-
DynamoDB
get-item
명령을 실행하려면 테이블의 이름(--table-name
), 기본 키 값(--key
) 및 표시할 항목의 속성 값(--projection-expression
)을 지정합니다.Date
는 DynamoDB에서 예약된 키워드이므로Date
속성 값(--expression-attribute-names
)에 대한 별칭도 제공해야 합니다(State
도 예약된 키워드이므로 이후 단계에서 별칭이 제공되는 것을 확인할 수 있음).aws dynamodb get-item \ --table-name Weather \ --key '{ "CityID": { "N": "1" }, "Date": { "S": "2017-04-12" } }' \ --projection-expression \ "City, #D, Conditions, Temperatures.HighF, Temperatures.LowF" \ --expression-attribute-names '{ "#D": "Date" }'
이 명령과 다른 명령에서 항목의 모든 속성을 표시하려면
--projection-expression
을 포함하지 마세요. 이 예에서는--projection-expression
을 포함하지 않으므로--expression-attribute-names
를 포함할 필요도 없습니다.aws dynamodb get-item \ --table-name Weather \ --key '{ "CityID": { "N": "1" }, "Date": { "S": "2017-04-12" } }'
-
DynamoDB
scan
명령을 실행하려면 다음을 지정합니다.-
테이블의 이름(
--table-name
). -
실행할 검색(
--filter-expression
). -
사용할 검색 조건(
--expression-attribute-values
). -
일치하는 항목에 대해 표시할 속성 종류(
--select
). -
표시할 항목에 대한 속성 값(
--projection-expression
). -
DynamoDB에서 예약된 키워드를 사용하는 속성이 있는 경우 해당 속성의 별칭(
--expression-attribute-names
).
aws dynamodb scan \ --table-name Weather \ --filter-expression "(CityID = :cityID) and (#D = :date)" \ --expression-attribute-values \ '{ ":cityID": { "N": "1" }, ":date": { "S": "2017-04-12" } }' \ --select SPECIFIC_ATTRIBUTES \ --projection-expression \ "City, #D, Conditions, Temperatures.HighF, Temperatures.LowF" \ --expression-attribute-names '{ "#D": "Date" }'
-
-
DynamoDB
query
명령을 실행하려면 다음을 지정합니다.-
테이블의 이름(
--table-name
). -
실행할 검색(
--key-condition-expression
). -
검색에 사용할 속성 값(
--expression-attribute-values
). -
일치하는 항목에 대해 표시할 속성 종류(
--select
). -
표시할 항목에 대한 속성 값(
--projection-expression
). -
DynamoDB에서 예약된 키워드를 사용하는 속성이 있는 경우 해당 속성의 별칭(
--expression-attribute-names
).
aws dynamodb query \ --table-name Weather \ --key-condition-expression "(CityID = :cityID) and (#D = :date)" \ --expression-attribute-values \ '{ ":cityID": { "N": "1" }, ":date": { "S": "2017-04-12" } }' \ --select SPECIFIC_ATTRIBUTES \ --projection-expression \ "City, #D, Conditions, Temperatures.HighF, Temperatures.LowF" \ --expression-attribute-names '{ "#D": "Date" }'
scan
명령은 결과를 얻기 위해 9개의 항목을 모두 스캔하는 데 필요한 반면,query
명령은 1개의 항목만 검색하는 데 필요합니다. -
항목의 기본 키 값을 기준으로 테이블에서 여러 항목을 가져오려면
항목의 기본 키 값을 알고 있는 경우 DynamoDB batch-get-item
명령을 실행하여 일치하는 항목을 가져올 수 있습니다. 이 샘플에서는 이러한 각 명령을 사용하여 CityID
속성 값 3
및 Date
속성 값 2017-04-13
또는 2017-04-14
를 포함하는 항목을 가져오는 방법을 보여줍니다.
가져올 항목을 설명하는 파일의 경로(--request-items
)를 지정하여 DynamoDB batch-get-item
명령을 실행합니다.
aws dynamodb batch-get-item --request-items file://batch-get-item.json
이 샘플의 경우 batch-get-item.json
파일의 코드는 Weather
테이블에서 CityID
가 3
이고 Date
가 2017-04-13
또는 2017-04-14
인 항목을 검색하도록 지정합니다. 검색된 각 항목에 대해 City
, State
, Date
및 HighF
(Temperatures
의 일부)의 속성 값이 표시됩니다(있는 경우).
{ "Weather" : { "Keys": [ { "CityID": { "N": "3" }, "Date": { "S": "2017-04-13" } }, { "CityID": { "N": "3" }, "Date": { "S": "2017-04-14" } } ], "ProjectionExpression": "City, #S, #D, Temperatures.HighF", "ExpressionAttributeNames": { "#S": "State", "#D": "Date" } } }
테이블에서 일치하는 모든 항목을 가져오려면
테이블의 속성 값에 대해 알고 있는 경우 DynamoDB scan
명령을 실행하여 일치하는 항목을 가져올 수 있습니다. 이 샘플에서는 Conditions
속성 값에 Sunny
가 포함되어 있고 HighF
속성 값(Temperatures
의 일부)이 53
보다 클 경우 날짜를 가져오는 방법을 보여줍니다.
다음을 지정하여 DynamoDB scan
명령을 실행합니다.
-
테이블의 이름(
--table-name
). -
실행할 검색(
--filter-expression
). -
사용할 검색 조건(
--expression-attribute-values
). -
일치하는 항목에 대해 표시할 속성 종류(
--select
). -
표시할 항목에 대한 속성 값(
--projection-expression
). -
DynamoDB에서 예약된 키워드를 사용하는 속성이 있는 경우 해당 속성의 별칭(
--expression-attribute-names
).
aws dynamodb scan \ --table-name Weather \ --filter-expression \ "(contains (Conditions, :sun)) and (Temperatures.HighF > :h)" \ --expression-attribute-values \ '{ ":sun": { "S" : "Sunny" }, ":h": { "N" : "53" } }' \ --select SPECIFIC_ATTRIBUTES \ --projection-expression "City, #S, #D, Conditions, Temperatures.HighF" \ --expression-attribute-names '{ "#S": "State", "#D": "Date" }'
글로벌 보조 인덱스에서 일치하는 모든 항목을 가져오려면
글로벌 보조 인덱스를 사용하여 검색하려면 DynamoDB query
명령을 사용합니다. 이 샘플에서는 weather-global-index
보조 인덱스를 사용하여 Portland
라는 도시의 2017-04-13
및 2017-04-14
날짜 예보 조건을 가져오는 방법을 보여줍니다.
다음을 지정하여 DynamoDB query
명령을 실행합니다.
-
테이블의 이름(
--table-name
). -
글로벌 보조 인덱스의 이름(
--index-name
). -
실행할 검색(
--key-condition-expression
). -
검색에 사용할 속성 값(
--expression-attribute-values
). -
일치하는 항목에 대해 표시할 속성 종류(
--select
). -
DynamoDB에서 예약된 키워드를 사용하는 속성이 있는 경우 해당 속성의 별칭(
--expression-attribute-names
).
aws dynamodb query \ --table-name Weather \ --index-name weather-global-index \ --key-condition-expression "(City = :city) and (#D between :date1 and :date2)" \ --expression-attribute-values \ '{ ":city": { "S" : "Portland" }, ":date1": { "S": "2017-04-13" }, ":date2": { "S": "2017-04-14" } }' \ --select SPECIFIC_ATTRIBUTES \ --projection-expression "City, #S, #D, Conditions, Temperatures.HighF" \ --expression-attribute-names '{ "#S": "State", "#D": "Date" }'
7단계: 정리
이 샘플을 사용한 후 AWS 계정에 지속적인 요금이 부과되지 않도록 하려면 테이블을 삭제해야 합니다. 테이블을 삭제하면 글로벌 보조 인덱스도 삭제됩니다. 또한 환경도 삭제해야 합니다.
테이블을 삭제하려면 테이블 이름(--table-name
)을 지정하여 DynamoDB delete-table
명령을 실행합니다.
aws dynamodb delete-table --table-name Weather
명령이 성공하면 TableStatus
값 DELETING
을 포함하여 테이블에 대한 정보가 표시됩니다.
테이블이 성공적으로 삭제되었는지 확인하려면 테이블 이름(--table-name
)을 지정하여 DynamoDB describe-table
명령을 실행합니다.
aws dynamodb describe-table --table-name Weather
테이블이 성공적으로 삭제되면 Requested
resource not found
라는 구문이 포함된 메시지가 표시됩니다.
환경을 삭제하려면 환경 삭제를 참조하세요.