本人虽说学了几个月的AWS,但也仅仅考了一个初级的 Certified Solutions Architect - Associate的证书,一直学的英文版(工作需要),一看高级的考试,那英文题目就够受,况且也没有多少实践,就一直搁置了。好吧,闲话少说,最近有时间来做实践,作为新手,就一边做一边记录吧。
dynamodb,AWS十分推崇的托管式数据库,本文只注重操作,所以不讨论好坏。另外aws的文档很好,所以直接参考
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.html
平时干活全是java和nodejs,好不容易有了学习机会,所以我选择了用python sdk来操作dynamodb。
当前python版本 Python 3.8.4rc1 https://www.python.org/downloads/windows/
下载一个zip的版本,解压缩到c:\python3,再把这个目录加入环境变量,python3就可以用了。我的环境变量里还有python27,需要删掉,省的惹出麻烦。
测试一下
pip
https://pip.pypa.io/en/stable/installing/
采用了下载get-pip.py, 然后用python执行来安装
安装很快,不过看提示,似乎需要再设一下环境变量 c:\python3\scripts。不要忘记重新开cmd
出现了错误:
ModuleNotFoundError: No module named 'pip'
google研究了一番,可以通过以下方法解决
执行一下python脚本,看一下path里面是否包含ib\site-packages,如果没有就在python38._pth里加上即可
>>> import sys
>>> sys.path
boto3
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html
创建表:Movie
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.Python.01.html
看到 dynamodb = boto3.resource('dynamodb', endpoint_url="http://localhost:8000")
aws的文档里连接的时本地的dynamodb,我这里需要用到真正的aws dynamodb service,所以我要用的access key id 和 secret access key,这两个key是创建aws账号是给的,到console里或许还能查到(没查过)。
dynamodb = boto3.resource('dynamodb', region_name="us-east-1", aws_access_key_id='***',aws_secret_access_key='***')
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='Movies01',
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__':
dynamodb = boto3.resource('dynamodb', region_name="us-east-1", aws_access_key_id='***',aws_secret_access_key='***')
movie_table = create_movie_table(dynamodb)
print("Table status:", movie_table.table_status)
找个编辑器,现在一般用vscode了,把上面代码写好,要改好dynamodb的resource,让后用python执行一下,就会得到下面结果,Movies以前创建了,这次加了01
后面还有一些CRUD的操作,基本上都是可以参考aws文档的例子一步一步来做,我就不赘述了。
总结一下,dynamodb的这些操作其实很容易,也没有碰到什么坑,反倒是安装python的环境时竟然有个小坑,或许是对于python大神来说不算什么。