之前我使用过环境变量并且工作正常.
现在我将配置变量迁移到单个文件中,并且我有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调用?
我正在尝试使用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) 我的问题与另一个问题相同:如何使用变量中的凭证运行 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 文件,但我无法找到解释如何将这些凭据传递给我的客户的文档页面。任何支持将不胜感激!
我正在使用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?
如何连接我的本地 minIO 存储aws-sdk-go-v2?我可以在以前版本的 go SDK 中找到如何执行此操作的清晰文档,但在 V2 中却找不到。我通读了版本 2 的源代码,似乎aws-sdk-go-v2删除了禁用 SSL 并指定本地 S3 端点的选项(服务 URL 必须采用亚马逊风格)。
我想通过使用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) 我在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) 我有一个启用了版本控制的 S3 存储桶。存储桶中几乎没有具有版本的文件。我编写了一个示例 golang 程序,它可以执行以下操作:
“BucketNotEmpty:您尝试删除的存储桶不为空。
您必须删除存储桶中的所有版本。”
您能否建议如何强制删除S3 存储桶中所有对象的所有版本,以便我最终可以使用 删除整个存储桶aws-sdk-go?
我已经创建了一个 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代码库,但都没有运气。与 …
我正在尝试转换简单的 DynamoDB 对象字符串:
{
"Item": {
"Id": {
"S": "db31"
},
"CreateTime": {
"N": "1647882237618915000"
}
}
Run Code Online (Sandbox Code Playgroud)
到任一dynamodb.AttributeValue映射到 go 对象(go 类型结构)或转换为简单的 JSON go 对象。
aws-sdk-go ×10
go ×9
aws-sdk ×5
amazon-s3 ×2
amazon-eks ×1
amazon-iam ×1
aws-iot ×1
aws-lambda ×1
json ×1
minio ×1