DynamoDB Local使用(一)

DynamoDB Local使用(一)DynomaDBLocal使用(一)前提下载启动访问create-tablelist-tablesdescribe-tableupdate-tabledelete-tableput-itemget-itemdelete-itemquery使用DynomaDBLocal可以不用访问DynamoDBWeb,实现本地的测试,节省预置的吞吐量、数据存储和数据传输费用。参照:设置Dyna…

使用 DynamoDB Local 可以不用访问 DynamoDB Web,实现本地的测试,节省预置的吞吐量、数据存储和数据传输费用。

参照:
设置 DynamoDB Local (可下载版本).

官方提供了三种方式

  • jar包本地运行
  • Maven依赖运行
  • Docker配置

本节测试第一种方式。

前提

  • JRE 6.x版本 以上

下载

参照: 计算机上的 DynamoDB(可下载版本).
下载,解压后到目录。

启动

// PowerShell
PS C:\Users\user> cd C:\Work\dynamodb-local
PS C:\Work\dynamodb-local> java -D"java.library.path=./DynamoDBLocal_lib" -jar DynamoDBLocal.jar -sharedDb
Initializing DynamoDB Local with the following configuration:
Port:   8000
InMemory:       false
DbPath: null
SharedDb:       true
shouldDelayTransientStatuses:   false
CorsParams:     *
主要命令选项 概要
-help 帮助
-sharedDb DynamoDB 将创建一个名为 shared-local-instance.db 的数据库文件。连接到 DynamoDB 的每个程序都将访问此文件,实现协作共享。使用AWS-CLI或者工具包访问DB时,创建DB,启动时会看不到该文件。省略 -sharedDb,则数据库文件出现在应用程序配置中时,将命名为 myaccesskeyid_region.db(包含 AWS 访问密钥 ID 和区域)
-inMemory DynamoDB 完全不会编写任何数据库文件。所有数据将被写入内存中。不能同时指定 -dbPath 和 -inMemory
-dbPath DynamoDB 写入数据库文件的目录。如果您未指定此选项,则文件将写入到当前目录。
-optimizeDbBeforeStartup 在计算机上启动 DynamoDB 之前优化底层数据库表。必须指定 -dbPath 参数,以便 DynamoDB 可找到其数据库文件
-cors 跨源资源共享 (CORS) 的支持。必须提供特定域的逗号分隔“允许”列表。-cors 的默认设置是星号 (*),这将允许公开访问。
-delayTransientStatuses 使 DynamoDB 为某些操作引入延迟。DynamoDB (下载版本) 几乎可以即时执行某些任务,如针对表和索引的创建/更新/删除操作。
-port 默认情况下,DynamoDB 使用端口 8000

命令行访问

