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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line