- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 lambda 函数,该函数从 CloudTrail 获取事件并分析它们。
我有这个脚本:
s3.download_file(bucket, key, download_path)
with gzip.open(download_path, "r") as f:
data = json.loads(f.read())
print json.dumps(data)
for event in data['Records']:
if event['eventName'] in event_list:
dateEvent = datetime.strptime(event['eventTime'], "%Y-%m-%dT%H:%M:%SZ")
for element in event['userIdentity']:
for session in element[0]['sessionContext']:
username = session['userName']
role = session['arn']
我无法从事件中获取 userName
和 arn
的值。我收到此错误:
string indices must be integers: TypeError
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 34, in lambda_handler
for session in element[0]['sessionContext']:
TypeError: string indices must be integers
如何做到这一点?正确的做法是什么?
这是 json 字符串:
"userIdentity": {
"principalId": "aaaaaaaaaaaaaaaaaaaa",
"accessKeyId": "aaaaaaaaaaaaaaaaaaaaa",
"sessionContext": {
"sessionIssuer": {
"userName": "aaaaaaaaaaaaa",
"type": "Role",
"arn": "arn:aws:iam::aaaaaaaaaaaaaaaaaa:role/aaaaaaa",
"principalId": "aaaaaaaaaaaaaaaaaa",
"accountId": "aaaaaaaaaaaaaaaaaaa"
},
"attributes": {
"creationDate": "2017-09-14T15:03:08Z",
"mfaAuthenticated": "false"
}
},
"type": "AssumedRole",
"arn": "aaaaaaaaaaaaaaaaaaaaaaaa",
"accountId": "aaaaaaaaaaaaaaaaaa"
},
最佳答案
userIdentity
元素可能有也可能没有 sessionContext
元素,因为这些元素仅在该事件期间使用临时 IAM 凭证时才存在。
没有 sessionContext
的 userIdentity
元素如下所示:
"userIdentity": {
"type": "IAMUser",
"principalId": "AIDAJ45Q7YFFAREXAMPLE",
"arn": "arn:aws:iam::123456789012:user/Alice",
"accountId": "123456789012",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "Alice"
}
但是带有 sessionContext
元素的 userIdentity
看起来像这样:
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName",
"arn": "arn:aws:sts::123456789012:assumed-role/RoleToBeAssumed/MySessionName",
"accountId": "123456789012",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"sessionContext": {
"attributes": {
"creationDate": "20131102T010628Z",
"mfaAuthenticated": "false"
},
"sessionIssuer": {
"type": "Role",
"principalId": "AROAIDPPEZS35WEXAMPLE",
"arn": "arn:aws:iam::123456789012:role/RoleToBeAssumed",
"accountId": "123456789012",
"userName": "RoleToBeAssumed"
}
}
}
...如果没有发生角色联合,它甚至可能看起来像这样。
"userIdentity": {
"type": "IAMUser",
"principalId": "EX_PRINCIPAL_ID",
"arn": "arn:aws:iam::123456789012:user/Alice",
"accountId": "123456789012",
"accessKeyId": "EXAMPLE_KEY_ID",
"userName": "Alice",
"sessionContext": {"attributes": {
"mfaAuthenticated": "false",
"creationDate": "2014-03-06T15:15:06Z"
}}
}
那么回到你的代码:
for element in event['userIdentity']:
for session in element[0]['sessionContext']:
username = session['userName']
role = session['arn']
element[0]
不存在,因为 sessionContext
不是列表。
如果您想获取使用的或假定的用户名和角色 ARN,我认为这可行。它考虑了直接通过 IAMUser
或通过 AssumedRole
完成的事件。
user_identity = event['userIdentity']
# check to see if we have a sessionContext[sessionIssuer]
if 'sessionIssuer' in user_identity.get('sessionContext', {}):
user_name = user_identity['sessionContext']['sessionIssuer']['userName']
arn = user_identity['sessionContext']['sessionIssuer']['arn']
else:
user_name = user_identity['userName']
arn = user_identity['arn']
<小时/>
作为处理循环的一部分:
for event in data['Records']:
if event['eventName'] in event_list:
dateEvent = datetime.strptime(event['eventTime'], "%Y-%m-%dT%H:%M:%SZ")
user_identity = event['userIdentity']
# check to see if we have a sessionContext[sessionIssuer]
if 'sessionIssuer' in user_identity.get('sessionContext', {}):
user_name = user_identity['sessionContext']['sessionIssuer']['userName']
arn = user_identity['sessionContext']['sessionIssuer']['arn']
else:
user_name = user_identity['userName']
arn = user_identity['arn']
关于python - 使用 Python 解析 CloudTrail 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46222463/
当我尝试验证我的 cloudformation 模板时,收到“模板包含错误。:[/Resources/CloudTrail/Type/EventSelectors] 模板中不允许使用“null”值”错
我正在尝试下载存储在 S3 存储桶中的 CloudTrail 日志文件,但是当我收到该文件时,它是不可读的,直到我意识到它可以按照说 here 进行加密。而且我不知道如何解密该文件。 这是我的代码:
正如标题所示,我今天早上登录了我的 AWS 控制台,但在 Cloudtrail 中看不到相同的日志。 我的问题是 a) 这是将 AWS 控制台登录记录到 Cloudtrail 的默认行为吗?b) 我可
我已使用 AWS 管理控制台启用 CloudTrail,Amazon S3 存储桶策略是启用 CloudTrail 时自动创建的默认策略。 我可以找到有关我登录的日志以及所有其他偶数日志 但是没有关于
我一定错过了一些明显的东西。但我无法获取错误的详细信息。 无法知道 lambda 返回的确切错误。 最佳答案 根据此 AWS blog post您应该能够使用“CloudWatch 控制台,利用 Lo
使用“基于 CloudTrail 事件生成策略”功能在 IAM 中为特定角色生成策略时,我收到错误消息“策略生成失败。超出每个策略生成限制处理的 CloudTrail 日志文件。请修复后再试。” 如果
是否可以使用多个查找属性查询 cloudtrail 当我执行以下 aws cloudtrail lookup-events --lookup-attributes AttributeKey=Event
我正在尝试让 Cloudtrail 上路,并希望设置 Cloudtrail s3bucket。但政策尚未完成。这是我的代码: CloudtrailBucket: Type: AWS::S3::Bu
我正在对当前的 AWS 环境进行一些探索,并试图了解现有的 CloudTrail 是如何创建的以及所有者是谁? 我所说的“如何”是指 - 它是使用某些 CloudFormation 模板还是通过控制台
我想监控是否有人试图从我的 CloudTrail 的 S3 存储桶中删除日志。 我曾尝试用我自己的 IAM 用户删除自己在这个存储桶上的日志之一,但 CloudTrail 本身似乎没有注意到我已经从它
我想监控是否有人试图从我的 CloudTrail 的 S3 存储桶中删除日志。 我曾尝试用我自己的 IAM 用户删除自己在这个存储桶上的日志之一,但 CloudTrail 本身似乎没有注意到我已经从它
我正在开发一个 lambda 函数,该函数从 CloudTrail 获取事件并分析它们。 我有这个脚本: s3.download_file(bucket, key, download_path)
我在 s3 存储桶中启用了 cloudtrail 日志记录。我正在尝试使用 python sdk 来解析 s3 存储桶中的所有日志,以便隔离 RunInstance 事件。我从这样的事情开始: def
假设两种服务都已启用(启用了服务器访问日志记录的单个 S3 存储桶和为该存储桶启用了对象级日志记录的 CloudTrail): 1. 哪些事件会启动两种服务的日志记录? 2. 在这种情况下,一项服务将
我正在尝试使用 terraform 配置 AWS CloudTrail,但在 CloudWatch 集成方面仍然失败。有人在某处看到错误吗? Terraform CLI 和 Terraform AWS
在 cloud-trail 中,我可以在 CloudWatch Logs 部分下选择现有日志组 CloudTrail/DefaultLogGroup。是否可以使用cloudformation模板完成此
我正在尝试创建一些指标图表来跟踪我们的 API 调用,并且我想开始按事件名称进行分割。通过 web 界面和 cli 查看,我必须滚动浏览大量数据才能看到不同类型的事件。 我只想要所有事件名称的列表。
在 cloud-trail 中,我可以在 CloudWatch Logs 部分下选择现有日志组 CloudTrail/DefaultLogGroup。是否可以使用cloudformation模板完成此
我正在尝试将日志从 ClouldTrail 获取到 ElasticSearch 中,以便我们可以更好地了解我们的 AWS 账户中正在发生的事情。 我已经在我的机器(Ubuntu 14.04)上设置了
显然 AWS/Cloudtrail 在 AWS NameSpace 中可用,如下面的屏幕截图所示: 网址:https://docs.aws.amazon.com/sdkfornet1/latest/a
我是一名优秀的程序员,十分优秀!