我正在使用 Lambda 函式來跟蹤我的實體的開始和停止時間。
我確實設定了我的跟蹤 - 用于管理事件 - 并且我的 S3 存盤桶附加了適當的權限。我使用 get_object 從 S3 讀取資料。代碼如下。Get_object 以字典的形式向我回傳資料。我的下一步是過濾這些資料 - 其中“eventName”:“StopInstances”或“StartInsances”。如果有人能告訴如何做到這一點。我嘗試了各種字典方法,但沒有任何效果。
lambda 處理程式的代碼:
def lambda_handler(event, context):
object_key = 'event_history_j.json'
bucket = 'demo-cloudtrail-logs-ec2'
client = boto3.client('s3')
data = client.get_object(Bucket = bucket , Key = object_key)['Body'].read()
return data
輸出:
{"Records": [
{ "eventVersion": "1.07",
"userIdentity": {
"type": "AssumedRole",
"principalId": "ARO",
"arn": "arn:aws",
"accountId": "0123456",
"accessKeyId": "ABCDEFGH",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "ARO",
"arn": "JDHJDJDHJS",
"accountId": "0123456",
"userName": "[email protected]"
},
"webIdFederationData": {},
"attributes": {
"creationDate": "2022-04-22T23:16:28Z",
"mfaAuthenticated": "JDJDHFD"
}
}
},
"eventTime": "2022-04-22T23:34:46Z",
"eventSource": "ec2.amazonaws.com",
"eventName": "StopInstances",
"awsRegion": "eu-west-1",
"sourceIPAddress": "AWS Internal",
"userAgent": "AWS Internal",
"requestParameters": {
"instancesSet": {
"items": [
{
"instanceId": "i-0039483"
},
{
"instanceId": "i-92399"
}
]
},
"force": DJDIJ
},
"responseElements": {
"requestId": "FJDSJFJDFJFDJDJ",
"instancesSet": {
"items": [
{
"instanceId": "i-0039483",
"currentState": {
"code": 64,
"name": "stopping"
},
"previousState": {
"code": 16,
"name": "running"
}
},
{
"instanceId": "i-92399",
"currentState": {
"code": 64,
"name": "stopping"
},
"previousState": {
"code": 16,
"name": "running"
}
}
]
}
},
"requestID": "758b",
"eventID": "68228982",
"readOnly": false,
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "01234567",
"eventCategory": "Management",
"sessionCredentialFromConsole": "true"
},
{
"eventVersion": "1.07",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROA",
"arn": "XYZ",
"accountId": "01234567",
"accessKeyId": "ABCDEFGH",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "EWUDHAKFJ",
"arn": "SJDSJDJSND",
"accountId": "01234567",
"userName": "ADKJDJAFDJFHDK"
},
"webIdFederationData": {},
"attributes": {
"creationDate": "2022-04-22T23:16:28Z",
"mfaAuthenticated": "TRUE"
}
}
},
"eventTime": "2022-04-22T23:34:43Z",
"eventSource": "compute-optimizer.amazonaws.com",
"eventName": "GetEC2InstanceRecommendations",
"awsRegion": "eu-west-1",
"sourceIPAddress": "AWS Internal",
"userAgent": "AWS Internal",
"requestParameters": {
"instanceArns": [
"aSKSKASKASAA"
],
"maxResults": 0,
"accountIds": [
"273273273728"
]
},
"responseElements": null,
"requestID": "cb106ba",
"eventID": "d8f6",
"readOnly": true,
"eventType": "SJSDKDSK",
"managementEvent": true,
"recipientAccountId": "283283829382983",
"eventCategory": "Management",
"sessionCredentialFromConsole": "true"
},
........
我不能使用 Pandas 和其他庫。
uj5u.com熱心網友回復:
我用來分隔事件的代碼 -
key = 'event_history_j.json'
bucket = 'demo-cloudtrail-logs-ec2'
client = boto3.client('s3')
data = client.get_object(Bucket = bucket , Key = key)['Body'].read()
a = json.loads(data)
data2 = a["Records"]
# step2: prepare data of stop and start instances
data3 = []
for i in range(len(data2)):
if data2[i]['eventName'] == "StopInstances":
data3.append(data2[i])
elif data2[i]['eventName'] == "StartInstances":
data3.append(data2[i])
else:
pass
它可以優化,但它的作業解決方案..!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/470560.html