我需要在我的Cloudwatch EventRule中捕获事件RunflowJob,以便标记AWS EMR起始集群。
我正在寻找此活动,因为我需要用户名和帐户信息
有什么想法吗?
由于
答案 0 :(得分:0)
调用ListClusters,DescribeCluster和RunJobFlow操作会在CloudTrail日志文件中生成条目。
每个日志条目都包含有关生成请求的人员的信息。例如,如果发出创建和运行新作业流(RunJobFlow)的请求,CloudTrail会记录发出请求的人员或服务的用户身份
以下是使用Python Boto3获取用户名的示例代码段。
import boto3
cloudtrail = boto3.client("cloudtrail")
response = cloudtrail.lookup_events (
LookupAttributes=[
{
'AttributeKey': 'EventName',
'AttributeValue': 'RunJobFlow'
}
],
)
for event in response.get ("Events"):
print(event.get ("Username"))
答案 1 :(得分:0)
用户名和群集详细信息。更简单的解决方案是将Cloudwatch事件规则与Lambda函数一起用作获取这些信息的目标,然后可以根据需要采取进一步的措施。下面的示例:
用于Cloudwatch事件规则的事件模式
{
"source": ["aws.elasticmapreduce"],
"detail": {
"eventName": ["RunJobFlow"]
}
}
Lambda代码段
def lambda_handler(event, context):
#print("Received event: " + json.dumps(event, indent=2))
user = event['detail']['userIdentity']['userName']
cluster_id = event['detail']['responseElements']['jobFlowId']
region = event['region']