mirror of
https://github.com/minio/minio.git
synced 2025-05-21 09:33:50 -04:00
Add notification for object access via GET/HEAD (#3941)
The following notification event types are available for all targets, s3:ObjectAccessed:Get s3:ObjectAccessed:Head s3:ObjectAccessed:*
This commit is contained in:
parent
181e002c56
commit
13c4ce3617
@ -94,6 +94,10 @@ const (
|
|||||||
ObjectCreatedCompleteMultipartUpload
|
ObjectCreatedCompleteMultipartUpload
|
||||||
// ObjectRemovedDelete is s3:ObjectRemoved:Delete
|
// ObjectRemovedDelete is s3:ObjectRemoved:Delete
|
||||||
ObjectRemovedDelete
|
ObjectRemovedDelete
|
||||||
|
// ObjectAccessedGet is s3:ObjectAccessed:Get
|
||||||
|
ObjectAccessedGet
|
||||||
|
// ObjectAccessedHead is s3:ObjectAccessed:Head
|
||||||
|
ObjectAccessedHead
|
||||||
)
|
)
|
||||||
|
|
||||||
// Stringer interface for event name.
|
// Stringer interface for event name.
|
||||||
@ -109,6 +113,10 @@ func (eventName EventName) String() string {
|
|||||||
return "s3:ObjectCreated:CompleteMultipartUpload"
|
return "s3:ObjectCreated:CompleteMultipartUpload"
|
||||||
case ObjectRemovedDelete:
|
case ObjectRemovedDelete:
|
||||||
return "s3:ObjectRemoved:Delete"
|
return "s3:ObjectRemoved:Delete"
|
||||||
|
case ObjectAccessedGet:
|
||||||
|
return "s3:ObjectAccessed:Get"
|
||||||
|
case ObjectAccessedHead:
|
||||||
|
return "s3:ObjectAccessed:Head"
|
||||||
default:
|
default:
|
||||||
return "s3:Unknown"
|
return "s3:Unknown"
|
||||||
}
|
}
|
||||||
|
@ -268,6 +268,7 @@ func testListenBucketNotificationNilHandler(obj ObjectLayer, instanceType, bucke
|
|||||||
[]string{"*.jpg"}, []string{
|
[]string{"*.jpg"}, []string{
|
||||||
"s3:ObjectCreated:*",
|
"s3:ObjectCreated:*",
|
||||||
"s3:ObjectRemoved:*",
|
"s3:ObjectRemoved:*",
|
||||||
|
"s3:ObjectAccessed:*",
|
||||||
}), 0, nil, credentials.AccessKey, credentials.SecretKey)
|
}), 0, nil, credentials.AccessKey, credentials.SecretKey)
|
||||||
if tErr != nil {
|
if tErr != nil {
|
||||||
t.Fatalf("%s: Failed to create HTTP testRequest for ListenBucketNotification: <ERROR> %v", instanceType, tErr)
|
t.Fatalf("%s: Failed to create HTTP testRequest for ListenBucketNotification: <ERROR> %v", instanceType, tErr)
|
||||||
|
@ -29,6 +29,9 @@ var suppportedEventTypes = map[string]struct{}{
|
|||||||
// Object removed event types.
|
// Object removed event types.
|
||||||
"s3:ObjectRemoved:*": {},
|
"s3:ObjectRemoved:*": {},
|
||||||
"s3:ObjectRemoved:Delete": {},
|
"s3:ObjectRemoved:Delete": {},
|
||||||
|
"s3:ObjectAccessed:Get": {},
|
||||||
|
"s3:ObjectAccessed:Head": {},
|
||||||
|
"s3:ObjectAccessed:*": {},
|
||||||
}
|
}
|
||||||
|
|
||||||
// checkEvent - checks if an event is supported.
|
// checkEvent - checks if an event is supported.
|
||||||
|
@ -173,6 +173,14 @@ func (api objectAPIHandlers) GetObjectHandler(w http.ResponseWriter, r *http.Req
|
|||||||
// call wrter.Write(nil) to set appropriate headers.
|
// call wrter.Write(nil) to set appropriate headers.
|
||||||
writer.Write(nil)
|
writer.Write(nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify object accessed via a GET request.
|
||||||
|
eventNotify(eventData{
|
||||||
|
Type: ObjectAccessedGet,
|
||||||
|
Bucket: bucket,
|
||||||
|
ObjInfo: objInfo,
|
||||||
|
ReqParams: extractReqParams(r),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// HeadObjectHandler - HEAD Object
|
// HeadObjectHandler - HEAD Object
|
||||||
@ -221,6 +229,14 @@ func (api objectAPIHandlers) HeadObjectHandler(w http.ResponseWriter, r *http.Re
|
|||||||
|
|
||||||
// Successful response.
|
// Successful response.
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
|
|
||||||
|
// Notify object accessed via a HEAD request.
|
||||||
|
eventNotify(eventData{
|
||||||
|
Type: ObjectAccessedHead,
|
||||||
|
Bucket: bucket,
|
||||||
|
ObjInfo: objInfo,
|
||||||
|
ReqParams: extractReqParams(r),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract metadata relevant for an CopyObject operation based on conditional
|
// Extract metadata relevant for an CopyObject operation based on conditional
|
||||||
|
Loading…
x
Reference in New Issue
Block a user