正在获取InvalidToken&Quot;使用GetObjectInput时,提供的令牌格式不正确或无效&Quot; [英] Getting InvalidToken "The provided token is malformed or otherwise invalid" when using GetObjectInput
本文介绍了正在获取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 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屋!
查看全文