You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Glue作业中获取触发任务的IAM用户名?

获取AWS Glue作业触发者的IAM用户名

当你在Glue作业中调用sts.get_caller_identity()时,返回的是Glue服务角色的临时会话信息(比如AROA6CNCYWLF5MGCB5DF4:GlueJobRunnerSession),而非触发作业的IAM用户名。这是因为Glue作业通过**假设角色(Assumed Role)**运行,作业的执行上下文使用的是Glue服务角色的凭证,和触发用户的身份是分离的。

以下是几种可行的解决方案:

1. 手动触发时通过作业参数传递用户名

如果是在AWS控制台手动启动Glue作业,可以在触发时添加自定义作业参数,将当前IAM用户名传入作业:

  • 触发作业时,在作业参数中添加键值对:--triggering_user = 你的IAM用户名
  • 在Glue作业代码中读取该参数:
import sys
from awsglue.utils import getResolvedOptions

# 解析作业参数
args = getResolvedOptions(sys.argv, ['triggering_user'])
print('触发作业的IAM用户名:', args['triggering_user'])

2. 自动化触发时传递用户信息

如果通过CloudWatch Events、Step Functions等自动化工具触发作业,需要在触发流程中显式传递触发用户的信息:

  • 例如在Step Functions的Glue任务定义中,通过Parameters字段添加作业参数:
    "StartGlueJob": {
      "Type": "Task",
      "Resource": "arn:aws:states:::glue:startJobRun.sync",
      "Parameters": {
        "JobName": "your-glue-job-name",
        "Arguments": {
          "--triggering_user.$": "$.triggeringUserName"
        }
      }
    }
    
  • 确保触发流程中可以获取到用户身份信息,并传递给Glue作业。

3. 通过CloudTrail日志回溯触发用户

如果无法在触发时传递参数,可以通过CloudTrail日志查询作业启动事件,从中提取触发用户的信息:

  • 给Glue作业的执行角色添加cloudtrail:LookupEvents权限
  • 在Glue作业代码中调用CloudTrail API查询对应作业Run ID的启动事件:
import boto3
from awsglue.utils import getResolvedOptions
import sys

# 获取当前作业的Run ID
args = getResolvedOptions(sys.argv, ['JOB_RUN_ID'])
job_run_id = args['JOB_RUN_ID']

# 初始化CloudTrail客户端
cloudtrail_client = boto3.client('cloudtrail')

# 查询作业启动事件
response = cloudtrail_client.lookup_events(
    LookupAttributes=[
        {
            'AttributeKey': 'ResourceName',
            'AttributeValue': job_run_id
        }
    ],
    EventCategory='Management'
)

# 提取触发用户信息
for event in response['Events']:
    if event['EventName'] == 'StartJobRun':
        user_identity = event['UserIdentity']
        print(f"触发用户ID: {user_identity['UserId']}")
        print(f"触发用户名: {user_identity.get('UserName', '未获取到用户名')}")
        break

注意:CloudTrail日志存在一定延迟,可能无法实时获取触发信息,且需要确保目标区域已启用CloudTrail日志记录。

内容的提问来源于stack exchange,提问作者Sridhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:15:27