In [1]:
import index
In [2]:
import sys
In [3]:
sys.path.append("/Users/karve/code/quilt/lambdas/es/indexer/test")
In [4]:
RECORDS = {
"ObjectRemoved:Delete": {
"eventVersion": "2.1",
"eventSource": "aws:s3",
"awsRegion": "us-east-1",
"eventTime": "2020-05-22T00:32:20.515Z",
"eventName": "ObjectRemoved:Delete",
"userIdentity": {
"principalId": "EXAMPLE"
},
"requestParameters": {
"sourceIPAddress": "127.0.0.1"
},
"responseElements": {
"x-amz-request-id": "EXAMPLE123456789",
"x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH"
},
"s3": {
"s3SchemaVersion": "1.0",
"configurationId": "testConfigRule",
"bucket": {
"name": "test-bucket",
"ownerIdentity": {
"principalId": "EXAMPLE"
},
"arn": "arn:aws:s3:::test-bucket"
},
"object": {
"key": "hello+world.txt",
"sequencer": "0A1B2C3D4E5F678901"
}
}
},
"ObjectCreated:Put": {
"eventVersion": "2.1",
"eventSource": "aws:s3",
"awsRegion": "us-east-1",
"eventTime": "2020-05-22T00:32:20.515Z",
"eventName": "ObjectCreated:Put",
"userIdentity": {
"principalId": "EXAMPLE"
},
"requestParameters": {
"sourceIPAddress": "127.0.0.1"
},
"responseElements": {
"x-amz-request-id": "EXAMPLE123456789",
"x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH"
},
"s3": {
"s3SchemaVersion": "1.0",
"configurationId": "testConfigRule",
"bucket": {
"name": "test-bucket",
"ownerIdentity": {
"principalId": "EXAMPLE"
},
"arn": "arn:aws:s3:::test-bucket"
},
"object": {
"key": "hello+world.txt",
"size": 100,
"eTag": "123456",
"sequencer": "0A1B2C3D4E5F678901"
}
}
},
# This template is based on an actual S3 event on 5-21-2020, no known docs
# on this particular event type
"ObjectRemoved:DeleteMarkerCreated": {
"awsRegion": "us-east-1",
"eventName": "ObjectRemoved:DeleteMarkerCreated",
"eventSource": "aws:s3",
"eventTime": "2020-05-22T00:32:20.515Z",
"eventVersion": "2.1",
"requestParameters": {
"sourceIPAddress": "127.0.0.1"
},
"responseElements": {
"x-amz-request-id": "EXAMPLE123456789",
"x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH"
},
"s3": {
"bucket": {
"name": "test-bucket",
"ownerIdentity": {
"principalId": "EXAMPLE"
},
"arn": "arn:aws:s3:::test-bucket"
},
"configurationId": "testConfigRule",
"object": {
"key": "hello+world.txt",
"eTag": "123456",
"sequencer": "0A1B2C3D4E5F678901",
"versionId": "1313131313131.Vier50HdNbi7ZirO65"
},
"s3SchemaVersion": "1.0"
},
"userIdentity": {
"principalId": "EXAMPLE"
}
}
}
In [5]:
dk = RECORDS["ObjectRemoved:Delete"].keys()
pk = RECORDS["ObjectCreated:Put"].keys()
mk = RECORDS["ObjectRemoved:DeleteMarkerCreated"].keys()
In [6]:
od = RECORDS["ObjectRemoved:Delete"]
op = RECORDS["ObjectCreated:Put"]
odm = RECORDS["ObjectRemoved:DeleteMarkerCreated"]
In [7]:
od['s3']
Out[7]:
In [8]:
op["s3"]
# add size and etag to s3
Out[8]:
In [9]:
odm["s3"]
# add size, versionId to s3
Out[9]:
In [10]:
from copy import deepcopy
In [11]:
EVENT_CORE = deepcopy(op)
In [12]:
for d in ("eTag", "size", "versionId"):
if d in EVENT_CORE["s3"]["object"]:
del EVENT_CORE["s3"]["object"][d]
In [13]:
EVENT_CORE
Out[13]:
In [31]:
import pprint
In [38]:
pprint.pprint(EVENT_CORE, width=100)
In [14]:
def make_event(name, eTag="", key="", size=0, versionId=""):
e = deepcopy(EVENT_CORE)
e["eventName"] = name
if key:
e["s3"]["object"]["key"] = key
if eTag:
e["s3"]["object"]["eTag"] = eTag
if size:
e["s3"]["object"]["size"] = size
if versionId:
e["s3"]["object"]["versionId"] = versionId
return e
In [15]:
make_event("ObjectRemoved:Delete") == od
Out[15]:
In [25]:
make_event(
"ObjectRemoved:DeleteMarkerCreated",
versionId="1313131313131.Vier50HdNbi7ZirO65",
eTag="123456",
key="hello+world.txt"
) == odm
Out[25]:
In [30]:
make_event(
"ObjectCreated:Put",
eTag="123456",
key="hello+world.txt",
size=100
) == op
Out[30]:
In [2]:
def outer(i=1):
def inner():
print(i)
inner()
In [6]:
outer(19)
In [7]:
mraw = [{'index': {'_index': 'test-bucket', '_id': 'hello world.txt:1313131313131.Vier50HdNbi7ZirO65'}}, {'comment': '', 'content': 'Hello World!', 'etag': '123456', 'event': 'ObjectCreated:Put', 'ext': '.txt', 'key': 'hello world.txt', 'last_modified': '2020-05-30T02:36:45.186960+00:00', 'meta_text': ' ', 'size': 100, 'target': '', 'updated': '2020-05-30T02:36:45.190205', 'version_id': '1313131313131.Vier50HdNbi7ZirO65'}]
In [8]:
mraw
Out[8]:
In [9]:
mact = [{'index': {'_index': 'test-bucket', '_id': 'hello world.txt:1313131313131.Vier50HdNbi7ZirO65'}}]
In [10]:
mact
Out[10]:
In [20]:
[next(iter(y)) for y,z in [x.items() for x in mact]]
In [24]:
[next(iter(x.keys())) for x in mact]
Out[24]:
In [25]:
[{k:v} for k,v in [a.items() for a in mact]]
In [33]:
[{k:v} for k,v in [x for x in mact]]
In [41]:
[k,v in x.items() for x in mact]
In [ ]: