关于 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中

UnityInitializer.AttachToGameObject(this.gameObject);

3、参数

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

    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 控制台操作。

{
    "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:数据库地区,这个一般使用服务配置地区就可以。

脚本编写


    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

AWSCredentials credentials = new CognitoAWSCredentials(IdentityPoolId, _CognitoPoolRegion);

2、使用AWSCredentials 创建 IAmazonDynamoDB (Client)

IAmazonDynamoDB ddbClient = new AmazonDynamoDBClient(Credentials, _DynamoRegion);

3、执行查询操作

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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/539942.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小肥柴慢慢手写数据结构(C篇)(5-5 Huffuman编码)

小肥柴慢慢学习数据结构笔记&#xff08;C篇&#xff09;&#xff08;5-5 Huffman编码&#xff09; 目录5-16 编码案例5-17 Huffman编码原理5-18 Huffman编码/解码实现5-18-1 大致思路5-18-2 编码实现5-18-3 解码实现5-18-4 测试 5-19 实际案例总结参考文献 目录 5-16 编码案例…

Java 中文官方教程 2022 版(九)

原文&#xff1a;docs.oracle.com/javase/tutorial/reallybigindex.html 链接&#xff0c;符号或其他 原文&#xff1a;docs.oracle.com/javase/tutorial/essential/io/links.html 如前所述&#xff0c;java.nio.file包&#xff0c;特别是Path类是“链接感知”的。每个Path方法…

PDF转TXT ChatGPT编程

1.目的 在Z-library找到一本书&#xff0c;只不过是PDF格式的&#xff0c;看的时候体验不好&#xff0c;还没有办法保存记录&#xff0c;就想着能不能转成txt格式放到手机自带的小说软件中看。 不想去网上找相关的软件&#xff0c;可以还需要付钱&#xff0c;所以尝试用ChatGP…

安卓焦点窗口切换

一、背景 我们经常会遇到一种Application does not hava focused window的ANR异常&#xff0c;这种异常一般是没有焦点窗口FocusedWindow导致,且这类异常只会发生在key事件的派发&#xff0c;因为key事件是需要找到一个焦点窗口然后再派发&#xff0c;而触摸事件只需要找到当前…

Python零基础从小白打怪升级中~~~~~~~FaskAPI中的请求和响应

第二节&#xff1a;FastAPI中请求数据 一、URL请求参数 url请求参数是通过url请求地址携带的&#xff0c;例如&#xff0c;在以下 url 中&#xff1a; http://127.0.0.1:8000/items/?skip0&limit10这些请求参数是键值对的集合&#xff0c;这些键值对位于 URL 的 &#…

php反序列化(2)

一.pop链 在反序列化中&#xff0c;我们能控制的数据就是对象中的属性值&#xff08;成员变量&#xff09;&#xff0c;所以在php反序列化中有一种漏洞利用方法叫“面向属性编程”&#xff0c;即pop&#xff08;property oriented programming&#xff09;。 pop链就是利用魔…

ES6基础(JavaScript基础)

本文用于检验学习效果&#xff0c;忘记知识就去文末的链接复习 1. ECMAScript介绍 ECMAScript是一种由Ecma国际&#xff08;前身为欧洲计算机制造商协会&#xff0c;英文名称是European Computer Manufacturers Association&#xff09;通过ECMA-262标准化的脚本程序设计语言…

python(使用循环显示四种模式)

代码&#xff1a; # 模式A n int(input("请输入三角形的层数")) for i in range(1,n 1):for j in range(1,i 1):print(f"{j}\t", end" ")print()# 模式B n int(input("请输入三角形的层数")) for i in range(1,n 1):for j in rang…

点击notify里面的通知,实现路由跳转

需求描述&#xff1a; 右上角有出来通知用户的有代办任务的消息框&#xff0c;点击消息框会跳转到代办路由页面。 duration:3000//弹窗显示时间, 毫秒 getElementsByClassName() – 获取所有指定类名的元素 效果展示&#xff1a;

32单片机入门持续更新中

配套资料为野火霸道V2 初识 STM32 4.1 什么是 STM32 STM32&#xff0c;从字面上来理解&#xff0c;ST 是意法半导体&#xff0c;M 是 Microelectronics 的缩写&#xff0c;32 表示 32 位&#xff0c;合起 来理解&#xff0c;STM32 就是指 ST 公司开发的 32 位微控制器。在如今…

7.基础乐理-重升重降号、等音扩展篇

在 6.升降号、黑键的音名 这里知道了一个等音的概念&#xff0c;就是指的是同一个键&#xff0c;同一个音&#xff0c;拥有不同的名字&#xff0c;这些名字互相称为等音 在音乐中除了升降号&#xff0c;还有两个东西&#xff0c;一个长得像 x 叫重&#xff08;chong&#xff09…

React Router 5 vs 6:使用上的主要差异与升级指南

React Router 5 的一些API 在 React Router 6 上有时可能找不到&#xff0c;可能会看到如下画面&#xff1a;export ‘useHistory’ was not found in ‘react-router-dom’ … React Router目前有两个大的版本&#xff0c;即React Router 5、6。React Router 6 在设计上更加简…

分布式系统接口限流方案

Git地址&#xff1a;https://gitee.com/deepjava/test-api-limit.git 方案一、 Guava工具包 实现单机版限流 具体代码见git 方案二、Redis lua脚本 实现分布式系统的接口限流 具体代码见git

纯css实现左右拖拽改变盒子大小

效果&#xff1a; 代码 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html;charsetutf-8"><title></title><style>body {background-color: black;color: white;}.column {ove…

Linux C柔性数组(零长数组)

零长数组&#xff0c;大小为0&#xff0c;一般用在结构体中&#xff08;网络通信&#xff0c;省流&#xff09;&#xff0c;节省空间&#xff0c;方便善后&#xff08;相对于指针类型&#xff09;&#xff0c;我们通过具体例子进行理解。 常规定长数组 #include <stdio.h&…

MongoDB的安装和使用

1.MongoDB 安装 1.1 基于Docker安装 docker run --restartalways -d --name mongo -v /opt/mongodb/data:/data/db -p 27017:27017 mongo:4.0.6 1.2 客户端工具使用 MongoDB Compass | MongoDB 2.MongoDB 使用 2.1 引用依赖包 <dependency><groupId>org.sprin…

软件无线电系列——抽取器的多相滤波和内插器的多相滤波

本节目录 一、抽取器的多相滤波结构 二、内插器的多相滤波结构 三、一个抽取器多相滤波器的设计本节内容 从前面文章中可以知道&#xff0c;抽取器模型中的低通滤波器在抽取算子D之前&#xff0c;是在降低速率之前实现的&#xff1b;内插器模型中的低通滤波器在内插算子I之后&…

DedeCMS 未授权远程命令执行漏洞分析

dedecms介绍 DedeCMS是国内专业的PHP网站内容管理系统-织梦内容管理系统&#xff0c;采用XML名字空间风格核心模板&#xff1a;模板全部使用文件形式保存&#xff0c;对用户设计模板、网站升级转移均提供很大的便利&#xff0c;健壮的模板标签为站长DIY自己的网站提供了强有力…

[数据结构]—二叉树基本概念

1.树概念及结构 1.树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 有一个特殊的结点&#xff…

计算机网络 子网掩码与划分子网

一、实验要求与内容 1、需拓扑图和两个主机的IP配置截图。 2、设置网络A内的主机IP地址为“192.168.班内学号.2”&#xff0c;子网掩码为“255.255.255.128”&#xff0c;网关为“192.168.班内学号.1”&#xff1b;设置网络B内的主机IP地址为“192.168.班内学号100.2”&#…