AWS Cloud9 + Python3 환경에서 DynamoDB 사용

개요



AWS Cloud9 + Python3 환경에서 DynamoDB를 활용하는 샘플 프로그램입니다.
DynamoDB에 저장된 ToDo 목록을 Python3에 표시합니다.
※본 프로그램을 실행하려면 IAM에서 DynamoDB에의 액세스 권한이 필요합니다.

GitHub



샘플 프로그램의 리포지토리는 다음 URL입니다.
htps : // 기주 b. 코 m / 아세 crc / dy 나모 db_py 3 3 mp ぇ

개발 환경



개발 환경에는 AWS Cloud9를 사용합니다.
파이썬과 pip 버전은 다음과 같습니다.
$ python -V
Python 3.6.5

$ pip -V
pip 18.0 from /home/ec2-user/environment/dynamodb_python3_sample/venv/lib64/python3.6/dist-packages/pip (python 3.6)

IAM 권한 확인



AWS Cloud9 개발 환경에서 DynamoDB에 연결하는 경우 DynamoDB에 대한 액세스 권한이 필요합니다. AWS Cloud9에서 실행되는 애플리케이션의 권한은 사용자 계정의 권한과 관련이 있으므로 아래 절차에 따라 확인하십시오.

AWS 톱 페이지에서 IAM으로 검색합니다.



화면 왼쪽에서 사용자 링크를 클릭합니다.



내 계정의 사용자 이름을 클릭합니다.



액세스 권한에 "AWSDynaomDBFullAccess"를 추가해야 합니다.
"액세스 권한 추가"를 선택하고 다음 단계에 따라 권한을 부여합니다.



"기존 정책에 직접 연결"을 선택하고 "AWSDynaomDBFullAccess"를 선택하여 DB에 대한 액세스 권한을 부여합니다.



가상 환경 구축



아래 명령으로 가상 개발 환경을 구축하십시오.
$ python -m venv venv
$ source venv/bin/activate

패키지 설치



먼저 "requirements.txt"라는 파일 이름으로 아래 내용을 저장하십시오.

requirements.txt
boto3==1.7.71
botocore==1.10.71
docutils==0.14
jmespath==0.9.3
python-dateutil==2.7.3
s3transfer==0.1.13
six==1.11.0

그런 다음 아래 명령으로 패키지를 설치할 수 있습니다.
$ pip install -r requirements.txt
$ pip freeze

DynamoDB 만들기



아래 명령을 사용하여 DynamoDB에 "todos"테이블을 만듭니다.
aws dynamodb create-table \
    --table-name todos \
    --attribute-definitions \
        AttributeName=id,AttributeType=N \
    --key-schema AttributeName=id,KeyType=HASH \
    --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1

DynamoDB 문서 추가



아래 명령을 사용하여 "todos"테이블에 문서를 추가합니다.
aws dynamodb put-item \
    --table-name todos  \
    --item \
        '{"id": {"N": "1"}, "done": {"BOOL": false}, "task": {"S": "タスク1"}}'

aws dynamodb put-item \
    --table-name todos  \
    --item \
        '{"id": {"N": "2"}, "done": {"BOOL": false}, "task": {"S": "タスク2"}}'

aws dynamodb put-item \
    --table-name todos  \
    --item \
        '{"id": {"N": "3"}, "done": {"BOOL": false}, "task": {"S": "タスク3"}}'

프로그램 만들기



아래와 같이 프로그램을 작성하십시오.
프로그램 내용은 DynamoDB에서 todos 테이블을 지정하여 목록을 검색합니다.

dynamodb_python3_sample.py
import boto3
from boto3.session import Session

# DynamoDBを利用するための準備
session = Session()                         #セッションの作成
dynamodb = session.resource('dynamodb')     #リソースにDynamoDBを選択
table = dynamodb.Table('todos')             #テーブルにtodosを指定

# DynamoDBからtodosの一覧を取得
def dynamodb_scan():
    try:
        results = table.scan()  #todosの一覧を取得
    except:
        raise
    return results

# メイン関数
def main():
    results = dynamodb_scan()   #dynamodb_scan()関数を実行
    print(results)              #取得した結果を表示

if __name__ == '__main__':
    main()                      #メイン関数を実行

프로그램 실행



아래 명령으로 프로그램을 실행하십시오.
제대로 작동하면 todos 테이블에서 정보 목록을 검색하고 표시합니다.
$ python dynamodb_python3_sample.py
{'Items': [
{'id': Decimal('3'), 'task': 'タスク3', 'done': False}, 
{'id': Decimal('2'), 'task': 'タスク2', 'done': False}, 
{'id': Decimal('1'), 'task': 'タスク1', 'done': False}], 
'Count': 3, 'ScannedCount': 3, 
'ResponseMetadata': {'RequestId': 'UJ75MEPDEA9M4237TSK0VUE4JFVV4KQNSO5AEMVJF66Q9ASUAAJG', 'HTTPStatusCode': 200, 'HTTPHeaders': {'server': 'Server', 'date': 'Mon, 10 Sep 2018 01:56:46 GMT', 'content-type': 'application/x-amz-json-1.0', 'content-length': '233', 'connection': 'keep-alive', 'x-amzn-requestid': 'UJ75MEPDEA9M4237TSK0VUE4JFVV4KQNSO5AEMVJF66Q9ASUAAJG', 'x-amz-crc32': '994443345'}, 'RetryAttempts': 0}}

이상입니다.

좋은 웹페이지 즐겨찾기