Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Expiration Lifecycle #192

Open
KirillovDenis opened this issue Aug 5, 2021 · 4 comments
Open

Support Expiration Lifecycle #192

KirillovDenis opened this issue Aug 5, 2021 · 4 comments
Assignees
Labels
feature Completely new functionality I2 Regular impact S4 Routine U4 Nothing urgent

Comments

@KirillovDenis
Copy link
Contributor

Should we support lifecycle? https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html
I suppose there are some restriction (if we want to support it):

  • Support only Expiration actions (available Expiration actions and Transition actions) because s3-gw can not handle storage classes (or it will be?)
  • Expiration actions will only work in the context of the gateway, and the gateway must store the user's credentials
@realloc
Copy link

realloc commented Aug 12, 2021

We can't use NeoFS exipration attributes here, because in S3 the object lifecycle/expiration is mutable.

@alexvanin
Copy link
Contributor

Good use case for serverless functions to handle actions after expiration.

@KirillovDenis
Copy link
Contributor Author

Blocked by nspcc-dev/neofs-api#226

@KirillovDenis
Copy link
Contributor Author

Still there are some questions:

Access rights.

We need a bearer token to be able to delete an object after appropriate tick happens.
We can store this info (address of the object with access box) in user-defined tick data nspcc-dev/neofs-api#226)

Where we should store expiration object info:

  1. In the version tree
    • Pros: One request to tree service during head object request.
    • Cons: Complicated logic to retrieve expiration info because the node in tree will be sibling for object version nodes
  2. In the expiration tree
    • Pros: Simple logic
    • Cons: Additional request to the tree service on every head/get object request
  3. Don't store expiration info at all and compute it on every request using cached lifecycle configuration
    • Pros: There is not extra request to the tree service
    • Cons: More CPU intensive every head/get object request

It seems we have to extend object/expiration info that stored in tree service by object size to be able to get rid of head request.

@roman-khimov roman-khimov added U4 Nothing urgent S4 Routine I2 Regular impact feature Completely new functionality and removed U3 Regular labels Dec 20, 2023
@roman-khimov roman-khimov removed the blocked Can't be done because of something label Jun 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature Completely new functionality I2 Regular impact S4 Routine U4 Nothing urgent
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants