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 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?