当前位置: 首页 > 知识库问答 >
问题:

AWS Lambda-拒绝访问错误-GetObject

公良云
2023-03-14

我是AWS Lambda的新手。我正在尝试从https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html.当用户将jpg上传到名为greetingsproject的S3 bucket时,会触发lambda函数。

错误:9a62ff86-3e24-491d-852e-DED2C2CF5D94
信息:获取对象时出错=拒绝访问:拒绝访问

我在以下代码段中遇到拒绝访问错误:

try {
        console.log("srcBucket=" + srcBucket);
        console.log("srcKey=" + srcKey);
        const params = {
            Bucket: srcBucket,
            Key: srcKey
        };
        var origimage = await s3.getObject(params).promise();

    } catch (error) {
        console.log("error while getting object = " + error);
        return;
    }  

我的角色政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:PutLogEvents",
                "logs:CreateLogGroup",
                "logs:CreateLogStream"
            ],
            "Resource": "arn:aws:logs:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::greetingsproject"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::greetingsproject",
                "arn:aws:s3:::greetingsproject/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::greetingsproject",
                "arn:aws:s3:::greetingsproject/*"
            ]
        }
    ]
}

不确定需要向策略添加哪些其他权限。

共有1个答案

都乐逸
2023-03-14

Marcin关于Lambda执行角色的评论让我走上了正确的道路。我之前遵循了以下步骤:

  1. 创建了一个名为greetingsProject策略的策略(具有上述权限)
  2. 将此策略附加到greetingsProjectRole。
  3. 将greetingsProjectRole分配给我的lambda函数。
  4. 我假设就是这样,策略应该对我的lambda函数可用。
  5. 然而,当我将greetingsProjectRole分配给该函数时,AWS内部创建了一个名为greetingsProject-act-zhcbt61o的执行角色。
  6. 当我点击这个角色时,我惊讶地发现它唯一的角色是AWSLambdaBasicExecttionRole,而问候项目策略不见了。
  7. 我必须添加greetingsProjectPolicsProjectPolicsProjectPolicsProjectPolic-zhcbt61o作为内联策略。现在我不再得到访问拒绝错误。

不确定,如果AWS是这样工作的,或者我遗漏了什么。

 类似资料:
  • 问题内容: 在某种程度上,当我尝试通过命令行访问MySQL时,已经设法解决了该错误: 我尝试使用此HowTo重置密码,但没有任何运气。 我已经卸载了mysql completley并重新安装了,但是仍然需要输入密码。我不知道为什么会这样! 有人可以帮我获得默认安装的MySQL吗? 环境 Fedora Core 10,完全根访问权限,安装了Apache和PHP 感谢您的任何帮助!! 编辑 对于所有想

  • 我最近才更新到新版本的forge,没有改变我的设置,当我去构建我的应用程序时,我得到了一个错误,说它找不到文件…

  • 这个问题已经问过好几次了,但没有一个解决办法对我有效。我以管理员身份运行DOS命令窗口,但当运行keytool命令安装证书时,我得到了上面的错误: 我在Windows10上使用JDK 1.8.0_191。为什么拒绝对管理员的访问?

  • 问题内容: 我有一个HTML表单( upload.htm ),其中包含HTML文件上传控件。 上一页中还有一个JavaScript方法,如下所示: 我在一个页面内的页面( uploadpage.htm )中 称其 为: 我尝试从 uploadpage.htm 页面执行以下所示的语句: 我收到一条错误消息,说 Access被拒绝,并且调试器在显示的第一个JavaScript函数处停止。这两个文件都位

  • 问题内容: 我在IE11和Ajax中遇到了一个特殊的错误。对于我使用下面的代码发出的几乎所有请求,一切都很好,但是当我尝试与copy + paste方法结合使用时,它会返回“访问被拒绝”错误。所以总结一下 对于我编写的所有功能,此代码在大多数浏览器中均可正常运行 在IE 11 + Windows 8.1中,它在大多数情况下均可运行,但运行特定的复制和粘贴功能时除外 有趣的是,当使用IE 11时,尽

  • 问题内容: 我有2个项目(相互连接和通信)在2个tomcat实例上运行。在我本地,我有2只雄猫在奔跑。在所有不同的浏览器上,一切都很好,但IE却表示访问被拒绝加载Java文件。因此,我包括了一个图书馆,该图书馆可以解决 本地 问题。 但是当我再次将代码部署到DEV环境上2个不同的tomcat实例(在Dev服务器上)时,我看到相同的错误,访问被拒绝。 而且我与项目1相关的所有文件(例如js / cs