에 대한 Amazon DynamoDB 자습서 AWS Cloud9 - AWS Cloud9

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 요금Amazon DynamoDB 요금 섹션을 참조하세요.

추가 AWS 데이터베이스 제공에 대한 자세한 내용은 AWS 웹 사이트의 Amazon Relational Database Service(RDS), Amazon ElastiCacheAmazon Redshift를 참조하세요. AWS 웹 사이트에서 AWS Database Migration Service 섹션도 참조하세요.

사전 조건

이 샘플을 사용하기 전에 설정이 다음 요구 사항을 충족하는지 확인하세요.

  • 기존 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 명령을 실행함으로써 설치 및 구성을 테스트합니다.

  1. AWS CLI 또는 AWS CloudShell 에 대한 보안 인증 정보 관리를 설정하고 환경에 AWS CLI, AWS CloudShell또는 둘 다를 설치하려면 AWS CLI 및 AWS CloudShell 샘플 의 1단계와 2단계를 수행한 다음 이 주제로 돌아갑니다. 환경에서 AWS CLI, AWS CloudShell또는 둘 다를 이미 설치하고 구성한 경우 다시 할 필요가 없습니다.

  2. 환경의 터미널 세션에서 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는 테이블의 키 스키마를 나타냅니다. 이 테이블은 CityIDDate의 복합 기본 키를 갖고 있습니다. 즉, 각 테이블 항목은 반드시 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단계: 테이블에 항목 추가

이 단계에서는 방금 생성한 테이블에 항목을 추가합니다.

  1. 다음 콘텐츠가 포함된 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 개발자 가이드에서 데이터 형식을 참조하세요.

  2. 테이블의 이름(--table-name)과 JSON형식이 지정된 항목()의 경로를 지정하여 DynamoDB put-item 명령을 실행합니다--item.

    aws dynamodb put-item \ --table-name Weather \ --item file://weather-item.json

    명령이 성공하면 오류 없이 실행되며 확인 메시지가 표시되지 않습니다.

  3. 테이블의 현재 콘텐츠를 확인하려면 테이블 이름(--table-name)을 지정하여 DynamoDB scan 명령을 실행합니다.

    aws dynamodb scan --table-name Weather

    명령이 성공하면 테이블 및 방금 추가한 항목에 대한 요약 정보가 표시됩니다.

4단계: 테이블에 여러 항목 추가

이 단계에서는 Weather 테이블에 항목을 몇 개 더 추가합니다.

  1. 다음 콘텐츠가 포함된 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개 항목을 정의합니다. 그러나 다음 단계에서 DynamoDB batch-write-item 명령을 실행할 때는 포함된 객체에 각 Item 객체가 포함된 JSON형식의 PutRequest 객체를 제공해야 합니다. 그런 다음 해당 PutRequest 객체를 테이블과 같은 이름의 상위 배열에 포함해야 합니다.

  2. DynamoDB batch-write-item 명령을 실행하여 추가할 JSON형식이 지정된 항목의 경로를 지정합니다(--request-items).

    aws dynamodb batch-write-item \ --request-items file://more-weather-items.json

    명령이 성공하면 항목이 성공적으로 추가되었음을 확인하는 다음 메시지가 표시됩니다.

    { "UnprocessedItems": {} }
  3. 테이블의 현재 콘텐츠를 확인하려면 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 계정에 추가 요금이 발생할 수 있습니다.

  1. 다음 콘텐츠가 포함된 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의 일부) 속성(CityDate속성 포함)은 일치하는 모든 항목에 대해 검색됩니다.

    • 테이블과 마찬가지로 글로벌 보조 인덱스는 프로비저닝된 처리량 설정을 정의해야 합니다.

    • IndexName, KeySchema, ProjectionProvisionedThroughput 설정이 Create 객체에 포함되어야 합니다. 이 객체는 다음 단계에서 DynamoDB update-table 명령을 실행할 때 생성할 글로벌 보조 인덱스를 정의합니다.

  2. 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)을 지정하여 DynamoDB describe-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 속성 값 1Date 속성 값 2017-04-12를 포함하는 항목을 가져오는 방법을 보여줍니다.

  1. 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" } }'
  2. 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" }'
  3. 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 속성 값 3Date 속성 값 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 테이블에서 CityID3이고 Date2017-04-13 또는 2017-04-14인 항목을 검색하도록 지정합니다. 검색된 각 항목에 대해 City, State, DateHighF(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-132017-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

명령이 성공하면 TableStatusDELETING을 포함하여 테이블에 대한 정보가 표시됩니다.

테이블이 성공적으로 삭제되었는지 확인하려면 테이블 이름(--table-name)을 지정하여 DynamoDB describe-table 명령을 실행합니다.

aws dynamodb describe-table --table-name Weather

테이블이 성공적으로 삭제되면 Requested resource not found라는 구문이 포함된 메시지가 표시됩니다.

환경을 삭제하려면 환경 삭제를 참조하세요.