按照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.txt是用mykey_test. json的内容填充的,所以我知道我的cred可以访问这个文件。我假设这个问题与lambda使用的角色没有访问这个文件有关,但是我找不到足够的信息来验证这种可能性,或者如何解决本地测试的问题。
2条答案
按热度按时间mklgxw1f1#
结果发现
AWS_SESSION_TOKEN
是以字符串(null)
的形式传递的,这肯定不是一个有效的会话令牌,所以我的代码如下所示:现在我可以成功下载文件了。
因为我们还不知道它是如何通过实际的lambda传入的,所以我设置了一个检查,如下所示:
mrwjdhj32#
如果您的SSO,,,for windows,在命令提示符中.. aws sso login --profile然后使用sam本地调用'HelloWorldFunction' --profile并且它工作(没有无效令牌错误...