Access Denied (Service:;)状态码:403;错误码:AccessDenied



我编写了一个lambda函数,用于访问和读取同一区域S3存储中的文件。scala

中的代码如下

val bucketName = "***myBucketName***"
val fileName = "input.log"
val s3 = AmazonS3ClientBuilder.defaultClient()
val myObject = s3.getObject(new GetObjectRequest(bucketName, fileName))
val inputStream = myObject.getObjectContent()
val reader = new BufferedReader(new InputStreamReader(inputStream))

我通过SAM-cli在AWS上部署它当我在本地运行它时,它可以访问文件,但是当我在AWS上运行它时它把

Access Denied (Service: ; Status Code: 403; Error Code: AccessDenied

关于如何解决这个问题有任何线索吗?

正如在评论中提到的,您必须检查授予lambda角色的权限。本页解释了如何获得lambda角色:https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html

一旦您知道了角色,您就可以手动检查权限以确保s3:GetObject存在。您也可以假定它是本地的,并尝试从CLI读取对象以确保权限正确:https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html

最后,请注意,如果桶是加密的,则需要修改KMS策略以授予角色使用它和解密的权限。类似地,您可能需要修改桶策略以允许角色执行s3:GetObject操作。

相关内容

最新更新