본문 바로가기
카테고리 없음

[AWS] #1 SDK(python)로 DynamoDB 서비스 관리

by 옥탑방개발자 2020. 6. 17.
728x90

테이블 생성하기

1. 자바(JRE) 버젼 6이상 필요(설치하기)

  • DynamoDB를 로컬에서 동작시키기위해 JRE가 필요하다

*Java 소프트웨어를 다운로드하면 JRE(Java Runtime Environment)가 설치됩니다. JRE는 JVM(Java 가상 시스템), Java 플랫폼 핵심 클래스 및 Java 플랫폼 지원 라이브러리로 구성되어 있습니다. JRE는 Java 소프트웨어의 런타임 부분으로, 웹 브라우저에서 Java 소프트웨어가 실행되는 데 필요합니다.

java.com에서 JRE다운로드

 

 

2. 로컬에 DynamoDB 설치 및 압축 풀기

 

  • CMD(명령프롬프트)에 DynamoDBLocal.jar 있는 폴더로 이동 후에 >java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar 입력

 

3. AWS CLI로 로컬에서 실행중인 DynamoDB에 액세스하기

  • AWS CLI 버전 2 설치 및 업데이트
  • Windows가 프로그램을 찾을 수 없으면 명령 프롬프트 창을 닫았다가 다시 열어서 경로를 새로 고치거나 설치 디렉토리를 PATH 환경 변수에 수동으로 추가 해야합니다.
  • 시스템> 고급 시스템 설정> 환경변수 > PATH => aws.exe가 있는 경로 설정*환경변수 지정했는데도 >where aws 했는데도 찾을 수 없으면 cmd를 종료 후 다시 실행하면 해결 할 수 있음

 

 

 

  • 자격 증명을 설정해준다
  • c:\>aws configure
  • region은 ap-northeast-2(서울)로 설정해준다.
  • output format의 Default값은 JSON이므로 따로 설정하지 않는다.
  •  

 

  • 닫기하면 다시 액세스 할 수 없으므로 안전한 위치에 저장해둔다.

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

 

 

  • AWS CLI로 로컬에서 실행중인 DynamoDB에 액세스하기

 

4. python으로 테이블 생성하기

  • MoviesCreateTable.py로 저장
import boto3


def create_movie_table(dynamodb=None):
    if not dynamodb:
        dynamodb = boto3.resource('dynamodb', endpoint_url="http://localhost:8000")

    table = dynamodb.create_table(
        TableName='Movies',
        KeySchema=[
            {
                'AttributeName': 'year',
                'KeyType': 'HASH'  # Partition key
            },
            {
                'AttributeName': 'title',
                'KeyType': 'RANGE'  # Sort key
            }
        ],
        AttributeDefinitions=[
            {
                'AttributeName': 'year',
                'AttributeType': 'N'
            },
            {
                'AttributeName': 'title',
                'AttributeType': 'S'
            },

        ],
        ProvisionedThroughput={
            'ReadCapacityUnits': 10,
            'WriteCapacityUnits': 10
        }
    )
    return table


if __name__ == '__main__':
    movie_table = create_movie_table()
    print("Table status:", movie_table.table_status)

*서비스 및 인스턴스는 사용하지 않으면 중지 및 삭제 한다. (과금발생방지)

728x90