【问题标题】:GO-AWS-SDK to access instance information on AWSGO-AWS-SDK 访问 AWS 上的实例信息
【发布时间】:2020-09-15 02:50:57
【问题描述】:

我指的是aws-go SDK中的以下函数:https://docs.aws.amazon.com/sdk-for-go/api/aws/client/#New

我是 aws/go SDK for aws 的新手(更像是一个周末项目)

我想在我的 localhost 机器上创建一个客户端,以便它可以登录我的 AWS 账户并给我一个在 aws 账户上运行的所有实例的列表。

现在,我只是尝试登录帐户

源代码:

package main

import (
    "fmt"
    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/client"
    "github.com/aws/aws-sdk-go/aws/client/metadata"
    "github.com/aws/aws-sdk-go/aws/request"
)


func main() {

    param1:=aws.Config{Region: aws.String("us-east-1") }
    param2:=metadata.ClientInfo{}
    param3:=request.Handlers{}
    awsClient :=client.New(param1,param2,param3)
    fmt.Print(awsClient)
    fmt.Println(awsClient.ClientInfo)

}

输出:

&{{3 0s 0s 0s 0s} {        } {<nil> <nil> <nil> <nil> <nil> 0xc0000133a0 <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil>  } {{[] <nil>} {[] <nil>} {[] <nil>} {[] <nil>} {[] <nil>} {[] <nil>} {[] <nil>} {[] <nil>} {[] <nil>} {[] <nil>} {[] <nil>} {[] <nil>} {[] <nil>} {[] <nil>}}}{        }

我的.aws/credentials 文件已正确设置 我还可以通过 cli 登录并查看我的所有子帐户。

再一次,我只是想在 aws 上登录我的帐户。

请帮助我进行以下操作: 1) 我是否使用了正确的 API/文档?

2) 我从这个输出中了解到,客户端无法与 aws 通信。我对么 ?

3) 请帮我解决这个问题

提前致谢。

【问题讨论】:

    标签: amazon-web-services go aws-sdk-go


    【解决方案1】:
    1. 检查您的凭证文件中的 IAM 用户设置是否有权列出 EC2 信息。

    2. 测试这段代码,它只是检查成功或失败

    package main
    
    import (
       "github.com/aws/aws-sdk-go/aws/session"
       "github.com/aws/aws-sdk-go/service/ec2"
    
       "fmt"
    )
    
    func main() {
       // Load session from shared config
       sess := session.Must(session.NewSessionWithOptions(session.Options{
           SharedConfigState: session.SharedConfigEnable,
       }))
    
       // Create new EC2 client
       ec2Svc := ec2.New(sess)
    
       // Call to get detailed information on each instance
       result, err := ec2Svc.DescribeInstances(nil)
       if err != nil {
           fmt.Println("Error", err)
       } else {
           fmt.Println("Success", result)
       }
    }
    

    如果您是 AWS/Go 的新手,developer guide 也是一个不错的起点。

    【讨论】:

    • 感谢您的意见。我有根级别的凭据。我必须访问所有子级别的 IAM 账户,然后担任角色。之后,我可以列出每个帐户拥有的所有资源。它比我想象的要复杂得多。感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 2019-01-19
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多