标签: aws-sdk-go-v2

简化 AWS SDK GO v2 测试/模拟

Amazon 有一篇非常有用的文章,描述了如何对AWS SDK Go v2 进行单元测试。我理解他们放弃 v1 API 单元测试的“旧”方式的动机,我认为这与CodeReviewComment一致。

然而,我遇到了一种对我造成严重破坏的情况。

假设我正在打电话s3.HeadObject(),如果满足某些任意条件,我就会打电话s3.GetObject()。因此,我设计了我的 API,以便我可以分别为每个操作创建客户端 API(在pseudoGo 中)。

type HeadObjectAPIClient interface {
    HeadObject(ctx context.Context, params *s3.HeadObjectInput, optFns ...func(*s3.Options)) (*s3.HeadObjectOutput, error)
}

func GetHeadObject(api HeadObjectAPIClient, params...) (*s3.HeadObjectOutput, error) {
    /* setup logic */
    return api.HeadObject( /* params */ )
}

type GetObjectAPIClient interface {
    GetObject(ctx context.Context, params *s3.GetObjectInput, optFns ...func(*s3.Options)) (*s3.GetObjectOutput, error)
}

func GetObject(api GetObjectAPIClient, params...) (*s3.GetObjectOutput, error) {
    /* setup logic */
    return api.GetObject( /* …
Run Code Online (Sandbox Code Playgroud)

unit-testing mocking go aws-sdk-go-v2

13
推荐指数
0
解决办法
4013
查看次数

aws-sdk-go-v2 自定义记录器

使用 SDK v1,我可以使用 logrus 作为我的自定义记录器,例如:

    Logger: aws.LoggerFunc(func(args ...interface{}) {
        log.WithField("process", "s3").Debug(args...)
    }),
Run Code Online (Sandbox Code Playgroud)

sdk v2 对此有所改变,https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/logging/

看来我需要按照https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/config#WithLogger使用logging.logger

我很难使用 logrus 来达到此目的,有人可以建议我在这里需要做什么吗?

go logrus aws-sdk-go-v2

7
推荐指数
1
解决办法
1024
查看次数

将 DynamoDB JSON 转换为 AttributeValue、Go 对象或 Json

我正在尝试转换简单的 DynamoDB 对象字符串:

{
  "Item": {
    "Id": {
      "S": "db31"
    },
    "CreateTime": {
      "N": "1647882237618915000"
    }
}
Run Code Online (Sandbox Code Playgroud)

到任一dynamodb.AttributeValue映射到 go 对象(go 类型结构)或转换为简单的 JSON go 对象。

我认为,Java中有类似的答案(1、2、3 我在Golang中没有找到类似的实现。

json go amazon-dynamodb aws-sdk-go aws-sdk-go-v2

6
推荐指数
1
解决办法
1209
查看次数