Skip to content

Commit

Permalink
S3: add EventBridge notification for delete object tagging (#7712)
Browse files Browse the repository at this point in the history
  • Loading branch information
MikiPWata authored May 24, 2024
1 parent 32f915d commit 3308b7b
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
9 changes: 9 additions & 0 deletions moto/s3/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2687,8 +2687,17 @@ def delete_object_tagging(
self, bucket_name: str, key_name: str, version_id: Optional[str] = None
) -> None:
key = self.get_object(bucket_name, key_name, version_id=version_id)
bucket = self.get_bucket(bucket_name)

self.tagger.delete_all_tags_for_resource(key.arn) # type: ignore

notifications.send_event(
self.account_id,
notifications.S3NotificationEvent.OBJECT_TAGGING_DELETE_EVENT,
bucket,
key,
)

def delete_object(
self,
bucket_name: str,
Expand Down
35 changes: 35 additions & 0 deletions tests/test_s3/test_s3_eventbridge_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -305,3 +305,38 @@ def test_put_object_tagging_notification():
assert event_message["region"] == REGION_NAME
assert event_message["detail"]["bucket"]["name"] == bucket_name
assert event_message["detail"]["reason"] == "ObjectTagging"


@mock_aws
def test_delete_object_tagging_notification():
resource_names = _seteup_bucket_notification_eventbridge()
bucket_name = resource_names["bucket_name"]
s3_client = boto3.client("s3", region_name=REGION_NAME)

# Put Object
s3_client.put_object(Bucket=bucket_name, Key="keyname", Body="bodyofnewobject")

# Put Object Tagging
s3_client.put_object_tagging(
Bucket=bucket_name,
Key="keyname",
Tagging={
"TagSet": [
{"Key": "item1", "Value": "foo"},
{"Key": "item2", "Value": "bar"},
]
},
)

# Delete Object Tagging
s3_client.delete_object_tagging(Bucket=bucket_name, Key="keyname")

events = _get_send_events()
assert len(events) == 4
event_message = json.loads(events[3]["message"])
assert event_message["detail-type"] == "Object Tags Deleted"
assert event_message["source"] == "aws.s3"
assert event_message["account"] == ACCOUNT_ID
assert event_message["region"] == REGION_NAME
assert event_message["detail"]["bucket"]["name"] == bucket_name
assert event_message["detail"]["reason"] == "ObjectTagging"

0 comments on commit 3308b7b

Please sign in to comment.