Almacenamiento de objetos para Roving Edge Infrastructure
Describe cómo gestionar las tareas de almacenamiento de objetos, incluidas las relacionadas con cubos y objetos, en los dispositivos de Roving Edge Infrastructure.
En esta sección se describen los siguientes servicios de dispositivo de Roving Edge Infrastructure relacionados con el almacenamiento de objetos:
Umbrales de Rendimiento y Uso
Le recomendamos que mantenga sus umbrales de almacenamiento por debajo del 80%. Mantener este nivel es importante para optimizar el rendimiento, especialmente para operaciones de escritura intensivas. Si la capacidad del dispositivo Roving Edge Infrastructure se acerca al 80 %, transfiera datos a su arrendamiento de OCI hasta que el nivel de almacenamiento sea inferior al 80 % para lograr un funcionamiento óptimo de los servicios.
Controle de forma regular el espacio de almacenamiento disponible para todos los dispositivos de Roving Edge Infrastructure. Consulte Roving Edge Infrastructure Device Monitoring.
API de compatibilidad de Amazon S3
Con la API de compatibilidad de Amazon S3, los clientes pueden seguir utilizando sus herramientas de Amazon S3 existentes (por ejemplo, los clientes SDK) y realizar cambios mínimos en sus aplicaciones para trabajar con Object Storage. Los conjuntos de datos de la API de compatibilidad de Amazon S3 y de Object Storage son congruentes. Si se escriben datos en Object Storage mediante el uso de la API de compatibilidad de Amazon S3, se pueden volver a leer mediante la API nativa de Object Storage y, a la inversa.
Diferencias entre la API de Object Storage y la API de compatibilidad de Amazon S3
El servicio Object Storage proporcionado por Oracle Cloud Infrastructure y Amazon S3 utilizan conceptos y terminología similares. En ambos casos, los datos se almacenan como objetos en cubos. Las diferencias se encuentran en la implementación de funciones y herramientas para trabajar con objetos.
A continuación, se destacan las diferencias entre las dos tecnologías de almacenamiento:
-
Compartimentos
Amazon S3 no utiliza compartimentos. Por defecto, los cubos creados mediante la API de compatibilidad de Amazon S3 o la API de Swift se crean en el compartimento raíz del arrendamiento de Oracle Cloud Infrastructure. En su lugar, puede designar un compartimento diferente para que la API de compatibilidad de Amazon S3 o la API de Swift creen cubos en él.
-
Espacio de nombres de cubo global
Object Storage no utiliza un espacio de nombres de cubo global. En su lugar, el espacio de nombres sirve como contenedor de nivel superior para todos los cubos y objetos. Durante la creación de la cuenta, a cada inquilino se le asigna un nombre de espacio de nombre inmutable, generado por el sistema y único. El espacio de nombre abarca todos los compartimentos dentro de una región. Puede controlar los nombres de cubo, pero esos nombres de cubo deben ser únicos dentro de un espacio de nombre. Aunque el espacio de nombre es específico de la región, el espacio de nombre en sí es el mismo en todas las regiones. Puede tener un cubo denominado MyBucket en el oeste de EE. UU. (Phoenix) y un cubo denominado MyBucket en el centro de Alemania (Fráncfort).
-
Cifrado
El servicio Object Storage cifra todos los datos en reposo por defecto. El cifrado no se puede activar ni desactivar mediante la API.
-
Listas de control de acceso de nivel de objeto (ACL)
Oracle Cloud Infrastructure no utiliza ACL para objetos. En su lugar, un administrador debe configurar grupos , compartimentos y políticas que controlen qué usuarios pueden acceder a qué servicios, qué recursos y el tipo de acceso. Por ejemplo, las políticas controlan quién puede crear usuarios y grupos, crear cubos, descargar objetos y gestionar reglas y políticas relacionadas con Object Storage.
Para obtener más información, consulte Descripción general de Object Storage.
Configuración de acceso a Oracle Cloud Infrastructure
Para permitir el acceso a la aplicación desde Amazon S3 a Object Storage, debe configurar el acceso a Oracle Cloud Infrastructure y modificar la aplicación.
-
Regístrese en Oracle Cloud Infrastructure y obtenga un espacio de nombres único.
-
Cualquier usuario de la API de compatibilidad de Amazon S3 con Object Storage necesita permiso para trabajar con el servicio. Si no está seguro de si tiene permiso, póngase en contacto con el administrador. Para obtener más información sobre las políticas, consulte Cómo funcionan las políticas. Para conocer las políticas que permiten el uso de Object Storage, consulte Políticas comunes y la Referencia de políticas.
-
Utilice una clave secreta de cliente existente. Una clave secreta de cliente consta del par clave de acceso/clave secreta. La creación y el uso de estas claves se describen en la siguiente sección sobre la configuración del archivo de configuración S3.
Configuración del archivo de configuración S3
Object Storage en Roving Edge Infrastructure admite la herramienta S3cmd de Amazon, además de admitir la interfaz de línea de comandos de Oracle Cloud Infrastructure. El soporte de la herramienta S3cmd de Amazon requiere que configure el archivo de configuración S3, pero también admite S3cmd.
s3cmd se puede descargar del siguiente sitio:
En Macintosh y Linux, el archivo de configuración s3cmd se denomina .s3cfg
y se encuentra en el directorio raíz, por ejemplo:
/home/username/($HOME)
En Windows, el archivo de configuración s3cmd se denomina s3cmd.ini
y se encuentra en %USERPROFILE% -> Application Data
, que normalmente es el siguiente:
c:\users\username\AppData\Roaming\s3cmd.ini
Para obtener más información, consulte: https://s3tools.org/kb/item14.htm
En el siguiente ejemplo se muestra el contenido del archivo de configuración S3cmd:
[default]
access_key = 9aa40ec9-bec3-4fab-9e5a-3584a5979d48
access_token =
add_encoding_exts =
add_headers =
bucket_location = US
cache_file =
ca_certs_file = <Full path to the bundle.pem file>
check_ssl_hostname = False
default_mime_type = binary/octet-stream
delay_updates = False
delete_after = False
delete_after_fetch = False
delete_removed = False
dry_run = False
enable_multipart = True
encoding = UTF-8
encrypt = False
expiry_date =
expiry_days =
expiry_prefix =
follow_symlinks = False
force = False
get_continue = False
gpg_command = /usr/bin/gpg
gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_passphrase =
guess_mime_type = True
host_base = <rover_node_ip>:8019
host_bucket = <rover_node_ip>:8019
human_readable_sizes = False
ignore_failed_copy = False
invalidate_default_index_on_cf = False
invalidate_default_index_root_on_cf = True
invalidate_on_cf = False
list_md5 = False
log_target_prefix =
max_delete = -1
mime_type =
multipart_chunk_size_mb = 15
preserve_attrs = True
progress_meter = True
proxy_host =
proxy_port = 0
put_continue = False
recursive = False
recv_chunk = 4096
reduced_redundancy = False
restore_days = 1
secret_key = <Your secret key, see below>
send_chunk = 4096
server_side_encryption = False
skip_existing = False
socket_timeout = 300
urlencoding_mode = normal
use_https = True
use_mime_magic = True
verbosity = WARNING
website_endpoint = https://<rover_node_ip>:8015
website_error =
Para configurar el archivo de configuración S3cmd para su uso con Roving Edge Infrastructure:
-
Actualice el campo access_key:
-
Inicie sesión en la consola de dispositivos de Roving Edge Infrastructure del dispositivo adecuado.
-
-
Haga clic en el usuario cuya clave de acceso desea utilizar en el archivo de configuración S3cmd. Aparece la página Detalles del usuario.
-
Haga clic en Claves secretas de cliente en Recursos. Aparecerá la página Claves secretas de cliente. Todas las claves secretas de cliente se muestran en formato tabular.
-
Copie la clave de acceso y péguela en el valor del campo access_key del archivo de configuración s3cmd.
-
-
Actualice el campo ca_certs_file: introduzca la ruta de acceso completa del archivo
bundle.pem
, por ejemplo:/Users/user_name/.oci/bundle.pem
Si no tiene el archivo ca certs, descárguelo con el siguiente comando:
echo -n | openssl s_client -showcerts -connect rover_node_IP:8015 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > bundle.pem
-
Defina el campo check_ssl_hostname en
false
. -
Actualice el campo host_base: introduzca
rover_node_IP:8019
. -
Actualice el campo host_bucket: introduzca
rover_node_IP:8019
. -
Actualice el campo secret_key:
-
Inicie sesión en la consola de dispositivos de Roving Edge Infrastructure del dispositivo adecuado.
-
Abra el menú de navegación y seleccione Gestión de identidad > Usuarios. Aparece la página Usuarios. Todos los usuarios se muestran en formato tabular.
-
Haga clic en el usuario cuya clave secreta desea utilizar en el archivo de configuración S3cmd. Aparece la página Detalles del usuario.
-
Haga clic en Claves secretas de cliente en Recursos. Aparecerá la página Claves secretas de cliente. Todas las claves secretas de cliente se muestran en formato tabular.
-
Haga clic en Generar clave secreta. La Clave secreta generada se mostrará en el cuadro de diálogo Generar clave secreta. Al mismo tiempo, Oracle genera la Clave de acceso que está emparejada con la Clave secreta. La clave secreta de cliente recién generada se agregará a la lista Claves secretas de cliente.
-
Copie la clave y péguela en el valor del campo secret_key en el archivo de configuración s3cmd.
-
-
Guardar y cerrar el archivo de configuración s3cmd.
Soporte de la API de compatibilidad de Amazon S3
El soporte de la API de compatibilidad de Amazon S3 se proporciona en el nivel de cubo y en el nivel de objeto.
API de cubo
Se admiten las siguientes API de cubo:
- DeleteBucket
- HeadBucket
- GetService (muestra todos los cubos)
- ListObjects
- PutBucket
API de objeto
Se admiten las siguientes API de objeto:
API de carga de varias partes
Se admiten las siguientes API de carga de varias partes:
Soporte de SSE-C
Con las cabeceras de API opcionales, puede proporcionar su propia clave de cifrado AES de 256 bits que se utiliza para cifrar y descifrar objetos cargados y descargados en Object Storage.
Si desea utilizar sus propias claves para el cifrado de servidor, especifique las tres cabeceras de solicitud siguientes con la información de clave de cifrado:
Cabeceras | Descripción | API soportadas |
---|---|---|
x-amz-server-side-encryption-customer-algorithm
|
Especifica "AES256" como algoritmo de cifrado. | |
x-amz-server-side-encryption-customer-key
|
Especifica la clave de cifrado de 256 bits codificada en base64 que se utilizará para cifrar o descifrar los datos. | |
x-amz-server-side-encryption-customer-key-md5
|
Especifica el resumen MD5 de 128 bits codificado en base64 de la clave de cifrado. Este valor se utiliza para comprobar la integridad de la clave de cifrado. |
El almacenamiento de objetos tiene API distintas para copiar objetos y copiar partes. Amazon S3 utiliza la presencia de las siguientes cabeceras en PutObject y UploadPart para determinar las operaciones de copia. Para copiar un objeto de origen cifrado con una clave SSE-C, debe especificar estas tres cabeceras para que Object Storage pueda descifrar el objeto.
Cabeceras | Descripción | API soportadas |
---|---|---|
x-amz-copy-source-server-side-encryption-customer-algorithm
|
Especifica "AES256" como algoritmo de cifrado que se utilizará para descifrar el objeto de origen. | |
x-amz-copy-source-server-side-encryption-customer-key
|
Especifica la clave de cifrado de 256 bits codificación base64 que se utilizará para descifrar el objeto de origen. | |
x-amz-copy-source-server-side-encryption-customer-key-md5
|
Especifica el resumen MD5 de 128 bits codificado en base64 de la clave de cifrado utilizada para descifrar el objeto de origen. |
Soporte para el cifrado utilizando sus propias claves en Vault
Con las cabecera de API opcionales, puede proporcionar su propia clave de cifrado en Vault, que se utiliza para cifrar los objetos cargados en Object Storage.
Si desea utilizar sus propias claves en Vault para el cifrado de servidor, especifique la siguiente cabecera de solicitud con el OCID de la clave de Vault:
Cabeceras | Descripción | API soportadas |
---|---|---|
x-amz-server-side-encryption-aws-kms-key-id |
OCID de una clave existente en Vault que se utilizará para cifrar el objeto. |
Clientes de Amazon S3 soportados
Puede configurar varias aplicaciones cliente para comunicarse con los puntos finales compatibles con Amazon S3 de Object Storage. En este tema se proporcionan algunos ejemplos de configuración para clientes de Amazon S3 soportados. Revise los requisitos en Configuración de acceso a Oracle Cloud Infrastructure.
SDK de AWS para Java
El SDK de AWS para el repositorio de Java, la descarga de archivos y los enlaces de documentación están disponibles en GitHub: https://github.com/aws/aws-sdk-java.
A continuación se muestra un ejemplo de configuración del SDK de AWS para Java para utilizar Object Storage
// Put the Access Key and Secret Key here
AWSCredentialsProvider credentials = new AWSStaticCredentialsProvider(new BasicAWSCredentials(
"gQ4+YC530sBa8qZI6WcbUbtH8oar0exampleuniqueID",
"7fa22331ebe62bf4605dc9a42aaeexampleuniqueID"))));
// Your namespace
String namespace = "rover-namespace";
// The region to connect to
String region = "us-ashburn-1";
// Create an S3 client pointing at the region
String endpoint = String.format("%s.compat.objectstorage.%s.oraclecloud.com",namespace,region);
AwsClientBuilder.EndpointConfiguration endpointConfiguration = new AwsClientBuilder.EndpointConfiguration(endpoint, region);
AmazonS3 client = AmazonS3Client.builder()
.standard()
.withCredentials(credentials)
.withEndpointConfiguration(endpointConfiguration)
.disableChunkedEncoding()
.enablePathStyleAccess()
.build();
SDK de AWS para Javascript
El SDK de AWS para el repositorio de Javascript, los enlaces de documentación y las instrucciones de instalación están disponibles en GitHub: https://github.com/aws/aws-sdk-js.
A continuación se muestra un ejemplo de configuración del SDK de AWS para Javascript para utilizar Object Storage
s3 = new AWS.S3({
region: 'us-ashburn-1',
endpoint: 'https://' + rover-namespace + '.compat.objectstorage.us-ashburn-1.oraclecloud.com',
accessKeyId: 'gQ4+YC530sBa8qZI6WcbUbtH8oar0exampleuniqueID',
secretAccessKey: '7fa22331ebe62bf4605dc9a42aaeexampleuniqueID',
s3ForcePathStyle: true,
signatureVersion: 'v4',
});
SDK de AWS para Python (Boto3)
El SDK de AWS para el repositorio de Python (Boto3), los enlaces de documentación y las instrucciones de instalación están disponibles en GitHub: https://github.com/boto/boto3.
A continuación se muestra un ejemplo de configuración del SDK de AWS para Python para utilizar Object Storage
import boto3
s3 = boto3.resource(
's3',
aws_access_key_id="gQ4+YC530sBa8qZI6WcbUbtH8oar0exampleuniqueID",
aws_secret_access_key="7fa22331ebe62bf4605dc9a42aaeexampleuniqueID",
region_name="us-phoenix-1", # Region name here that matches the endpoint
endpoint_url="https://rover-namespace.compat.objectstorage.us-phoenix-1.oraclecloud.com" # Include your rover-namespace in the URL
)
# Print out the bucket names
for bucket in s3.buckets.all():
print bucket.name
Montaje de cubos de Object Storage mediante s3fs
s3fs permite a Linux y macOS montar Object Storage como un sistema de archivos. El repositorio s3fs, los enlaces de documentación, las instrucciones de instalación y los ejemplos están disponibles en GitHub: https://github.com/s3fs-fuse/s3fs-fuse.
s3fs no es adecuado para todas las aplicaciones. Tenga en cuenta las siguientes limitaciones:
-
Los servicios de almacenamiento de objetos tienen una alta latencia en comparación con los sistemas de archivos locales por el tiempo hasta el primer byte y la falta de acceso de escritura aleatoria. s3fs obtiene el mejor rendimiento en cargas de trabajo que solo leen archivos grandes.
-
No es posible actualizar parcialmente un archivo, por lo que cambiar un único byte requiere cargar el archivo completo.
-
Las escrituras aleatorias o los anexos a archivos requieren que se vuelva a escribir todo el archivo.
-
s3fs no soporta las descargas parciales, por lo que incluso si solo desea leer un byte de un archivo, debe descargar el archivo completo.
-
s3fs no soporta las copias de archivos en el servidor. Los archivos duplicados deben descargarse primero en el cliente y, a continuación, cargarse en la nueva ubicación.
-
Las operaciones de metadatos, como mostrar directorios, tienen un rendimiento bajo debido a la latencia de red.
-
s3fs no soporta los enlaces físicos ni los cambios de nombre atómicos de archivos o directorios.
-
s3fs no proporciona coordinación entre varios clientes que monten el mismo cubo.
Para montar un cubo de Object Storage como un sistema de archivos:
-
Siga las instrucciones de instalación que se proporcionan en GitHub: https://github.com/s3fs-fuse/s3fs-fuse.
Si no puede realizar la instalación con un paquete creado previamente, siga las instrucciones de compilación aquí: https://github.com/s3fs-fuse/s3fs-fuse/blob/master/COMPILATION.md.
-
Revise y realice los requisitos en Configuración de acceso a Oracle Cloud Infrastructure. Necesita un par clave de acceso/clave secreta y una política de IAM adecuada que le permita montar un cubo como un sistema de archivos. Por ejemplo:
Allow group s3fsAdmins to manage object-family in tenancy
-
Introduzca las credenciales del par clave de acceso/clave secreta en un archivo de credenciales ${HOME}/.passwd-s3fs}:
cat ${HOME}/.passwd-s3fs access_key:secret_key
Por ejemplo:
cat ${HOME}/.passwd-s3fs gQ4+YC530sBa8qZI6WcbUbtH8oar0exampleuniqueID:7fa22331ebe62bf4605dc9a42aaeexampleuniqueID
A continuación, defina permisos de solo propietario para el archivo de credenciales:
chmod 600 ${HOME}/.passwd-s3fs
-
Cree un punto de montaje para montar un cubo de Object Storage:
mkdir /path/to/local_directory_name s3fs bucket_name local_directory_name -o passwd_file=${HOME}/.passwd-s3fs -o url=https://rover-namespace.compat.objectstorage.region_ID.oraclecloud.com -o use_path_request_style -o kernel_cache -o multipart_size=128 -o parallel_count=50 -o multireq_max=100 -o max_background=1000 [-o endpoint=region_ID]
Donde:
-
bucket_name es el nombre del cubo que desea montar.
-
local_directory_name es el nombre del directorio local en el que desea montar el cubo.
-
namespace_name es el único generado por el sistema asignado a su arrendamiento en el momento de la creación de la cuenta. Puede utilizar la CLI o la consola para obtener el nombre del espacio de nombres. Consulte Descripción de los espacios de nombres de Object Storage para obtener más información.
-
region_ID es el identificador de región donde reside el cubo. Consulte Regiones y dominios de disponibilidad para obtener más información.
-
endpoint
: si desea montar un cubo creado en su región principal, no necesita especificar el parámetroendpoint
. Si desea montar un cubo creado en una región diferente, debe especificar el parámetroendpoint
.
-
-
Si desea que el cubo se monte automáticamente como un sistema de archivos al iniciar el sistema mediante s3fs, agregue lo siguiente al archivo
/etc/fstab
:bucket_name /path/to/local_directory_name fuse. s3fs use_path_request_style,passwd_file=/root/.s3fs-password,url=https://rover-namespace. compat.objectstorage.region_ID.oraclecloud.com,endpoint=region_ID kernel_cache,multipart_size=128,parallel_count=50,multireq_max=100,max_background=1000,_netdev
-
Para verificar el montaje del cubo s3fs, ejecute el comando
df -h
. La salida muestra el nuevo punto de montaje del cubo. Vaya hasta el nuevo punto de montaje y ejecute el comandols
para mostrar todos los objetos del cubo.
Para solucionar problemas de montaje de un cubo de Object Storage
- Si recibe errores de autorización, revise las políticas de IAM y asegúrese de tener una que le permita montar un cubo como un sistema de archivos. Por ejemplo:
Allow group s3fsAdmins to manage object-family in tenancy
- Si intenta montar un cubo creado en una región distinta de su región principal, debe especificar esa otra región en los parámetros
url
yendpoint
. - Si monta un cubo como usuario raíz, otros usuarios no podrán mostrar objetos o acceder a ellos en el cubo a menos que agregue
-o allow_other
al comando s3fs oallow_other
en las opciones de montaje/etc/fstab
. También puede proporcionar parámetros de UID y GID específicos para especificar detalles de acceso de usuario. -
Si ha revisado y verificado las soluciones de solución de problemas y necesita ponerse en contacto con el soporte, vuelva a ejecutar el comando de montaje en modo DEBUG para obtener más detalles sobre los fallos. Agregue lo siguiente al final del comando y guarde la salida:
-o dbglevel=info -f -o curldbg
umount /path/to/local_directory_name