我遇到的问题是lambda似乎没有执行操作的权限,并希望获得一些故障排除信息。
我可以这样做以获得当前用户:
print("Current user: " + boto3.resource('iam').CurrentUser().arn)
有没有办法在运行时获得执行角色?更好的是,有没有办法动态地获得附加到此角色的策略?
它们不应该从我创建lambda时改变,但我想验证以确定。
答案 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'}