Amazon web services 调用调用API操作失败,并显示以下消息:Lambda无法承担为函数定义的角色

Amazon web services 调用调用API操作失败,并显示以下消息:Lambda无法承担为函数定义的角色,amazon-web-services,api,aws-lambda,amazon-api-gateway,Amazon Web Services,Api,Aws Lambda,Amazon Api Gateway,我是AWS的新手,在运行lambda函数时收到此消息。我在这里读过可能的解决方案,但我不理解它们。我应该如何更好地处理?这意味着您已将lambda配置为使用角色运行。但在运行时,AWS lambda服务未被授予承担您配置的角色的权限。本质上,AWS Lambda需要被授予担任您选择的角色的权限 假设您有一个具有管理员访问权限的角色。假设您是一名正在创建lambda的非管理员开发人员。如果您能够创建lambda并指定具有管理员访问权限的角色作为运行lambda的角色,则可以有效地执行管理员可以执行

我是AWS的新手,在运行lambda函数时收到此消息。我在这里读过可能的解决方案,但我不理解它们。我应该如何更好地处理?

这意味着您已将lambda配置为使用角色运行。但在运行时,AWS lambda服务未被授予承担您配置的角色的权限。本质上,AWS Lambda需要被授予担任您选择的角色的权限

假设您有一个具有管理员访问权限的角色。假设您是一名正在创建lambda的非管理员开发人员。如果您能够创建lambda并指定具有管理员访问权限的角色作为运行lambda的角色,则可以有效地执行管理员可以执行的任何操作。这将是一个安全漏洞。如果拥有管理员角色的人希望授予AWS lambda服务使用该角色的权限,那么他们实际上是授予您以管理员身份运行的权限。但除非他们授予许可,否则lambda将无法在该角色下运行

看。您要使用的角色需要允许lambda担任,这是通过以下策略完成的:

"AssumeRolePolicyDocument": {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
该语句实际上是说,“允许lambda服务承担此角色。”因此,要继续,您应该验证您选择运行lambda的角色是否具有这样的策略。选择IAM中的角色并查看信任关系选项卡。它需要列出lambda.amazonaws.com——如果不需要,您需要编辑并添加它


此外,lambda基于各种触发器运行——一些由人触发,但另一些由事件触发。因此,由于事件可以触发lambda运行,这意味着您必须授予aws lambda服务使用您为lambda指定的角色的权限。

角色是什么?您必须使用了非默认角色,那么您到底做了什么?您是如何创建函数的?在控制台里?CLI?云层形成?控制台应该为您解决这个问题,所以我采用另一种方式。听起来这个角色的信任关系并没有授予对lambda的访问权。基本上,我在S3存储桶中有一个.py文件,我想运行它。此文件能够连接到API并获取值列表。我的目标是使用一个lambda函数、一个s3 bucket、一个cloudwatch和一个dynamodb自动化这个过程谢谢你的回答。假设我想使用lambda运行一个存在于S3存储桶中的文件。我为S3full access创建了一个角色,但此文件也请求使用API访问站点…我应该使用什么样的权限策略?因此,如果运行lambda的角色具有S3 full access,并且您已检查信任关系是否允许lambda.amazonaws.com担任该角色,则您应该能够从S3获取该文件。至于执行它(我假设它是一个脚本),所需的脚本权限将取决于它正在做什么。