关于 Amazon DynamoDB 的学习和使用

news2024/11/26 10:20:37

文章主要针对于博主自己的技术栈,从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);

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全景剖析SSD SLC Cache缓存设计原理-2

四、SLC缓存对SSD的寿命是否有优化&#xff1f; 当使用QLC或TLC NAND闪存并将其切换到SLC模式进行写入时&#xff0c;会对闪存的寿命产生以下影响&#xff1a; 短期寿命提升&#xff1a; SLC模式下&#xff0c;每个存储单元仅存储一个比特数据&#xff0c;相对于QLC或TLC来说…

matlab学习002-函数及流程控制语句

目录 一&#xff0c;matlab编程基础 1&#xff09;matlab脚本和函数文件 ①脚本文件 ②函数文件 2&#xff09;函数的定义和调用 ①定义 ②调用 3&#xff09;程序流程控制 ①使用for求 122^2……2^622^63之和 ②使用while语句求122^2……2^622^63之和 ③使用matl…

【御控物联】 Java JSON结构转换(2):对象To对象——属性重组

文章目录 一、JSON结构转换是什么&#xff1f;二、案例之《JSON对象 To JSON对象》三、代码实现四、在线转换工具五、技术资料 一、JSON结构转换是什么&#xff1f; JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0c;生成新的JS…

【Python】实现导入、提交文件并显示其路径的基础GUI界面

The tkinter package (“Tk interface”) 是一个基于Tcl/Tk GUI工具标准的Python接口。集合在大多数操作系统都有Tk和tkinter 库&#xff0c;包括MacOS&#xff0c;Window还有一些Unix类的操作系统 【基础操作】 1 设置窗口 # -*- coding: utf-8 -*- from tkinter import *#创…

2024年认证杯SPSSPRO杯数学建模D题(第一阶段)AI绘画带来的挑战全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 D题 AI绘画带来的挑战 原题再现&#xff1a; 2023 年开年&#xff0c;ChatGPT 作为一款聊天型 AI 工具&#xff0c;成为了超越疫情的热门词条&#xff1b;而在 AI 的另一个分支——绘图领域&#xff0c;一款名为 Midjourney&#xff08;MJ&…

Matlab调C/C++简单模板例子

如果你是需要快速搭建一个matlab调c/c环境&#xff0c;这篇文章可以参考 有了c代码&#xff0c;想在matlab里面调用&#xff0c;可以参考我这个模板 matlab调用代码&#xff1a; clear all close all clcinput1 1; input2 2;[output1,output2] mexfunction(input1,input2);…

充电有喜分析

参考相关应用 华为市场 -> 充电有喜2.0.1网络查找 -> 充电有喜1.0.0 http://www.xz7.com/downinfo/609008.html反编译app有个文字漏洞&#xff0c;找到 来福充电宝 https://sj.qq.com/appdetail/com.evenhaexplo.courte 需要解决的问题 电源插拔注册为什么需要悬浮窗权…

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

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

[温故] 红黑树算法

前言 最近在突然想起一些基础的东西, 向着温故知新, 有了些新的感悟和大家分享一下. 排序算法是数据结构的一个重要组成部分, 当时学习的时候没有少折腾, 这里来看看大佬们怎么运用这些数据结构来构建庞大的计算机体系的. 二叉树是排序算法的一个衍生, 基于二叉树的构建不同…

【路径规划】基于六次多项式的多关节机器人避障路径规划

最近迷上了机械臂避障轨迹规划&#xff0c;因为之前一直做的都是无障碍物轨迹规划&#xff0c;所以这次想试一下有障碍物的&#xff0c;把避障算法用在我的SimMechanics机械臂上&#xff0c;看看效果咋样。以下定义不区分路径规划和轨迹规划。   by the way&#xff0c;本文实…

一种跳板机的实现思路

一、 跳板机思路简介 本文所描述的跳板机&#xff08;下文称为“jmp”&#xff09;支持&#xff1a; Linux服务器 Windows服务器 其他终端&#xff08;MySQL终端、Redis终端、网络设备终端 等等&#xff09; 有别于市面上常见的jumpserver方案&#xff0c;使用本文所搭建的跳…

CSS实现卡片在鼠标悬停时突出效果

在CSS中&#xff0c;实现卡片在鼠标悬停时突出&#xff0c;通常使用:hover伪类选择器。 :hover伪类选择器用于指定当鼠标指针悬停在某个元素上时&#xff0c;该元素的状态变化。通过:hover选择器&#xff0c;你可以定义鼠标悬停在元素上时元素的样式&#xff0c;比如改变颜色、…

最新PDD批发Anti-Content参数逆向分析与算法还原

文章目录 1. 写在前面2. 接口分析3. 分析与扣代码 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Py…

Java(今天偷懒一丢丢

今天学了一点点io流 基本概念 输入流&#xff08;InputStream&#xff09;&#xff1a;用于从数据源读取数据。输出流&#xff08;OutputStream&#xff09;&#xff1a;用于向目标写入数据。 分类 按功能分类 字节流&#xff1a;处理字节数据&#xff0c;如 InputStream 和…

CSS aspect-ratio属性设置元素宽高比

aspect-ratio 是CSS的一个属性&#xff0c;用于设置元素的期望宽高比。它设置确保元素保持特定的比例&#xff0c;不受其内容或容器大小的影响。 语法&#xff1a; aspect-ratio: <ratio>;其中 <ratio> 是一个由斜杠&#xff08;/&#xff09;分隔的两个数字&…

韩顺平 | 零基础快速学Python(12) OOP基础

面向对象编程-基础 类与对象 类提供了把数据和功能绑定在一起的方法。创建新类时创建了新的对象类型&#xff0c;从而能够创建该类型的新实例/对象。 类时抽象的概念&#xff0c;作为数据类型代表一类事物&#xff1b;对象时具体实际的&#xff0c;作为实例代表具体事物&…

【c语言】atoi函数---使用和模拟实现(详解)

atoi函数---使用和模拟实现 atoi函数在Cplusplus中的定义 atoi函数的使用 #include <stdio.h> #include <stdlib.h>int main() {char arr[20] "4831213";int ret 0;ret atoi(arr);printf("arr:%s\n", arr);printf("ret:%d\n", re…

JWT重放漏洞如何攻防?你的系统安全吗?

大家好&#xff0c;我是石头~ 在数字化浪潮席卷全球的今天&#xff0c;JSON Web Token&#xff08;JWT&#xff09;作为身份验证的利器&#xff0c;已成为众多Web应用的首选方案。 然而&#xff0c;正如硬币有两面&#xff0c;JWT的强大功能背后也隐藏着潜在的安全风险&#xf…

手把手教你如何下载学浪上的视频课程

学浪直播课程下载技术尚未攻克&#xff0c;但视频课程下载却易如反掌。 1.首先解压好我给大家准备好的压缩包 学浪下载器链接&#xff1a;https://pan.baidu.com/s/1y7vcqILToULrYApxfEzj_Q?pwdkqvj 提取码&#xff1a;kqvj --来自百度网盘超级会员V10的分享 2.首先解压我…

OpenHarmony编译构建系统

这篇来聊聊OpenHarmony的编译构建&#xff0c;经过前面的实践&#xff0c;再来看编译构建。 编译构建概述 在官网中提到了&#xff0c;OpenHarmony编译子系统是以GN和Ninja构建为基座&#xff0c;对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能…