我是 Go lang 的初学者,我正在尝试使用 AWS 在 Go lang 和 Dynamodb 之间建立连接,并使用 Go lang 编写的 API 在 dynamodb 中插入数据。任何帮助,将不胜感激。
下面是我正在尝试做的代码:
package main
import "fmt"
import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/service/dynamodb"
"github.com/user/dynamo_connect/data"
)
func database_init() {
var testCredentials = credentials.NewStaticCredentials("Access_key", "secret_key", "")
sess, err := session.NewSession()
svc := dynamodb.New(sess, &aws.Config{
Region: aws.String("us-east-1"),
Credentials: testCredentials,
})
resp, err := data.UploadForumData(svc)
if err != nil {
fmt.Println("An error occurred while writing to the Employee table")
fmt.Println(err.Error())
}
fmt.Println(resp)
}
func main() {
database_init()
} …Run Code Online (Sandbox Code Playgroud)当使用添加新的依赖项时,dep ensure -add <package>我会看到dep添加了软件包的完整存储库,而不仅仅是我需要的部分。
比如我加AWS-SDK-去和dep ensure文件放87MB到我的文件夹的供应商,即使我只使用AWS秘密Manager服务。
我想得到一些数字来证明我的阅读,与关系数据库(MySQL、PostgreSQL、Aurora)相比,DynamoDB 键值存储具有更好的读取性能。所以我决定比较 DynamoDB 和 AWS-Aurora 的读取延迟(这是 AWS 网站的 a/c - “比标准 MySQL 数据库快五倍,比标准 PostgreSQL 数据库快三倍”)
步骤 1:在 Aurora 中使用以下架构创建一个表,并向该表添加 102 万条记录。
Table gift_log (
gift_uuid BINARY(16) NOT NULL,
user_uuid BINARY(16) NOT NULL,
parent_uuid BINARY(16),
operation_time TIMESTAMP,
operation VARCHAR(20) NOT NULL,
gift_type VARCHAR(20) NOT NULL,
parent_type VARCHAR(20),
relation_type VARCHAR(20),
PRIMARY KEY (gift_uuid)
);
Run Code Online (Sandbox Code Playgroud)
使用使用 MySQL 驱动程序的 Golang 客户端数据库/sql 包来查询表。
步骤2;创建了具有以下属性的 DynamoDB 表。向表中添加了 100 万个项目。没有使用任何排序键。所有查询都使用分区键。
Table: GiftLog {
gift_uuid Binary (Partition Key)
user_uuid Binary
operation_time Number,
operation String,
gift_type String, …Run Code Online (Sandbox Code Playgroud) 我正在尝试将消息从我的 lambda 函数发送到已创建的 sqs 队列。当我运行代码时,它实际上停止了执行并且 aws-sdk 不提供任何反馈。
当我手动插入消息时,我还有一个从队列中读取的函数,我使用相同的代码来创建会话。我相信这两种情况都可以使用。
然后我尝试使用亚马逊提供的代码,但结果是一样的。 https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/sqs-example-receive-message.html
我的代码的唯一区别是我如何创建会话。就像我上面提到的那样,这与我在将消息手动插入队列时读取消息的方式相同。在该功能上,一切似乎都很完美。
func sendToOrderQueue(rID string, c Course) error {
log.Println(1)
var err error
sess := session.Must(session.New(&aws.Config{
Region: aws.String("eu-central-1"),
}), err)
svc := sqs.New(sess)
log.Println(2)
url := "https://sqs.eu-central-1.amazonaws.com/XXXXXX/myqueue"
log.Println(3)
result, err := svc.SendMessage(&sqs.SendMessageInput{
DelaySeconds: aws.Int64(10),
MessageAttributes: map[string]*sqs.MessageAttributeValue{
"Title": &sqs.MessageAttributeValue{
DataType: aws.String("String"),
StringValue: aws.String("The Whistler"),
},
"Author": &sqs.MessageAttributeValue{
DataType: aws.String("String"),
StringValue: aws.String("John Grisham"),
},
"WeeksOn": &sqs.MessageAttributeValue{
DataType: aws.String("Number"),
StringValue: aws.String("6"),
},
},
MessageBody: aws.String("Information about current NY Times fiction bestseller for week of …Run Code Online (Sandbox Code Playgroud)