jjzjj

amazon-web-services - aws-sdk-go describeStacks() 试图获取 stackids 列表或从堆栈名称获取 stackid

coder 2024-07-10 原文

首先,我为我的英语道歉,我建议我是 Go 的新手。 我正在尝试获取我的 opsworks 堆栈中所有 stackId 的列表, 或像我对 ruby​​ sdk 所做的那样提供堆栈名称并获取堆栈 ID,以便我可以与其他服务调用一起使用,但现在我正在尝试让它们全部熟悉 sdk。

func main() {

        svc := opsworks.New(session.New(&aws.Config{
                Region:      aws.String("us-east-1"),
                Credentials: credentials.NewSharedCredentials("", "development"),
        })) 


        resp, err := svc.DescribeStacks()
        if err != nil {
                fmt.Println(err.Error())
                return
        }       

        fmt.Println(resp)
}

我省略“params”的原因是因为: http://docs.aws.amazon.com/sdk-for-go/api/service/opsworks.html#type-DescribeStacksInput 表示:“指定要描述的堆栈的堆栈 ID 数组。如果省略此参数,DescribeStacks 将返回每个堆栈的描述。”

O 继续获取或“调用 svc.DescribeStacks 时参数不足” 或“alidationException:请不提供任何参数或一个或多个堆栈 ID”或“!v(PANIC = reflect:在零值上调用 reflect.Value.Interface)”

所以我尝试了很多方法..不仅仅是我粘贴在这里的那个..这就是为什么 diff 结果...更改为 () 到 (nil) 等..省略参数所以我可以获得一个列表所有的堆栈。 我肯定很傻,知道吗?我在谷歌等搜索,但所有示例都是针对 ec2 或 s3 的...

最佳答案

在主要的 github 问题站点上得到了有效的响应。

我明白了,谢谢你的澄清。您在 180498284 中列出的示例实际上是获取所有堆栈 ID 列表的最佳方式。

要从响应中检索各个堆栈 ID,您可以使用 opsworks.DescribeStacksOutput 结构的字段。这个结构有一个 Stacks 字段,它是 opsworks.Stack 结构的列表。 StackId 是此结构上的一个字段。

resp, err := svc.DescribeStacks(nil)
if err != nil {
    return err
}

for _, stack := range resp.Stacks {
   stackName := aws.StringValue(stack.Name)
   if stackName == owstackname {
       fmt.Printf("found %s stackid\n", stackName)
       fmt.Println(aws.StringValue(stack.StackId))
   }
}

aws.StringValue 函数是将 SDK 输入/输出结构的字符串指针类型转换为值的助手。它还可以防止值为 nil 时返回空字符串。

关于amazon-web-services - aws-sdk-go describeStacks() 试图获取 stackids 列表或从堆栈名称获取 stackid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35196823/

有关amazon-web-services - aws-sdk-go describeStacks() 试图获取 stackids 列表或从堆栈名称获取 stackid的更多相关文章

随机推荐