Golang中SQS的GetQueueAttributesInput使用指南
Golang中SQS的GetQueueAttributesInput使用指南 尝试获取 AWS SQS 队列的属性。我刚开始使用 Go SDK v2。在编译时遇到以下错误:
无法将
*string{...}(类型*string)用作字段值中的类型"github.com/aws/aws-sdk-go-v2/service/sqs/types".QueueAttributeName
正在执行的代码如下:
params := &sqs.GetQueueAttributesInput{
QueueUrl: aws.String(queueUrl[i]),
AttributeNames: []*string{
aws.String("QueueArn"),
},
}
resp, err := client.GetQueueAttributes(context.TODO(), params)
这是 Go AWS SDK v1/v2 的问题吗?关于如何修复有什么想法吗?任何帮助都将不胜感激。
更多关于Golang中SQS的GetQueueAttributesInput使用指南的实战教程也可以访问 https://www.itying.com/category-94-b0.html
错误提示指出,您不应使用字符串指针切片,而应使用 types.QueueAttributeName 类型的切片。
您的 AWS 库很可能附带了一些预定义的常量,其中一个是用于 QueueArn 的。
更多关于Golang中SQS的GetQueueAttributesInput使用指南的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在 AWS SDK for Go v2 中,GetQueueAttributesInput 的 AttributeNames 字段类型已从 v1 的 []*string 更改为 []types.QueueAttributeName。你需要使用预定义的常量而不是字符串字面量。
以下是修正后的代码示例:
import (
"context"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/sqs"
"github.com/aws/aws-sdk-go-v2/service/sqs/types"
)
params := &sqs.GetQueueAttributesInput{
QueueUrl: aws.String(queueUrl[i]),
AttributeNames: []types.QueueAttributeName{
types.QueueAttributeNameQueueArn,
},
}
resp, err := client.GetQueueAttributes(context.TODO(), params)
可用的属性名常量包括:
types.QueueAttributeNameAlltypes.QueueAttributeNamePolicytypes.QueueAttributeNameVisibilityTimeouttypes.QueueAttributeNameMaximumMessageSizetypes.QueueAttributeNameMessageRetentionPeriodtypes.QueueAttributeNameApproximateNumberOfMessagestypes.QueueAttributeNameApproximateNumberOfMessagesNotVisibletypes.QueueAttributeNameCreatedTimestamptypes.QueueAttributeNameLastModifiedTimestamptypes.QueueAttributeNameQueueArntypes.QueueAttributeNameApproximateNumberOfMessagesDelayedtypes.QueueAttributeNameDelaySecondstypes.QueueAttributeNameReceiveMessageWaitTimeSecondstypes.QueueAttributeNameRedrivePolicytypes.QueueAttributeNameFifoQueuetypes.QueueAttributeNameContentBasedDeduplicationtypes.QueueAttributeNameKmsMasterKeyIdtypes.QueueAttributeNameKmsDataKeyReusePeriodSecondstypes.QueueAttributeNameDeduplicationScopetypes.QueueAttributeNameFifoThroughputLimittypes.QueueAttributeNameRedriveAllowPolicytypes.QueueAttributeNameSqsManagedSseEnabled
如果需要获取所有属性,可以使用:
params := &sqs.GetQueueAttributesInput{
QueueUrl: aws.String(queueUrl[i]),
AttributeNames: []types.QueueAttributeName{
types.QueueAttributeNameAll,
},
}
这个类型变更确保了编译时的类型安全,避免了使用无效的属性名字符串。

