正在获取InvalidToken&Quot;使用GetObjectInput时,提供的令牌格式不正确或无效&Quot; [英] Getting InvalidToken "The provided token is malformed or otherwise invalid" when using GetObjectInput

查看:28
本文介绍了正在获取InvalidToken&Quot;使用GetObjectInput时,提供的令牌格式不正确或无效&Quot;的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

按照AWS文档详细说明如何从S3下载对象,我收到The provided token is malformed or otherwise invalid错误。

我正在通过AWS SAM CLI运行代码。

我的代码是:

    sess, _ := session.NewSession(&aws.Config{
        Region: aws.String(endpoints.UsWest2RegionID),
    })

    svc := s3.New(sess)

    aak := os.Getenv("AWS_ACCESS_KEY")
    ask := os.Getenv("AWS_SECRET_KEY")
    fmt.Println("aak", aak, "ask", ask) // both of these correctly show my keys are being passed in

    resp, err := svc.GetObject(&s3.GetObjectInput{
        Bucket: aws.String(bucket),
        Key:    aws.String(key),
    })

    if err != nil {
        fmt.Println(err)
    }

我使用以下命令运行它: sam local invoke LambdaMyFunction --debug -e test/event.json

我已验证AWS访问密钥和密钥是否正确。我已验证可以通过CLI下载对象: aws s3api get-object --bucket "mybucket-dev" --key "mydir/mykey_test.json" result.txt

result t.txt填充了MyKey_test.json的内容,因此我知道我的证书可以访问该文件。我猜这个问题与lambda使用的角色没有访问文件的权限有关?但是我找不到足够的信息来验证这种可能性,或者如何在本地测试中解决问题。

推荐答案

发现AWS_SESSION_TOKEN传入的字符串(null)绝对不是有效的会话令牌。因此,我的代码如下所示:

os.Setenv("AWS_SESSION_TOKEN", "")
sess, _ := session.NewSession()

现在我可以成功下载该文件了。

因为我们还不知道它将如何通过实际的lambda传入,所以我对它进行了检查,如下所示:

    // this is STUPID!!! But necessary.
    if os.Getenv("AWS_SESSION_TOKEN") == "(null)" {
        os.Setenv("AWS_SESSION_TOKEN", "")
    }
    sess, _ := session.NewSession()

这篇关于正在获取InvalidToken&Quot;使用GetObjectInput时,提供的令牌格式不正确或无效&Quot;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