mirror of
https://github.com/minio/minio.git
synced 2024-12-24 22:25:54 -05:00
Add transition event notification (#11047)
This is a MinIO specific extension to allow monitoring of transition events.
This commit is contained in:
parent
038bcd9079
commit
934bed47fa
@ -356,11 +356,23 @@ func transitionObject(ctx context.Context, objectAPI ObjectLayer, objInfo Object
|
|||||||
opts.Versioned = globalBucketVersioningSys.Enabled(oi.Bucket)
|
opts.Versioned = globalBucketVersioningSys.Enabled(oi.Bucket)
|
||||||
opts.VersionID = oi.VersionID
|
opts.VersionID = oi.VersionID
|
||||||
opts.TransitionStatus = lifecycle.TransitionComplete
|
opts.TransitionStatus = lifecycle.TransitionComplete
|
||||||
|
eventName := event.ObjectTransitionComplete
|
||||||
|
|
||||||
if _, err = objectAPI.DeleteObject(ctx, oi.Bucket, oi.Name, opts); err != nil {
|
_, err = objectAPI.DeleteObject(ctx, oi.Bucket, oi.Name, opts)
|
||||||
return err
|
if err != nil {
|
||||||
|
eventName = event.ObjectTransitionFailed
|
||||||
}
|
}
|
||||||
return nil
|
// Notify object deleted event.
|
||||||
|
sendEvent(eventArgs{
|
||||||
|
EventName: eventName,
|
||||||
|
BucketName: oi.Bucket,
|
||||||
|
Object: ObjectInfo{
|
||||||
|
Name: oi.Name,
|
||||||
|
VersionID: opts.VersionID,
|
||||||
|
},
|
||||||
|
Host: "Internal: [ILM-Transition]",
|
||||||
|
})
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// getLifecycleTransitionTargetArn returns transition ARN for storage class specified in the config.
|
// getLifecycleTransitionTargetArn returns transition ARN for storage class specified in the config.
|
||||||
|
@ -127,6 +127,11 @@ aws s3api restore-object --bucket srcbucket \
|
|||||||
--restore-request Days=3
|
--restore-request Days=3
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 4.1 Monitoring transition events
|
||||||
|
`s3:ObjectTransition:Complete` and `s3:ObjectTransition:Failed` events can be used to monitor transition events between the source cluster and transition tier. To watch lifecycle events, you can enable bucket notification on the source bucket with `mc event add` and specify `--event ilm` flag.
|
||||||
|
|
||||||
|
Note that transition event notification is a MinIO extension.
|
||||||
|
|
||||||
## Explore Further
|
## Explore Further
|
||||||
- [MinIO | Golang Client API Reference](https://docs.min.io/docs/golang-client-api-reference.html#SetBucketLifecycle)
|
- [MinIO | Golang Client API Reference](https://docs.min.io/docs/golang-client-api-reference.html#SetBucketLifecycle)
|
||||||
- [Object Lifecycle Management](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
|
- [Object Lifecycle Management](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
|
||||||
|
@ -55,6 +55,9 @@ const (
|
|||||||
ObjectRestorePostInitiated
|
ObjectRestorePostInitiated
|
||||||
ObjectRestorePostCompleted
|
ObjectRestorePostCompleted
|
||||||
ObjectRestorePostAll
|
ObjectRestorePostAll
|
||||||
|
ObjectTransitionAll
|
||||||
|
ObjectTransitionFailed
|
||||||
|
ObjectTransitionComplete
|
||||||
)
|
)
|
||||||
|
|
||||||
// Expand - returns expanded values of abbreviated event type.
|
// Expand - returns expanded values of abbreviated event type.
|
||||||
@ -94,6 +97,11 @@ func (name Name) Expand() []Name {
|
|||||||
ObjectRestorePostInitiated,
|
ObjectRestorePostInitiated,
|
||||||
ObjectRestorePostCompleted,
|
ObjectRestorePostCompleted,
|
||||||
}
|
}
|
||||||
|
case ObjectTransitionAll:
|
||||||
|
return []Name{
|
||||||
|
ObjectTransitionFailed,
|
||||||
|
ObjectTransitionComplete,
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return []Name{name}
|
return []Name{name}
|
||||||
}
|
}
|
||||||
@ -152,6 +160,12 @@ func (name Name) String() string {
|
|||||||
return "s3:ObjectRestore:Post"
|
return "s3:ObjectRestore:Post"
|
||||||
case ObjectRestorePostCompleted:
|
case ObjectRestorePostCompleted:
|
||||||
return "s3:ObjectRestore:Completed"
|
return "s3:ObjectRestore:Completed"
|
||||||
|
case ObjectTransitionAll:
|
||||||
|
return "s3:ObjectTransition:*"
|
||||||
|
case ObjectTransitionFailed:
|
||||||
|
return "s3:ObjectTransition:Failed"
|
||||||
|
case ObjectTransitionComplete:
|
||||||
|
return "s3:ObjectTransition:Complete"
|
||||||
}
|
}
|
||||||
|
|
||||||
return ""
|
return ""
|
||||||
@ -254,7 +268,12 @@ func ParseName(s string) (Name, error) {
|
|||||||
return ObjectRestorePostInitiated, nil
|
return ObjectRestorePostInitiated, nil
|
||||||
case "s3:ObjectRestore:Completed":
|
case "s3:ObjectRestore:Completed":
|
||||||
return ObjectRestorePostCompleted, nil
|
return ObjectRestorePostCompleted, nil
|
||||||
|
case "s3:ObjectTransition:Failed":
|
||||||
|
return ObjectTransitionFailed, nil
|
||||||
|
case "s3:ObjectTransition:Complete":
|
||||||
|
return ObjectTransitionComplete, nil
|
||||||
|
case "s3:ObjectTransition:*":
|
||||||
|
return ObjectTransitionAll, nil
|
||||||
default:
|
default:
|
||||||
return 0, &ErrInvalidEventName{s}
|
return 0, &ErrInvalidEventName{s}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user