【发布时间】:2025-12-25 14:45:11
【问题描述】:
我编写了一个 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 函数从 IAM 角色获取其权限。当您在本地运行时,您可能正在使用 IAM 用户凭证。
-
您认为有什么区别以及如何解决这个问题?
-
创建 Lambda 函数时,您提供了一个 IAM 角色。确保与角色关联的策略足以让 Lambda 函数运行,特别是 S3。这些都有据可查。
标签: amazon-web-services scala amazon-s3 amazon-ec2 aws-lambda