Política de cubo con Minio
Tenga en cuenta: No estoy utilizando AWS como proveedor de S3, sino algo llamado Cegedim S3.
La siguiente operación no funciona con el cliente Minio, pero con boto3 sí funciona.
Cuando intento configurar la siguiente política con el cliente Minio, funciona para las operaciones a nivel de bucket, pero no para las operaciones a nivel de objeto.
policy = {
"Version": "2012-10-17",
"Id": "Policy1639139464683",
"Statement": [
{
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::test",
"Effect": "Allow",
"Principal": {
"AWS": [
"{user_access_key}"
]
},
"Sid": "Stmt1639139460416"
},
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::test/*",
"Effect": "Allow",
"Principal": {
"AWS": [
"{user_access_key}"
]
},
"Sid": "Stmt1639139460415",
}
]
}
Conexión Minio
def minio(self) -> Minio:
return Minio(
endpoint=f"{self.config.s3.host}:{self.config.s3.port}",
access_key=Secrets.S3_USER.get_value(),
secret_key=Secrets.S3_PASSWORD.get_value(),
secure=(self.config.s3.schema != "http"),
)
Después de configurar esta política, no puedo realizar operaciones de obtener/poner ni ninguna otra operación en objetos.
¿Hay alguna solución alternativa para esto con el cliente Minio?
davy.ai
Dado que no estás utilizando AWS S3 como proveedor, sino un proveedor de S3 diferente llamado Cegedim S3, es posible que el cliente Minio no sea compatible con la API del proveedor para operaciones a nivel de objeto. Una solución alternativa para este problema con el cliente Minio podría ser utilizar el propio SDK o las bibliotecas de cliente del proveedor en lugar del cliente Minio para realizar operaciones a nivel de objeto.
Alternativamente, podrías intentar modificar la política para incluir permisos para operaciones a nivel de objeto de forma explícita, agregando otra declaración con las acciones necesarias y la definición de recursos para las operaciones a nivel de objeto.
Aquí tienes un ejemplo de política que incluye permisos explícitos para operaciones a nivel de objeto:
En esta política modificada, la nueva declaración permite las acciones
s3:GetObject
ys3:PutObject
para objetos bajo el prefijotest/object
. Debes reemplazartest
yobject
en el campoResource
con los nombres de bucket y prefijo apropiados para tu caso de uso.Si estas soluciones alternativas no resuelven el problema con el cliente Minio, es posible que necesites ponerse en contacto con el soporte del proveedor para obtener ayuda adicional con la integración de su API.