关于 Amazon DynamoDB 的学习和使用

文章主要针对于博主自己的技术栈,从Unity的角度出发,对于 DynamoDB 的使用。

绿色通道:
WS SDK for .NET Version 3 API Reference - AmazonDynamoDBClient

Amazon DynamoDB

Amazon DynamoDB is a fast, highly scalable, highly available, cost-effective, non-relational database service. DynamoDB removes traditional scalability limitations on data storage while maintaining low latency and predictable performance.

Amazon DynamoDB 是一种快速、高度可扩展、高度可用、经济高效的非关系数据库服务。 DynamoDB 消除了数据存储的传统可扩展性限制,同时保持低延迟和可预测的性能。

集成使用

1、下载SDK

参考地址:https://docs.aws.amazon.com/mobile/sdkforunity/developerguide/what-is-unity-plugin.html

下载链接:https://sdk-for-net.amazonwebservices.com/latest/aws-sdk-unity.zip

AWS Mobile SDK for Unity

这个SDK 包涵了 Amazon DynamoDB 的相关内容。所以直接下载整个 AWS Mobile SDK for Unity 即可。

下载之后是这样的,我们只用 AWSSDK.DynamoDBv2.3.3.106.47.unitypackage 这个就可以,其余的是其他模块的SDK,不用理会。

2、集成指南

使用通常的方法导入上面下载的 unitypackage,

使用 SDK 的功能性 API 之前需要进行一系列的准备工作。

首先初始化代码,一般在场景启动时候就可以调用。将代码放到你自己的脚本 Start 或者 Awake中

csharp 复制代码
UnityInitializer.AttachToGameObject(this.gameObject);

3、参数

使用DB之前需要准备到3个参数

csharp 复制代码
    private string IdentityPoolId = "<**>";
    private string CognitoPoolRegion = RegionEndpoint.USEast2.SystemName;
    private string DynamoRegion = RegionEndpoint.USEast2.SystemName;

IdentityPoolId: 身份池id

这个身份池id代表了访问数据库的权限标识,关联在您的AWS账号的身份池中(配置通道) 如果没有需要先创建一个 identityPool,创建过程中需要配置访问权限,

可配置的权限访问类型有:

Authenticated access:有身份认证的访问

Guest access:访客访问

我这里直接使用 Guest access 访问数据库就可以了。

每一个访问类型都需要创建一个Role(权限身份)

并且权限身份需要配置 权限策略(Permissions policies)

Permissions policies是一个远端维护的 json 文件,修改也可以直接在 AWS 控制台操作。

bash 复制代码
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cognito-identity:GetCredentialsForIdentity",
                "dynamodb:DeleteItem",
                "dynamodb:GetItem",
                "dynamodb:PutItem",
                "dynamodb:Scan",
                "dynamodb:UpdateItem",
                "dynamodb:DescribeTable",
                "dynamodb:Query"
            ],
            "Resource": [
                "*",
                "arn:aws:dynamodb:us-east-2:768281874750:table/TestLei"
            ]
        }
    ]
}

权限项目说明:

"dynamodb:DeleteItem",删除表格项的权限

如果没有配置对应的权限,在操作表格的时候就会被提示没有对应的权限,返回错误。

CognitoPoolRegion:身份池地区

一般IdentityPoolId最前面会有地区字符类似:

us-east-2:XXXXXXXXXXXXX

DynamoRegion:数据库地区,这个一般使用服务配置地区就可以。

脚本编写

csharp 复制代码
    private string IdentityPoolId = "";
    private string CognitoPoolRegion = RegionEndpoint.USEast2.SystemName;
    private string DynamoRegion = RegionEndpoint.USEast2.SystemName;
    private RegionEndpoint _CognitoPoolRegion
    {
        get { return RegionEndpoint.GetBySystemName(CognitoPoolRegion); }
    }

    private RegionEndpoint _DynamoRegion
    {
        get { return RegionEndpoint.GetBySystemName(DynamoRegion); }
    }

1、创建 AWSCredentials

csharp 复制代码
AWSCredentials credentials = new CognitoAWSCredentials(IdentityPoolId, _CognitoPoolRegion);

2、使用AWSCredentials 创建 IAmazonDynamoDB (Client)

csharp 复制代码
IAmazonDynamoDB ddbClient = new AmazonDynamoDBClient(Credentials, _DynamoRegion);

3、执行查询操作

csharp 复制代码
Client.DescribeTableAsync(request, (result) =>
        {
            if (result.Exception != null)
            {
                _displayText.text += $"Exception! info:\t\n";
                _displayText.text += result.Exception.Message;
                Debug.Log(result.Exception);
                return;
            }

            var response = result.Response;
            TableDescription description = response.Table;
            _displayText.text += ("Name: " + description.TableName + "\n");
            _displayText.text += ("# of items: " + description.ItemCount + "\n");
            _displayText.text += ("Provision Throughput (reads/sec): " +
                                  description.ProvisionedThroughput.ReadCapacityUnits + "\n");
            _displayText.text += ("Provision Throughput (reads/sec): " +
                                  description.ProvisionedThroughput.WriteCapacityUnits + "\n");
        }, null);
相关推荐
Francek Chen7 个月前
Amazon云计算AWS(二)
服务器·云计算·aws·非关系型数据库·dynamodb·simpledb
秋叶原の黑猫1 年前
几个常用的nosql数据库的操作方式
数据库·mongodb·elasticsearch·go·nosql·dynamodb