donkey111111 2019-02-26 19:12
浏览 114
已采纳

进行AWS测试以进行无效登录

Using Golang with go-aws-sdk and having some issues catching invalid session credentials.

Using the shared credential files in ~/.aws/{config, credentials}

Sess, err := session.NewSessionWithOptions(session.Options{
    Profile: instance.Config.AWS.AWSProfile,
})

Works fine when the credentials are valid, but if I use an invalid aws_access_key_id in the credentials file, I need a way to detect this with my AWSLogin() func.

What's happening is any subsequent calls to an AWS service raises a panic when using Sess above.

How can I detect a failed login with the above NewSessionWithOptions() method?

UPDATE: yes, the error type is nil, so the following is of no use:

 if err != nil {
        return nil, fmt.Errorf("Error logging into AWS: %v", err.Error())
    }
  • 写回答

2条回答

  • dongxing2302 2019-02-26 22:52
    关注

    Here's what I ended up doing. Test that credentials are loaded, test a known service such as an S3 bucket this application needs access to.

    // login to AWS
    AWSProfile := "default"
    fmt.Printf("Using AWS Profile: %v
    ", instance.Config.AWS.AWSProfile)
    Sess, err := session.NewSessionWithOptions(session.Options{
        Profile: AWSProfile,
    })
    if err != nil {
        return fmt.Errorf("Error logging into AWS: %v", err.Error())
    }
    
    // attempt to load config (e.g. env variables, shared config, instance profile) 
    // log which AWS API Key is being used
    svc := s3.New(Sess)
    credentials, err := svc.Config.Credentials.Get()
    if err != nil {
        return errors.New("Error logging into AWS. Check Credentials.")
    }
    fmt.Printf("Using Access Key ID: (%v)
    ", credentials.AccessKeyID)
    bucketName := "s3bucketname"
    
    // test the login can access a typical aws service (s3) and known bucket 
    params := &s3.ListObjectsInput {
        Bucket: aws.String(bucketName),
    }
    resp, _ := svc.ListObjects(params)
    
    if len(resp.Contents) < 1 {
        return nil, fmt.Errorf("Error logging into AWS. Can not access bucket (%v). Check Credentials.", bucketName)
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)