### Is there an existing issue for this?

- [X] I have searched the existing issues

### Enhancement description

Currently, I'm using Localstack to test locally a lambda function that takes s3`ObjectRestore:Completed` notifications as inputs and it would be really great to have support for these events.

I know that right now as a workaround I can invoke the lambda function manually using a payload with the same shape that s3 uses, but it's better to have the process run as close as it would run in AWS.

Thanks for creating and maintaining localstack, it's really great!

### 🧑‍💻 Implementation

Not sure, but happy to help if you can give me some pointers.

### Anything else?

_No response_
extract_bucket_key_version_id_from_copy_source,
    get_bucket_from_moto,
    get_header_name,
    get_key_from_moto_bucket,
    get_lifecycle_rule_from_object,
    get_object_checksum_for_algorithm,
    is_bucket_name_valid,
    is_canned_acl_bucket_valid,
    is_key_expired,
    is_valid_canonical_id,
    serialize_expiration_header,
    validate_dict_fields,
    validate_kms_key_id,
    verify_checksum,
)
from localstack.services.s3.website_hosting import register_website_hosting_routes
from localstack.utils.aws import arns, aws_stack
from localstack.utils.aws.arns import s3_bucket_name
from localstack.utils.collections import get_safe
from localstack.utils.patch import patch
from localstack.utils.strings import short_uid
from localstack.utils.time import parse_timestamp
from localstack.utils.urls import localstack_host
LOG = logging.getLogger(__name__)
os.environ[
    "MOTO_S3_CUSTOM_ENDPOINTS"
] = "s3.localhost.localstack.cloud:4566,s3.localhost.localstack.cloud"
MOTO_CANONICAL_USER_ID = "75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a"
S3_MAX_FILE_SIZE_BYTES = 512 * 1024
class MalformedXML(CommonServiceException):