对 Amazon Lambda 身份和访问进行故障排除
可以使用以下信息,以帮助您诊断和修复在使用 Lambda 和 IAM 时可能遇到的常见问题。
主题
我无权在 Lambda 中执行操作
如果 Amazon Web Services Management Console 告诉您,您无权执行某个操作,则必须联系您的管理员寻求帮助。您的管理员是指为您提供用户名和密码的那个人。
当 mateojackson
IAM 用户尝试使用控制台查看有关函数的详细信息,但不具有 lambda:GetFunction
权限时,会发生以下示例错误。
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: lambda:GetFunction on resource: my-function
在这种情况下,Mateo 请求他的管理员更新其策略,以允许他使用 lambda:GetFunction
操作访问 my-function
资源。
我无权执行 iam:PassRole
如果收到错误,则表明您无权执行 iam:PassRole
操作,则必须更新策略以允许您将角色传递给 Lambda。
有些 Amazon Web Services允许您将现有角色传递到该服务,而不是创建新服务角色或服务相关角色。为此,您必须具有将角色传递到服务的权限。
当名为 marymajor
的 IAM 用户尝试使用控制台在 Lambda 中执行操作时,会发生以下示例错误。但是,服务必须具有服务角色所授予的权限才可执行此操作。Mary 不具有将角色传递到服务的权限。
User: arn:aws:iam::123456789012:user/
marymajor
is not authorized to perform: iam:PassRole
在这种情况下,必须更新 Mary 的策略以允许她执行 iam:PassRole
操作。
如果您需要帮助,请联系您的 Amazon 管理员。管理员是向您提供登录凭证的人。
我想要查看我的访问密钥
在创建 IAM 用户访问密钥后,您可以随时查看您的访问密钥 ID。但是,您无法再查看您的秘密访问密钥。如果您丢失了私有密钥,则必须创建一个新的访问密钥对。
访问密钥包含两部分:访问密钥 ID(例如 AKIAIOSFODNN7EXAMPLE
)和秘密访问密钥(例如 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
)。与用户名和密码一样,您必须同时使用访问密钥 ID 和秘密访问密钥对请求执行身份验证。像对用户名和密码一样,安全地管理访问密钥。
请不要向第三方提供访问密钥,即便是为了帮助找到您的规范用户 ID 也不行。如果您这样做,可能会向某人提供对您的账户的永久访问权限。
当您创建访问密钥对时,系统会提示您将访问密钥 ID 和秘密访问密钥保存在一个安全位置。秘密访问密钥仅在您创建它时可用。如果丢失了您的秘密访问密钥,您必须为 IAM 用户添加新的访问密钥。您最多可拥有两个访问密钥。如果您已有两个密钥,则必须删除一个密钥对,然后再创建新的密钥。要查看说明,请参阅 IAM 用户指南中的管理访问密钥。
我是管理员并希望允许其他人访问 Lambda
要允许其他人访问 Lambda,您必须为需要访问权限的人员或应用程序创建一个 IAM 实体(用户或角色)。它们将使用该实体的凭证访问 Amazon。然后,您必须将策略附加到实体,以便在 Lambda 中向其授予正确的权限。
要立即开始使用,请参阅 IAM 用户指南中的创建您的第一个 IAM 委派用户和组。
我是一名管理员,希望从将被弃用的 Lambda 的Amazon托管策略迁移
2021 年 3 月 1 日之后,Amazon托管策略 AWSLambdaReadOnlyAccess 和 AWSLambdaFullAccess 将弃用,并且其无法再附加到新的 IAM 用户。有关策略弃用的更多信息,请参阅 IAM 用户指南中的已弃用的Amazon托管策略。
Lambda 引入了两个新的Amazon托管策略:
-
AWSLambda_ReadOnlyAccess 策略授予对 Lambda、Lambda 控制台功能以及相关Amazon服务的只读访问权限。此策略是通过缩小先前策略 AWSLambdaReadOnlyAccess 的范围创建的。
-
AWSLambda_FullAccess 策略授予对 Lambda、Lambda 控制台功能和其他相关Amazon服务的完全访问权限。此策略是通过缩小先前策略 AWSLambdaFullAccess 的范围创建的。
使用 Amazon 托管策略
我们建议使用新启动的托管策略向用户、组和角色授予访问 Lambda 的权限,但是,请审核策略中授予的权限,以确保它们符合您的要求。
-
要审核 AWSLambda_ReadOnlyAccess 策略的权限,请参阅 IAM 控制台中的 AWSLambda_ReadOnlyAccess
策略页面。 -
要审核 AWSLambda_FullAccess 策略的权限,请参阅 IAM 控制台中的 AWSLambda_FullAccess
策略页面。
审核权限后,可将策略附加到 IAM 身份(组、用户或角色)。有关附加Amazon托管策略的说明,请参阅 IAM 用户指南 中的添加和删除 IAM 身份权限。
使用客户托管策略
如果您需要更精细的访问控制或者想要添加权限,则可以创建自己的客户托管策略。有关更多信息,请参阅 IAM 用户指南中的在 JSON 选项卡上创建策略。
我想要允许我的Amazon账户之外的用户访问我的 Lambda 资源
您可以创建一个角色,以便其他账户中的用户或您组织外的人员可以使用该角色来访问您的资源。您可以指定谁值得信赖,可以代入角色。对于支持基于资源的策略或访问控制列表 (ACL) 的服务,您可以使用这些策略向人员授予对您的资源的访问权。
要了解更多信息,请参阅以下内容:
-
要了解 Lambda 是否支持这些功能,请参阅 Amazon Lambda 如何与 IAM 协同工作。
-
要了解如何为您拥有的 Amazon Web Services 账户 中的资源提供访问权限,请参阅 IAM 用户指南中的为您拥有的另一个 Amazon Web Services 账户 中的 IAM 用户提供访问权限。
-
要了解如何为第三方Amazon Web Services 账户提供您的资源的访问权限,请参阅 IAM 用户指南中的为第三方拥有的Amazon Web Services 账户提供访问权限。
-
要了解如何通过联合身份验证提供访问权限,请参阅 IAM 用户指南中的为经过外部身份验证的用户(联合身份验证)提供访问权限。
-
要了解使用角色和基于资源的策略进行跨账户访问之间的差别,请参阅 IAM 用户指南中的 IAM 角色与基于资源的策略有何不同。