abdallahashraf22 opened a new issue, #876: URL: https://github.com/apache/arrow-rs-object-store/issues/876
*please excuse my python only examples* **Is your feature request related to a problem or challenge? Please describe what you are trying to do.** Yes The current implementation doesn't support setting ACL policies on specific files on upload. it also doesn't support other parameters that could come be useful (like Metadata or other ExtraArgs) examples of the ACL settings: in boto3 of AWS https://docs.aws.amazon.com/boto3/latest/guide/s3-uploading-files.html#the-extraargs-parameter this allows the file to be set as public, so it's accessible using the CDN link or S3 origin link ``` s3.upload_file( 'FILE_NAME', 'amzn-s3-demo-bucket', 'OBJECT_NAME', ExtraArgs={'ACL': 'public-read'} ) ``` it's also available in the aws request syntax of put file https://docs.aws.amazon.com/botocore/latest/reference/services/s3/client/put_object.html <img width="1041" height="195" alt="Image" src="https://github.com/user-attachments/assets/18ec0a71-58dd-44ef-a60f-42bb17040736" /> afaik this is also available in GCP as the "predefinedAcl" https://docs.cloud.google.com/storage/docs/json_api/v1/objects/insert https://docs.cloud.google.com/storage/docs/json_api/v1/objects/insert#parameters <img width="1141" height="524" alt="Image" src="https://github.com/user-attachments/assets/65a1da2b-1425-46c8-882e-f947f0769ef1" /> it was requested in obstore (the library that I use) https://github.com/developmentseed/obstore/issues/601 but since it's a wrapper around this library it couldn't be done currently I'm using digital Ocean and it's an aws-s3-like storage bucket, and it can use ACLs to set files to public read as well <img width="546" height="386" alt="Image" src="https://github.com/user-attachments/assets/80a8e690-b617-47ea-8e7f-6a83fbb539fa" /> **Describe the solution you'd like** I would like the project to support a key like "extra information" where I can provide key: value pairs of what implementation specific options that needs to be added something like ``` extra_options={ "ACL": "public-read", "Metadata" :{ "some_key": "some_value", "other_key": "other_value" }, "SomeOtherPlatformSpecificKey": "some_value" } ``` **Describe alternatives you've considered** alternative I considered is using the downstream library to upload, then setting the ACL using boto3 ``` store = S3Store( bucket=DO_BUCKET, endpoint=DO_ENDPOINT, access_key_id=DO_KEY, secret_access_key=DO_SECRET, ) response = store.put(path=object_path, file=file, attributes={"Content-Type": content_type}) async with s3_session.client( "s3", endpoint_url=DO_ENDPOINT ) as s3_client: response = await s3_client.put_object_acl( Bucket=DO_BUCKET, Key=object_path, ACL="public-read", ) # and for metadata it's worse await s3_client.copy_object( Bucket=DO_BUCKET, Key=key, CopySource={ "Bucket": DO_BUCKET, "Key": object_path, }, Metadata={ "some_key": "some_value" }, MetadataDirective="REPLACE", ) **Additional context** no additional context, just that I know it opens hell's door, supporting some non specific set of keys, but it also opens up a lot of possibilities and supports a lot of extra use cases -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
