dougaodi8895 2017-11-01 16:36
浏览 842
已采纳

Golang的AWS S3中的NoCredentialproviders

I am working in Golang,now I am attempting to upload an image to AWS S3, but I get:

NoCredentialProviders: no valid providers in chain. Deprecated.
    For verbose messaging see aws.Config.CredentialsChainVerboseErrors

My code is like this:

func firstFunction(){
    //Connect to S3
    AWSsession, err := ConnectAWS()
    if err != nil {
        fmt.Println("Error Connecting to AWS S3")
    }

    GetSingleMedia(AWSsession)
}

func ConnectAWS()(*session.Session, error){

    //Create S3 Session
    AWSsession, err := session.NewSession(&aws.Config{
        Region: aws.String("us-west-2")},
    )

    if err != nil {
        fmt.Println("Error AWS:", err.Error())
    }

    return AWSsession,err
}

func GetSingleMedia(...someparams,AWSsession *session.Session){
            //o.Blob is correct, this is valid
            data, err := ioutil.ReadAll(bytes.NewReader(o.Blob))
            //Store: bytes.NewReader(o.Blob)
            UploadImage(AWSsession,bytes.NewReader(o.Blob),bucket,"SomeID")
}

func UploadImage(AWSsession *session.Session,reader *bytes.Reader,bucket string, key string) (*s3manager.UploadOutput,error){

    uploader := s3manager.NewUploader(AWSsession)

    result, err := uploader.Upload(&s3manager.UploadInput{
        Body : reader,
        Bucket: aws.String(bucket),
        Key : aws.String(key),
    })

    if err != nil {
        fmt.Println("Error uploagin img: ",err.Error())
    }


    return result,err
}

Also, I have placed the creentials under /home/myuser/.aws/ there's a credential file, I don't get any error on creating the session, then, what could be the problem? The error is triggered in UploadImage

EDIT:

Currently in the credentials file I have:

[default]
awsBucket = "someBucket"
awsAccessKey = "SOME_ACCESS_KEY"
awsSecretKey = "SOME_AWS_SECRET_KEY"

Sould I change any permission or something?

  • 写回答

1条回答 默认 最新

  • douxuan3095 2017-11-01 20:29
    关注

    I would suggest you follow the guide here: http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html

    It would appear you have a wrong format of credentials file. The correct format would be something like this:

    [default]
    aws_access_key_id = SOME_ACCESS_KEY
    aws_secret_access_key = SOME_AWS_SECRET_KEY
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能