aws-sdk-go describeStacks() 试图获取堆栈列表或从堆栈名称中获取堆栈



首先,我为我的英语道歉,我建议我是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)
}

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

O 继续得到或"没有足够的参数调用 svc。描述堆栈"或"alidationException:请不要提供参数或一个或多个堆栈 ID"或"!v(PANIC=reflect:反射的调用。值.零值接口(">

所以我正在尝试很多方法..不仅仅是我粘贴在这里的方法..这就是为什么差异结果...更改为 (( 到 (nil( 等。省略参数,以便我可以获取所有堆栈的列表。我确定很傻,知道吗?我在谷歌等中有搜索,但所有示例都适用于 ec2 或 s3...

得到了一个在Github主问题站点中有效的响应。

我看到感谢您的澄清。您在180498284中列出的示例实际上是获取所有堆栈 ID 列表的最佳方式。

要从响应中检索单个堆栈 ID,请使用 opsworks 的字段。描述堆栈输出结构。这个结构有一个字段堆栈,它是一个操作列表。堆栈结构。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 stackidn", stackName)
       fmt.Println(aws.StringValue(stack.StackId))
   }
}

奥斯。字符串值函数是将 SDK 的输入/输出结构的字符串指针类型转换为值的帮助程序。它还可以防止值为 nil,它将返回空字符串。

最新更新