标签: aws-sdk-go

如何使用变量的凭据运行AWS SDK?

之前我使用过环境变量并且工作正常.

现在我将配置变量迁移到单个文件中,并且我有AWS_SECRET_ACCESS_KEY和AWS_ACCESS_KEY_ID变量,这些变量包含从此文件加载的相应值.

我尝试了这段代码但收到错误:

creds := credentials.NewStaticCredentials("123", conf.AWS_SECRET_ACCESS_KEY, conf.AWS_ACCESS_KEY_ID)
sess, err := session.NewSession(&aws.Config{Credentials: creds})
Run Code Online (Sandbox Code Playgroud)

这是错误

InvalidClientTokenId:请求中包含的安全令牌无效.

如何正确地将我的密钥注入aws sdk调用?

go amazon-web-services aws-sdk aws-sdk-go

11
推荐指数
2
解决办法
5878
查看次数

将map [string] DynamoDBAttributeValue解组成一个struct

我正在尝试使用aws-sdk-go设置AWS-lambda ,只要将新user内容添加到某个dynamodb表,就会触发该事务.

一切都工作得很好,但我找不到解组地图的方法,map[string]DynamoDBAttributeValue如:

{
    "name": {
        "S" : "John"
    },
    "residence_address": {
        "M": {
            "address": {
                "S": "some place"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

对于给定的结构,例如,User结构.这里显示了一个map[string]*dynamodb.AttributeValue将一个unmarhaling 到一个给定接口的例子,但我找不到一种方法来做同样的事情,map[string]DynamoDBAttributeValue即使这些类型似乎适合相同的目的.

map[string]DynamoDBAttributeValueevents.DynamoDBEvents从包中返回github.com/aws/aws-lambda-go/events.这是我的代码:

package handler

import (
    "context"
    "github.com/aws/aws-lambda-go/events"
    "github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute"
    "github.com/aws/aws-sdk-go/service/dynamodb"
)

func HandleDynamoDBRequest(ctx context.Context, e events.DynamoDBEvent) {

    for _, record := range e.Records {

        if record.EventName == "INSERT" {

            // User Struct
            var dynamoUser …
Run Code Online (Sandbox Code Playgroud)

go amazon-dynamodb aws-lambda aws-sdk-go

10
推荐指数
2
解决办法
2981
查看次数

如何使用变量中的凭证运行 AWS SDK 版本 2?

我的问题与另一个问题相同:如何使用变量中的凭证运行 AWS SDK?但我使用的是 SDK 版本 2,它不再使用 Session(如果我理解正确的话)。

因此,我正在创建一个新客户端,并且我将凭据作为变量。我需要使用 IAM 服务。这是函数:

func getIAMClient(ctx context.Context) (*iam.Client, error) {
    cfg, err := config.LoadDefaultConfig(ctx, config.WithRegion("no-region"))
    if err != nil {
        return nil, errors.Wrap(err)
    }

    cfg.HTTPClient, err = getHTTPClient(ctx)
    if err != nil {
        return nil, err
    }

    return iam.NewFromConfig(cfg), nil
}
Run Code Online (Sandbox Code Playgroud)

不同的用户将同时使用该应用程序,因此我不能只使用 ENV 文件,但我无法找到解释如何将这些凭据传递给我的客户的文档页面。任何支持将不胜感激!

go amazon-web-services amazon-iam aws-sdk-go

10
推荐指数
1
解决办法
6311
查看次数

如何使用 AWS golang v2 SDK 配置 S3ForcePathStyle?

我正在使用AWS golang v2 SDK将文件放入 S3 并读取文件。在本地,我使用本地堆栈,因此需要设置 param S3ForcePathStyle。但是,我找不到在配置中设置此参数的位置。

这就是我的配置:

conf, err = config.LoadDefaultConfig(
            context.TODO(),
            config.WithRegion("us-east-1"),
            config.WithEndpointResolver(
                aws.EndpointResolverFunc(func(service, region string) (aws.Endpoint, error) {
                    return aws.Endpoint{
                        PartitionID:   "aws",
                        URL:           "http://localstack:4566",
                        SigningRegion: "us-east-1",
                    }, nil
                }),
            ),
        )
Run Code Online (Sandbox Code Playgroud)

我可以从哪里进去S3ForcePathStyle = true

amazon-s3 go amazon-web-services aws-sdk aws-sdk-go

8
推荐指数
1
解决办法
5939
查看次数

aws-go-sdk-v2 是否与本地 MinIO 服务器集成?

如何连接我的本地 minIO 存储aws-sdk-go-v2?我可以在以前版本的 go SDK 中找到如何执行此操作的清晰文档,但在 V2 中却找不到。我通读了版本 2 的源代码,似乎aws-sdk-go-v2删除了禁用 SSL 并指定本地 S3 端点的选项(服务 URL 必须采用亚马逊风格)。

go aws-sdk minio aws-sdk-go

8
推荐指数
1
解决办法
3033
查看次数

使用Golang-AWS-SDK IoTDataPlane向AWS IoT发送HTTP POST

我想通过使用AWS-SDK通过HTTP在golang中通过AWS IoT向MQTT主题发送消息,
当尝试使用以下代码时,它不成功.答复是:

ResourceNotFoundException: Not Found
status code: 404, request id: 3d2c0f11-09f6-4e86-94bf-ea877a30ebcd
Run Code Online (Sandbox Code Playgroud)

以下是我使用的代码:

package main


import (
        "github.com/aws/aws-sdk-go/aws"
        "github.com/aws/aws-sdk-go/aws/session"
        "github.com/aws/aws-sdk-go/service/iotdataplane"
        "fmt"
)


func main(){
svc := iotdataplane.New(session.New(), &aws.Config {Region: aws.String("us-west-2"), Endpoint: aws.String("https://YOUR_PREFIX.iot.us-west-2.amazonaws.com")})

params := &iotdataplane.PublishInput{
        Topic:   aws.String("mytopic"), // Required
        Payload: []byte("PAYLOAD"),
        Qos:     aws.Int64(0),
}
resp, err := svc.Publish(params)

if err != nil {
        // Print the error, cast err to awserr.Error to get the Code and
        // Message from an error.
        fmt.Println(err.Error())
        return
}

// Pretty-print the response data.
fmt.Println(resp) …
Run Code Online (Sandbox Code Playgroud)

go amazon-web-services aws-sdk aws-iot aws-sdk-go

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

如何仅使用分区键从aws Dynamodb获取数据?

我在Golang中使用aws-sdk-go库来进行DynamoDb连接.

我的DynamoDb表有一个分区键DeviceId(String)和一个Sort Key Time(Number).如何编写GetItemInput以获取具有特定DeviceId的所有数据?

params := &dynamodb.GetItemInput{

    Key:    map[string]*dynamodb.AttributeValue {
        "DeviceId": {
            S: aws.String("item_1"),
        },
    },
    ExpressionAttributeNames: map[string]*string{
        "DeviceId": "DeviceId",
    },
    TableName:  aws.String("DbName"), 
}

list, err := svc.GetItem(params)
Run Code Online (Sandbox Code Playgroud)

go amazon-web-services amazon-dynamodb aws-sdk aws-sdk-go

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

如何强制删除 S3 存储桶中对象的所有版本,然后最终使用 aws-sdk-go 删除整个存储桶?

我有一个启用了版本控制的 S3 存储桶。存储桶中几乎没有具有版本的文件。我编写了一个示例 golang 程序,它可以执行以下操作:

  • GetBucketVersioning - 可以获取存储桶版本控制状态,即已启用
  • ListObjects - 它能够列出存储桶对象
  • DeleteObjects - 它能够删除存储桶对象(但它只是将“删除标记”添加到每个对象的最新版本中。对象的版本历史仍然未删除)
  • DeleteBucket:此操作失败并显示错误消息:

“BucketNotEmpty:您尝试删除的存储桶不为空。
您必须删除存储桶中的所有版本。”

您能否建议如何强制删除S3 存储桶中所有对象的所有版本,以便我最终可以使用 删除整个存储桶aws-sdk-go

amazon-s3 go amazon-web-services aws-sdk-go

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

无法在 Go 代码中获取 AWS EKS 集群的 kubeconfig

我已经创建了一个 AWS EKS 集群。为了获得它的 kubeconfig,我通常aws eks update-kubeconfig --name cluster-name --region us-west-2使用 shell运行。

但是,我现在希望在 Go 中获取 kubeconfig,而无需在 shell 中运行任何东西(目标是在 Go 测试中创建并操作 EKS 集群)。我可以使用以下代码描述 EKS 集群:

package main

import (
    "fmt"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/eks"
)

func main() {
    sess := session.Must(session.NewSession(&aws.Config{
        Region: aws.String("us-west-2"),
    }))
    eksSvc := eks.New(sess, aws.NewConfig().WithRegion("us-west-2"))


    clusterOutput, err := eksSvc.DescribeCluster(&eks.DescribeClusterInput{
        Name: aws.String("cluster-name"),
    })
    if err != nil {
        panic(err)
    }
    fmt.Printf("%#v\n", clusterOutput)
}
Run Code Online (Sandbox Code Playgroud)

在那之后,我目前不知道如何获取该集群的 kubeconfig,以便将其与 Go 客户端一起用于 Kubernetes,而无需aws eks单独使用。

到目前为止,我已经检查了 AWS 文档、AWS CLI 代码库和eksctl代码库,但都没有运气。与 …

amazon-web-services aws-sdk-go amazon-eks

6
推荐指数
2
解决办法
1655
查看次数

将 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
查看次数