[AWS] dynamodb-local本地資料庫安裝以及dynamoose模組連線dynamodb-local

BurstLinking發表於2020-11-10

1、背景

dynamodb是aws提供一個NoSQL資料庫服務,dynamodb-local是資料庫雲服務的本地除錯版本,方便專案本地除錯。dynamoose是nodejs對於dynamodb資料庫的三方模組,類似mongodb的模組mongoose,用於node.js的優雅資料庫物件建模,避免原始aws複雜的資料庫操作。

2、dynamodb-local本地安裝步驟

官方文件:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html

這裡選擇了linux環境下docker形式的安裝(docker和docker-compose環境自行Google安裝)

  • 建立docker-compose-dynamodb-local.yaml檔案
[root@localhost docker_yaml]# cat docker-compose-dynamodb-local.yaml 
version: '3'

services:
  dynamodb:
    image: amazon/dynamodb-local
    hostname: dynamodb-local
    container_name: dynamodb-local
    ports:
      - "8042:8000"
  • 建立dynamodb-local docker容器應用
docker-compose -f docker-compose-dynamodb-local.yaml up –d

 

下載安裝好後,執行docker ps –a可以檢視到dynamodb-local的資料庫容器

  • 測試dynamodb-local資料庫

安裝aws_cli,官方文件:https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

 

        unzip後,執行目錄下的install檔案 ./aws/install 

建立本地table(需要提前aws configure設定region等引數,否則執行提示引數缺少)

aws dynamodb --endpoint-url http://127.0.0.1:8042 create-table --table-name demo-customer-info --attribute-definitions AttributeName=customerId,AttributeType=S --key-schema AttributeName=customerId,KeyType=HASH --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5

引數說明:

endpoint-url:它設定為指向http:endpoint-url,它設定為指向http:// localhost:8042,這是公開訪問Docker容器內DynamoDB的埠。

table-name:這是將要建立的表的名稱。

attribute-definitions:這是對構成表的關鍵架構的屬性的描述。它具有2個引數,即AttributeName和AttributeType。

key-schema:在這裡我們可以定義作為表主鍵的屬性。

provisioned-throughput:這定義了我們表的吞吐量(讀取和寫入),儘管這並不重要,因為它只是本地例項。

資料庫正常會有以下回復

3、dynamoose模組連線dynamodb-local

安裝dynamoose模組 npm install --save dynamoose

本地測試程式碼

const dynamoose = require("dynamoose");
dynamoose.aws.ddb.local("http://localhost:8042");

console.log('create cat model with default options');
const Cat = dynamoose.model('Cat', {
  id: Number,
  name: String
});
console.log('create a new cat object');
const garfield = new Cat({
  id: 666,
  name: 'Garfield'
});
console.log('save to local dynamodb');
garfield.save();
console.log('lookup in dynamodb');
Cat.get(666).then((badCat) => {
  console.log('badCat' + badCat);
  console.log(`Never trust a smiling cat. - ${badCat.name}`);
});

遠端可以把localhost換成ip地址試下,我本地環境外網不通,連不上aws執行報錯,可以自行測試。

 

相關文章