s3storage issueshttps://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues2024-02-26T11:27:15Zhttps://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/16Non compatible avec la dernière version de moto (5)2024-02-26T11:27:15ZFabien Amargerfabien.amarger@logilab.frNon compatible avec la dernière version de moto (5)La denrière version de moto pour mock le s3 ne contient pas la fonction `mock_s3` mais apparemment c'est maintenant `mock_aws`La denrière version de moto pour mock le s3 ne contient pas la fonction `mock_s3` mais apparemment c'est maintenant `mock_aws`Fabien Amargerfabien.amarger@logilab.frFabien Amargerfabien.amarger@logilab.frhttps://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/15Permettre de rendre la gestion du bucket versioning optionnel2022-09-28T14:04:39ZAurélien LubertPermettre de rendre la gestion du bucket versioning optionnelL'objet `BucketVersioning` permet de gérer un *bucket* S3 (qu'il soit versionné ou non) et de pouvoir le manipuler.
Il est donc possible d'activer le *versioning* pour un *bucket* qui n'a pas cette option, ce qui indique que celui-ci es...L'objet `BucketVersioning` permet de gérer un *bucket* S3 (qu'il soit versionné ou non) et de pouvoir le manipuler.
Il est donc possible d'activer le *versioning* pour un *bucket* qui n'a pas cette option, ce qui indique que celui-ci est bien versionné, même s'il n'est plus fonctionnel…
On ne peut donc pas se fier au résultat de ces commandes, il serait donc intéressant d'ajouter une option de configuration du cube s3storage pour activer ou non, la gestion du *versioning*.
* [S3.BucketVersioning](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html?highlight=upload_fileobj#S3.BucketVersioning)Bucket VersioningEfflam LemailletEfflam Lemaillethttps://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/14Télécharger un fichier du bucket S3 à partir d'un VersionID2022-09-28T14:04:45ZAurélien LubertTélécharger un fichier du bucket S3 à partir d'un VersionIDLa méthode `download` du module `S3Storage` permet de télécharger un fichier depuis le *bucket* S3, via la méthode `get_object`.
Cette méthode peut avoir comme argument positionnel, la clef `VersionId`, qui lui permet de télécharger un ...La méthode `download` du module `S3Storage` permet de télécharger un fichier depuis le *bucket* S3, via la méthode `get_object`.
Cette méthode peut avoir comme argument positionnel, la clef `VersionId`, qui lui permet de télécharger un fichier à partir d'une version spécifique.
Ce téléchargement doit aussi pouvoir se faire, sans que l'on donne de version.
* [S3.Client.get_object](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html?highlight=upload_fileobj#S3.Client.get_object)Bucket Versioninghttps://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/13Intégrer la valeur du VersionID du fichier téléversé à l'entité dédié2022-09-28T14:04:43ZAurélien LubertIntégrer la valeur du VersionID du fichier téléversé à l'entité dédiéUne fois le fichier envoyé sur le *bucket* S3, la méthode `put_object` (implémenté dans #12) va retourner un dictionnaire contenant les métadonnées du fichier.
Si le *bucket* S3 est versionné, la clef `VersionID` devrait être disponible...Une fois le fichier envoyé sur le *bucket* S3, la méthode `put_object` (implémenté dans #12) va retourner un dictionnaire contenant les métadonnées du fichier.
Si le *bucket* S3 est versionné, la clef `VersionID` devrait être disponible dans ce dictionnaire et contenir celle du fichier téléversé.
Les méthodes `entity_added` et `entity_updated` du module `S3Storage` vont donc avoir besoin d'ajouter cette information à l'entité quand elle est disponible.Bucket Versioninghttps://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/12Remplacer l'usage de upload_fileobj par put_object2022-09-28T14:04:41ZAurélien LubertRemplacer l'usage de upload_fileobj par put_objectLa méthode `upload_fileobj` ne permet pas de récupérer les informations concernant le fichier envoyé sur le *bucket* S3, contrairement à la méthode `put_object`.
- [S3.Client.upload_fileobj](https://boto3.amazonaws.com/v1/documentation/...La méthode `upload_fileobj` ne permet pas de récupérer les informations concernant le fichier envoyé sur le *bucket* S3, contrairement à la méthode `put_object`.
- [S3.Client.upload_fileobj](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html?highlight=upload_fileobj#S3.Client.upload_fileobj)
- [S3.Client.put_object](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html?highlight=upload_fileobj#S3.Client.put_object)Bucket Versioninghttps://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/11Permettre la gestion d'un Bucket versionné avec le cube S3Storage2022-09-28T14:04:52ZAurélien LubertPermettre la gestion d'un Bucket versionné avec le cube S3StorageUn *bucket* S3 peut être versionné et permettre aux fichiers d'être re-téléversés sans perdre le fichier original.
Pour ajouter cette fonctionnalité à ce cube, il va falloir mettre en place les points suivants :
* Faire en sorte de récu...Un *bucket* S3 peut être versionné et permettre aux fichiers d'être re-téléversés sans perdre le fichier original.
Pour ajouter cette fonctionnalité à ce cube, il va falloir mettre en place les points suivants :
* Faire en sorte de récupérer le `VersionID` du fichier téléversé sur le *bucket* S3
* Conserver une rétrocompatibilité avec l'existant en rendant cet `VersionID` optionel (via une option de configuration par exemple)
* Permettre de télécharger un fichier depuis le *bucket* S3 avec un `VersionID` spécifiqueBucket Versioninghttps://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/10[bug] two identical files can not be created in the same transaction2021-02-23T17:06:48ZKatia Saurfelt[bug] two identical files can not be created in the same transactionfix the bug for two identical files created in same transactionfix the bug for two identical files created in same transaction1.0.3https://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/9S3storage : update strategy is different from BFSStorage2021-02-23T17:06:06ZKatia SaurfeltS3storage : update strategy is different from BFSStorageContrairement à BFSStorge la mise à jour de contenu ne génère pas de nouveau fichier ce qui casse de façon silencieuse la compatibilité avec BFSStorageContrairement à BFSStorge la mise à jour de contenu ne génère pas de nouveau fichier ce qui casse de façon silencieuse la compatibilité avec BFSStorage1.0.3https://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/8Check new_key2021-02-23T17:03:33ZKatia SaurfeltCheck new_keyVerify file names doesn't contain "Characters to avoid" :
* https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html
* doesn't start with "/"Verify file names doesn't contain "Characters to avoid" :
* https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html
* doesn't start with "/"Elouan MartinetElouan Martinethttps://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/7Manage ACL on S3 stored data2021-02-23T17:01:51ZArthur LutzManage ACL on S3 stored dataIn some use cases we want to manage ACL on some objects stored via cubicweb on s3. For example, getting a file to be set to private on some published/unpublished workflow.In some use cases we want to manage ACL on some objects stored via cubicweb on s3. For example, getting a file to be set to private on some published/unpublished workflow.https://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/6Faciliter la surcharge des DeleteFileOp.postcommit_event et AddFileOp.postco...2021-02-23T17:00:04ZKatia SaurfeltFaciliter la surcharge des DeleteFileOp.postcommit_event et AddFileOp.postcommit_eventSur FranceArchives nous avons besoin de surcharger les DeleteFileOp.postcommit_event et AddFileOp.postcommit_event pour chaque fichier traité. Serait-il possible d'avoir la possibilité d'appeler du code sur chaque donnée :
```
class...Sur FranceArchives nous avons besoin de surcharger les DeleteFileOp.postcommit_event et AddFileOp.postcommit_event pour chaque fichier traité. Serait-il possible d'avoir la possibilité d'appeler du code sur chaque donnée :
```
class S3DeleteFileOp(DataOperationMixIn, LateOperation):
containercls = list
def new_func_process_data(self, storage, key, eid, attr):
pass
def postcommit_event(self):
for storage, key, eid, attr in self.get_data():
self.info('Deleting object %s.%s (%s/%s) from S3',
eid, attr, storage.bucket, key)
resp = storage.s3cnx.delete_object(Bucket=storage.bucket, Key=key)
if resp.get('ResponseMetadata', {}).get('HTTPStatusCode') >= 300:
self.error('S3 object deletion FAILED: %s', resp)
else:
self.debug('S3 object deletion OK: %s', resp)
self.new_func_process_data(storage, key, eid, attr)
```https://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/5Upload with correct content_type2021-02-23T16:57:36ZArthur LutzUpload with correct content_typeWhen uploading data, try to get the content_type right :
![Screenshot_from_2020-12-08_14-24-39](/uploads/c80ce6e34b6ade6b93c617ffb4f2c5b9/Screenshot_from_2020-12-08_14-24-39.png)
* `Marianne_2.png` was uploaded with `aws s3 cp Mariann...When uploading data, try to get the content_type right :
![Screenshot_from_2020-12-08_14-24-39](/uploads/c80ce6e34b6ade6b93c617ffb4f2c5b9/Screenshot_from_2020-12-08_14-24-39.png)
* `Marianne_2.png` was uploaded with `aws s3 cp Marianne_2.png s3://bucket/`
* `a70331df7b0bcc42c62404073957d6bc6018ad72_Marianne_2.png` was uploaded by s3storage1.0.3https://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/4Document access to s3storage ressources from nginx2020-12-08T10:56:28ZArthur LutzDocument access to s3storage ressources from nginxIn some use cases when s3storage is used we might want to bypass completely pyramid/cubicweb and serve files from nginx (or even in public bucket domain), document that usecase.In some use cases when s3storage is used we might want to bypass completely pyramid/cubicweb and serve files from nginx (or even in public bucket domain), document that usecase.https://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/3Document access from pyramid part2020-12-08T10:54:52ZArthur LutzDocument access from pyramid partOften cubicweb application also have a "pure pyramid" part which doesn't use the cubicweb part.
It would be nice to document how to use s3storage in conjunction with that.Often cubicweb application also have a "pure pyramid" part which doesn't use the cubicweb part.
It would be nice to document how to use s3storage in conjunction with that.https://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/2Dependency problem with urllib3 & python3.7 & botocore2021-01-20T10:08:55ZArthur LutzDependency problem with urllib3 & python3.7 & botocoreAfter adding s3storage as a dependency :
```
INFO[0175] Running: [/bin/sh -c docker-cubicweb-helper create-instance]
Traceback (most recent call last):
File "/usr/bin/cubicweb-ctl", line 11, in <module>
load_entry_point('cubicwe...After adding s3storage as a dependency :
```
INFO[0175] Running: [/bin/sh -c docker-cubicweb-helper create-instance]
Traceback (most recent call last):
File "/usr/bin/cubicweb-ctl", line 11, in <module>
load_entry_point('cubicweb==3.26.17', 'console_scripts', 'cubicweb-ctl')()
File "/usr/lib/python3/dist-packages/cubicweb/cwctl.py", line 1085, in run
cwcfg.load_cwctl_plugins()
File "/usr/lib/python3/dist-packages/cubicweb/cwconfig.py", line 694, in load_cwctl_plugins
for cube in cls.available_cubes():
File "/usr/lib/python3/dist-packages/cubicweb/cwconfig.py", line 472, in available_cubes
module = entry_point.load()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2410, in load
self.require(*args, **kwargs)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2433, in require
items = working_set.resolve(reqs, env, installer, extras=self.extras)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 791, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (urllib3 1.24.3 (/home/cubicweb/.local/lib/python3.7/site-packages), Requirement.parse('urllib3<1.26,>=1.25.4; python_version != "3.4"'), {'botocore'})
```https://forge.extranet.logilab.fr/cubicweb/cubes/s3storage/-/issues/1Provide ccplugin to test s3 storage configuration2020-08-19T14:50:12ZArthur LutzProvide ccplugin to test s3 storage configurationIt would be nice to have a ccplugin that makes it easier to test if an s3 storage configuration is correct.
`cubicweb-ctl s3-test instance` would create a file, so some checks on it, and then remove it
I don't know if it could be in ...It would be nice to have a ccplugin that makes it easier to test if an s3 storage configuration is correct.
`cubicweb-ctl s3-test instance` would create a file, so some checks on it, and then remove it
I don't know if it could be in two steps so that the user can go and look at the bucket and see the `cubicweb-hello-world.txt` file exists and then go back and have another command to remove the test.