やりたいこと
- DynamoDBをMACから触れるようにする
- pynamoDBでテーブル操作する
前提条件
- AWS Access Key ID と AWS Secret Access KeyはGET済み
行ってみよう!
DynamoDBをMACから触れるようにする
公式サイトからAWS CLI バージョン 2 のインストール
- ブラウザで、macOS pkg ファイルをダウンロードします: https://awscli.amazonaws.com/AWSCLIV2.pkg
- ダウンロードしたファイルをダブルクリックして、インストーラを起動します。
- 画面上の指示に従ってください。AWS CLI バージョン 2 は以下の方法でインストールできます。
(参考)
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-mac.html
これで、コマンドでAWSを触れるようになりました。
aws configure で AWSと連携
(venv) mbp:wanted user$ aws configure
AWS Access Key ID [None]: ABCDEFGHIJGLMNOPQRSTUVWXYZ
AWS Secret Access Key [None]: SECRETKEYSECRETKEYSECRETKEYSECRETKEY
Default region name [None]: ap-northeast-1
Default output format [None]:
対話式で、アクセスキーとシークレットキーを入力すれば連携が完了
テーブルの作成
from datetime import datetime
from pynamodb.attributes import UnicodeAttribute, UTCDateTimeAttribute, MapAttribute, NumberAttribute
from pynamodb.models import Model
class AccountMap(MapAttribute):
"""
アカウント情報
"""
price = NumberAttribute(null=True)
search_limit_num = NumberAttribute(null=True)
url = UnicodeAttribute(null=True)
class Users(Model):
"""
ユーザ情報
"""
class Meta:
table_name = "Users"
region = 'ap-northeast-1'
id = UnicodeAttribute(hash_key=True)
password = UnicodeAttribute()
login_date = UTCDateTimeAttribute()
start_date = UTCDateTimeAttribute(default=datetime.now())
account = AccountMap()
# ユーザテーブルの作成
if not Users.exists():
Users.create_table(read_capacity_units=1, write_capacity_units=1, wait=True)
こんな感じで、作れる。Django感、半端ないです^^
検索
query
キーを指定してから、検索
def get_user_info(user_id, password, month_password):
"""
パスワード認証
:param user_id:
:param password:
:param month_password:
:return:
"""
# TODO トークンの取得
token = "local"
# ユーザIDとパスワードと今月のパスワードとトークン
for user_data in Users.query(user_id, (Users.password == password) & (Users.month_password == month_password) & (
Users.token == token)):
return user_data
return None
queryで検索
scan
キーを指定せずに、検索
Users.scan(Users.id==user_id)
保存
# データの作成
users = Users('onehundred')
users.password = "password"
users.token = "local"
users.month_password = "month_password"
users.login_date = datetime.now()
users.start_date = datetime.now()
users.account = {
"price": 1000,
"search_limit_num": 10,
"pay_pal_url": "https://paypal.com",
}
users.save()