반응형
python으로 dynamodb 접근하기
사용자 access key와 secret key는 발급받았다고 가정하고, aws에서 제공하는 python sdk 패키지 boto3를 설치한다.
$ pip install boto3
boto3 documentation을 참고해서 session과 client를 생성할 수 있다. S3와 다르게, 바로 client 생성은 안되는 것 같고, session을 먼저 생성한 후에 해당 session에서 client 호출을 해야한다.
session = boto3.Session(
aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY
)
dynamodb = session.client("dynamodb", region_name="ap-northeast-2")
table 생성
dynamodb client의 create_table 함수를 이용해서 테이블 생성을 할 수 있다. console과 동일하게 파티션키(Hash)와 정렬키(Range)와 각 키의 속성(string/int)를 지정해줘야 한다.
table_creation_resp = dynamodb.create_table(
TableName=tableName,
KeySchema=[
{"AttributeName": "type", "KeyType": "HASH"}, # Partition Key
{"AttributeName": "date", "KeyType": "RANGE"}, # Sort Key
],
AttributeDefinitions=[
{"AttributeName": "type", "AttributeType": "S"}, # string data type
{"AttributeName": "date", "AttributeType": "S"}, # string data type
],
BillingMode="PROVISIONED", # 읽기/쓰기 용량 지정을 할 계획이라 ondemand가 아니라 provision으로 지정함
ProvisionedThroughput={
"ReadCapacityUnits": 2,
"WriteCapacityUnits": 2,
},
Tags=[
{"Key": "property", "Value": property},
{"Key": "scale", "Value": scale},
],
)
provisioned 용량 범위 조정
이거 찾느라 한참 삽질했는데, dynamodb 콘솔에서 설정할 수 있는것과 마찬가지로 read/right capacity unit (RCU/WCU)의 최소/최대 범위를 지정할 수 있다.
auto_scaling_client = session.client(
"application-autoscaling", region_name="ap-northeast-2"
)
# Read capacity
r = auto_scaling_client.register_scalable_target(
ServiceNamespace="dynamodb",
ResourceId=f"table/tableName",
ScalableDimension="dynamodb:table:ReadCapacityUnits",
MinCapacity=1,
MaxCapacity=5,
)
print(r)
# Write capacity
r = auto_scaling_client.register_scalable_target(
ServiceNamespace="dynamodb",
ResourceId=f"table/tableName",
ScalableDimension="dynamodb:table:WriteCapacityUnits",
MinCapacity=1,
MaxCapacity=5,
)
728x90
반응형
'서버만들기 > aws' 카테고리의 다른 글
[python/S3] S3에 이미지 업로드 (2) - 메모리로부터 업로드, PNG to JPG 변환 (0) | 2022.11.20 |
---|---|
[python/S3] S3에 이미지 업로드 (0) | 2022.11.13 |
[aws] S3 권한 설정 (0) | 2022.10.05 |
[AWS] Elastic Beanstalk CLI (0) | 2021.07.04 |
[aws] Elastic Beanstalk 설정 (콘솔) (0) | 2021.07.03 |
최근댓글