启动后,可以通过本地终端节点(http://localhost:8000)默认8000端口,访问DB,使用参数
–endpoint-url
使用 AWS-CLI访问DynamoDB
详细命令参照 Available Commands
或者AWS API Documentation

create-table

//创建计算机上的 DynamoDB 的表
aws dynamodb create-table
–table-name Music
–attribute-definitions
AttributeName=Artist,AttributeType=S
AttributeName=SongTitle,AttributeType=S
–key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE
–provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1
–endpoint-url http://localhost:8000

自动返回Json格式的结果

{ 
   
    "TableDescription": { 
   
        "TableArn": "arn:aws:dynamodb:ddblocal:000000000000:table/Music",
        "AttributeDefinitions": [
            { 
   
                "AttributeName": "Artist",
                "AttributeType": "S"
            },
            { 
   
                "AttributeName": "SongTitle",
                "AttributeType": "S"
            }
        ],
        "ProvisionedThroughput": { 
   
            "NumberOfDecreasesToday": 0,
            "WriteCapacityUnits": 1,
            "LastIncreaseDateTime": 0.0,
            "ReadCapacityUnits": 1,
            "LastDecreaseDateTime": 0.0
        },
        "TableSizeBytes": 0,
        "TableName": "Music",
        "BillingModeSummary": { 
   
            "LastUpdateToPayPerRequestDateTime": 0.0,
            "BillingMode": "PROVISIONED"
        },
        "TableStatus": "ACTIVE",
        "KeySchema": [
            { 
   
                "KeyType": "HASH",
                "AttributeName": "Artist"
            },
            { 
   
                "KeyType": "RANGE",
                "AttributeName": "SongTitle"
            }
        ],
        "ItemCount": 0,
        "CreationDateTime": 1551148098.869
    }
}

list-tables

//列出计算机上的 DynamoDB 中的表
aws dynamodb list-tables –endpoint-url http://localhost:8000

结果

{ 
   
    "TableNames": [
        "Music"
    ]
}

describe-table

//列出计算机上的 DynamoDB 表的具体信息
aws dynamodb describe-table –table-name “Music” –endpoint-url http://localhost:8000

结果

内容和表创建后返回的内容一样

update-table

//update-table
aws dynamodb update-table –endpoint-url http://localhost:8000 –table-name test –provisioned-throughput ReadCapacityUnits=2,WriteCapacityUnits=2

返回表的描述信息,可以确认变更内容

{ 
   
    "TableDescription": { 
   
        "TableArn": "arn:aws:dynamodb:ddblocal:000000000000:table/test",
        "AttributeDefinitions": [
            { 
   
                "AttributeName": "testId",
                "AttributeType": "S"
            }
        ],
        "ProvisionedThroughput": { 
   
            "NumberOfDecreasesToday": 0,
            "WriteCapacityUnits": 2,
            "LastIncreaseDateTime": 0.0,
            "ReadCapacityUnits": 2,
            "LastDecreaseDateTime": 0.0
        },
        "TableSizeBytes": 0,
        "TableName": "test",
        "BillingModeSummary": { 
   
            "LastUpdateToPayPerRequestDateTime": 0.0,
            "BillingMode": "PROVISIONED"
        },
        "TableStatus": "ACTIVE",
        "KeySchema": [
            { 
   
                "KeyType": "HASH",
                "AttributeName": "testId"
            }
        ],
        "ItemCount": 0,
        "CreationDateTime": 1551149210.869
    }
}

delete-table

//delete-table
aws dynamodb delete-table –endpoint-url http://localhost:8000 –table-name test2

结果

返回删除对象表的JSON描述信息

put-item

–item后面可以直接写JSON格式字符串或者做成文件导入也可以

// DynamoDB 中的表里添加数据
aws dynamodb put-item –endpoint-url http://localhost:8000 –table-name test –item ‘{“testId”: {“S”: “1” } }’ –return-consumed-capacity TOTAL
或者
aws dynamodb put-item –table-name “Music” –item file://C:\Work\dynamodb-local\put-item.json –return-consumed-capacity TOTAL –endpoint-url http://localhost:8000
结果

{ 
   
    "ConsumedCapacity": { 
   
        "CapacityUnits": 1.0,
        "TableName": "Music"
    }
}

get-item

//获取 DynamoDB 中表的数据
aws dynamodb get-item –endpoint-url http://localhost:8000 –table-name test –key ‘{“testId”: {“S”: “1” } }’
结果

{ 
   
    "Item": { 
   
        "testId": { 
   
            "S": "1"
        }
    }
}

delete-item

//delete-item
aws dynamodb delete-item –endpoint-url http://localhost:8000 –table-name test –key ‘{“testId”: {“S”: “1” } }’

query

//query
aws dynamodb query –endpoint-url http://localhost:8000 –table-name Music –projection-expression “SongTitle” –key-condition-expression “Artist = :v1” –expression-attribute-values file://C:\Work\kou\dynamodb-local\expression-attributes.json

结果

{ 
   
    "Count": 1,
    "Items": [
        { 
   
            "SongTitle": { 
   
                "S": "Call Me Today"
            }
        }
    ],
    "ScannedCount": 1,
    "ConsumedCapacity": null
}

Browser访问

http://localhost:8000/shell/

put-item

AWS.config.endpoint = new AWS.Endpoint('http://localhost:8000');
var dynamodb = new AWS.DynamoDB();
var params = { 
   
    TableName: 'Persons',
    Item:{ 
   
        'Id':{ 
   N: '2'},
        'Name':{ 
   S: 'Daniel'},
        'Gender':{ 
   S: 'male'},
        'Height':{ 
   N: '175.5'}
    }
};
dynamodb.putItem(params);

get-item

AWS.config.endpoint = new AWS.Endpoint('http://localhost:8000');
var dynamodb = new AWS.DynamoDB();
var params = { 
   
    TableName: 'test',
    Key:{ 
   
        'testId':{ 
   S: '1'}
    }
};
dynamodb.getItem(params, function(err,data){ 
   
	if(err){ 
   
		console.log(err);
	} else { 
   
		console.log(data);
	}
});

今天的文章DynamoDB Local使用(一)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/25187.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注