Amazon web services 如何在lambda中获取当前执行角色?

Amazon web services 如何在lambda中获取当前执行角色?,amazon-web-services,aws-lambda,Amazon Web Services,Aws Lambda,我遇到一个lambda问题,它似乎没有执行操作的权限,并且希望获得一些故障排除信息 我可以这样做以获取当前用户: print("Current user: " + boto3.resource('iam').CurrentUser().arn) 有没有办法在运行时获取执行角色?更好的是,是否有一种方法可以动态获取附加到此角色的策略 它们不应该从我创建lambda时更改,但我想确认一下。检查以下内容: 列出附加到指定IAM的所有托管策略 用户 IAM用户还可以嵌入内嵌策略 如果只需要内联策略:

我遇到一个lambda问题,它似乎没有执行操作的权限,并且希望获得一些故障排除信息

我可以这样做以获取当前用户:

print("Current user: " + boto3.resource('iam').CurrentUser().arn)
有没有办法在运行时获取执行角色?更好的是,是否有一种方法可以动态获取附加到此角色的策略

它们不应该从我创建lambda时更改,但我想确认一下。

检查以下内容:

列出附加到指定IAM的所有托管策略 用户

IAM用户还可以嵌入内嵌策略

如果只需要内联策略:

检索嵌入到中的指定内联策略文档 指定的IAM用户


不知道这会给OP带来多大的相关性

但我们可以在运行时获得lambda函数配置

lambda_client = boto3.client('lambda')
role_response = (lambda_client.get_function_configuration(
    FunctionName = os.environ['AWS_LAMBDA_FUNCTION_NAME'])
)
print(role_response)
role_arn = role_response['Role']
角色\响应将具有角色arn

角色\响应=>


您看过boto3中的get_caller_identity方法了吗。这是sts服务。它将返回附加到Lambda函数的实体的ARN。我必须知道当前用户而不是ARN,但由于它是一个假定角色,我不确定这是什么。我看到这样一条消息:User:arn:aws:sts::749340585813:假定角色/golfnow start job/dev-StartJobLambda-HZO22Z5IMTFB无权执行:批处理:ListJobs。难题的另一部分是我的执行角色没有获取当前用户的权限,而且我还没有弄清楚如何将能够启用权限的策略附加到执行角色,否则失败的调用将起作用。确定。我的答案是一般情况。在您的情况下,必须向Lambda执行角色添加所需的权限。我认为你没有正确处理这个问题。这不是调试Lambda权限不足的方法。附加到Lambda函数的角色是golfnow start job。正如@helloV所提到的,您需要对IAM进行API调用,以获得附加到角色的权限。要将托管策略附加到角色,需要调用列表\附加\角色\策略。要获取附加到角色的内联策略列表,您需要调用列表\角色\策略。
{'ResponseMetadata': {'RequestId': '', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'GMT', 'content-type': 'application/json', 'content-length': '877', 'connection': 'keep-alive', 'x-amzn-requestid': ''}, 'RetryAttempts': 0}, 'FunctionName': 'lambda_name', 'FunctionArn': 'arn:aws:lambda:<region>:<account_id>:function:lambda_arn', 'Runtime': 'python3.8', 'Role': 'arn:aws:iam::<account_id>:role/<role_name>', 'Handler': 'handlers.handle', 'CodeSize': 30772, 'Description': '', 'Timeout': 30, 'MemorySize': 128, 'LastModified': '', 'CodeSha256': '', 'Version': '$LATEST', 'VpcConfig': {'SubnetIds': [], 'SecurityGroupIds': [], 'VpcId': ''}, 'TracingConfig': {'Mode': 'PassThrough'}, 'RevisionId': '', 'State': 'Active', 'LastUpdateStatus': 'Successful'}