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

时间:2018-02-22 20:17:21

标签: amazon-web-services aws-lambda

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

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

print("Current user: " + boto3.resource('iam').CurrentUser().arn)

有没有办法在运行时获得执行角色?更好的是,有没有办法动态地获得附加到此角色的策略?

它们不应该从我创建lambda时改变,但我想验证以确定。

2 个答案:

答案 0 :(得分:2)

请检查:list_attached_user_policies

  

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

     

IAM用户也可以嵌入内联策略​​。

如果您只想要内联政策:get_user_policy

  

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

答案 1 :(得分:0)

不知道,这将给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']

role_response将具有角色arn。

role_response =>

{'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'}