Storage degli oggetti per l'infrastruttura Roving Edge

Descrive come gestire i task di storage degli oggetti, inclusi quelli relativi a bucket e oggetti, nei dispositivi dell'infrastruttura Roving Edge.

Questa sezione descrive i seguenti servizi su dispositivo dell'infrastruttura Roving Edge correlati allo storage degli oggetti:

Soglie di prestazioni e uso

Si consiglia di mantenere le soglie di storage inferiori all'80%. Mantenere questo livello è importante per ottimizzare le prestazioni, soprattutto per le operazioni di scrittura intensiva. Se la capacità del dispositivo dell'infrastruttura Roving Edge si avvicina all'80%, trasferisci i dati nella tua tenancy OCI fino a quando il livello di storage non scende al di sotto dell'80% per ottenere il funzionamento ottimale dei servizi.

Monitorare regolarmente lo spazio di storage disponibile per tutti i dispositivi dell'infrastruttura Roving Edge. Vedere Monitoraggio dei dispositivi dell'infrastruttura Roving Edge.

API di compatibilità Amazon S3

Grazie all'API di compatibilità Amazon S3, i clienti possono continuare a utilizzare gli strumenti Amazon S3 esistenti (ad esempio client SDK) e apportare modifiche minime alle applicazioni da utilizzare con lo storage degli oggetti. L'API di compatibilità Amazon S3 e i set di dati di storage degli oggetti sono congruenti. Se i dati vengono scritti nello storage degli oggetti mediante l'API di compatibilità Amazon S3, sarà possibile leggere di nuovo i dati mediante l'API di storage degli oggetti nativa e, al contrario,.

Differenze tra l'API di storage degli oggetti e l'API di compatibilità Amazon S3

Il servizio di storage degli oggetti fornito da Oracle Cloud Infrastructure e Amazon S3 utilizza concetti e terminologia simili. In entrambi i casi, i dati vengono memorizzati come oggetti nei bucket. Le differenze sono nell'implementazione di funzionalità e strumenti per lavorare con gli oggetti.

Di seguito sono riportate le differenze tra le due tecnologie di storage:

  • Compartimenti

    Amazon S3 non utilizza compartimenti. Per impostazione predefinita, i bucket creati mediante l'API di compatibilità Amazon S3 o l'API Swift vengono creati nel compartimento radice della tenancy Oracle Cloud Infrastructure. In alternativa, puoi designare un compartimento diverso per l'API di compatibilità Amazon S3 o l'API Swift in cui creare i bucket.

  • Spazio di nomi bucket globale

    Lo storage degli oggetti non utilizza uno spazio di nomi bucket globale. Lo spazio di nomi funge invece da contenitore di livello superiore per tutti i gruppi e oggetti. In fase di creazione dell'account, a ogni tenant viene assegnato un nome di spazio dei nomi univoco e immutabile, generato dal sistema. Lo spazio dei nomi comprende tutti i compartimenti all'interno di un'area. È possibile controllare i nomi dei bucket, ma tali nomi devono essere univoci all'interno di uno spazio dei nomi. Mentre lo spazio dei nomi è specifico dell'area, il nome dello spazio dei nomi è lo stesso in tutte le aree. È possibile avere un bucket denominato MyBucket nell'area occidentale degli Stati Uniti (Phoenix) e un bucket denominato MyBucket nell'area centrale della Germania (Francoforte).

  • Cifratura

    Per impostazione predefinita, il servizio di storage degli oggetti cifra tutti i dati in archivio. Impossibile attivare o disattivare la cifratura mediante l'API.

  • ACL (Object Level Access Control List)

    Oracle Cloud Infrastructure non utilizza ACL per gli oggetti. Un amministratore deve invece impostare i gruppi , i compartimenti e i criteri che controllano quali utenti possono accedere a quali servizi, a quali risorse e al tipo di accesso. Ad esempio, i criteri controllano chi può creare utenti e gruppi, creare bucket, scaricare oggetti e gestire criteri e regole correlati allo storage degli oggetti.

Per ulteriori informazioni, vedere Panoramica dello storage degli oggetti.

Impostazione dell'accesso a Oracle Cloud Infrastructure

Per abilitare l'accesso alle applicazioni da Amazon S3 allo storage degli oggetti, è necessario impostare l'accesso a Oracle Cloud Infrastructure e modificare l'applicazione.

  1. Iscriviti a Oracle Cloud Infrastructure e ottieni uno spazio di nomi univoco.

  2. Qualsiasi utente dell'API di compatibilità Amazon S3 con lo storage degli oggetti deve disporre dell'autorizzazione per utilizzare il servizio. Se non si è sicuri di avere l'autorizzazione, contattare l'amministratore. Per informazioni di base sui criteri, vedere funzionamento dei criteri. Per i criteri che consentono l'uso dello storage degli oggetti, vedere Criteri comuni e il riferimento ai criteri.

  3. Utilizzare una chiave segreta cliente esistente o crearne una. Una chiave segreta del cliente è costituita da una coppia chiave di accesso/chiave segreta. La creazione e l'uso di queste chiavi sono descritte nella sezione seguente relativa all'impostazione del file di configurazione S3.

Configurazione del file di configurazione S3

Lo storage degli oggetti sull'infrastruttura Roving Edge supporta lo strumento S3cmd di Amazon oltre a supportare l'interfaccia della riga di comando di Oracle Cloud Infrastructure. Il supporto dello strumento S3cmd di Amazon richiede la configurazione del file di configurazione S3, ma supporta anche S3cmd.

È possibile scaricare s3cmd dal seguente sito:

https://s3tools.org/download

Su Macintosh e Linux, il file di configurazione s3cmd si chiama .s3cfg e si trova nella directory home, ad esempio:

/home/username/($HOME)

In Windows, il file di configurazione s3cmd è denominato s3cmd.ini e si trova in %USERPROFILE% -> Application Data, che in genere è il seguente:

c:\users\username\AppData\Roaming\s3cmd.ini

Per ulteriori informazioni, visitare il sito Web all'indirizzo: https://s3tools.org/kb/item14.htm

L'esempio seguente mostra il contenuto del file di configurazione 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 =

Per impostare il file di configurazione S3cmd da utilizzare con l'infrastruttura Roving Edge, procedere come segue.

  1. Aggiornare il campo access_key:

    1. Eseguire il login alla console dei dispositivi dell'infrastruttura Roving Edge del dispositivo appropriato.

    2. Aprire il menu di navigazione e selezionare Identity Management > Utenti. Viene visualizzata la pagina Utenti. Tutti gli utenti sono elencati in formato tabulare.

    3. Selezionare l'utente di cui si desidera utilizzare la chiave di accesso nel file di configurazione S3cmd. Viene visualizzata la pagina Dettagli dell'utente.

    4. Selezionare Customer Secret Keys in Risorse. Viene visualizzata la pagina Chiavi segrete cliente. Tutte le chiavi segrete del cliente sono elencate in formato tabulare.

    5. Copiare la chiave di accesso e incollarla nel valore del campo access_key nel file di configurazione s3cmd.

  2. Aggiornare il campo ca_certs_file: immettere il percorso completo del file bundle.pem, ad esempio:

    /Users/user_name/.oci/bundle.pem

    Se non si dispone del file di certificati ca, scaricarlo utilizzando il seguente comando:

    echo -n | openssl s_client -showcerts -connect rover_node_IP:8015 | 
    sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > bundle.pem
  3. Impostare il campo check_ssl_hostname su false.

  4. Aggiornare il campo host_base: immettere il valore rover_node_IP:8019.

  5. Aggiornare il campo host_bucket: immettere il valore rover_node_IP:8019.

  6. Aggiornare il campo secret_key:

    1. Eseguire il login alla console dei dispositivi dell'infrastruttura Roving Edge del dispositivo appropriato.

    2. Aprire il menu di navigazione e selezionare Identity Management > Utenti. Viene visualizzata la sezione Utenti. Tutti gli utenti sono elencati in formato tabulare.

    3. Selezionare l'utente della cui chiave segreta si desidera utilizzare nel file di configurazione S3cmd. Viene visualizzata la pagina Dettagli dell'utente.

    4. Selezionare Customer Secret Keys in Risorse. Viene visualizzata la pagina Chiavi segrete cliente. Tutte le chiavi segrete del cliente sono elencate in formato tabulare.

    5. Selezionare Genera chiave segreta. La chiave segreta generata viene visualizzata nella finestra di dialogo Genera chiave segreta. Allo stesso tempo, Oracle genera il chiave di accesso abbinato alla chiave segreta. La nuova chiave segreta cliente generata viene aggiunta all'elenco di chiavi segrete cliente.

    6. Copiare la chiave e incollarla nel valore del campo secret_key nel file di configurazione s3cmd.

  7. Salvare e chiudere il file di configurazione s3cmd.

Supporto dell'API di compatibilità Amazon S3

Il supporto dell'API di compatibilità Amazon S3 viene fornito a livello di bucket e di oggetto.

API bucket

Sono supportate le seguenti API bucket:

API oggetto

Sono supportate le seguenti API oggetto:

API di caricamento multiparte

Sono supportate le seguenti API di caricamento multiparte:

Supporto SSE-C

Utilizzando intestazioni API facoltative, puoi fornire la tua chiave di cifratura AES a 256 bit utilizzata per cifrare e decifrare gli oggetti caricati e scaricati dallo storage degli oggetti.

Se si desidera utilizzare le proprie chiavi per la cifratura lato server, specificare le tre intestazioni di richiesta riportate di seguito con le informazioni relative alle chiavi di cifratura.

Intestazioni descrizione; API supportate
x-amz-server-side-encryption-customer-algorithm Specifica "AES256" come algoritmo di cifratura.

GetObject

HeadObject

PutObject

InitiateMultipartUpload

UploadPart

x-amz-server-side-encryption-customer-key Specifica la chiave di cifratura a 256 bit con codifica base64 da utilizzare per cifrare o decifrare i dati.
x-amz-server-side-encryption-customer-key-md5 Specifica il digest MD5 a 128 bit con codifica base64 della chiave di cifratura. Questo valore viene utilizzato per controllare l'integrità della chiave di cifratura.

Lo storage degli oggetti dispone di API distinte per copiare gli oggetti e copiare le parti. Amazon S3 utilizza la presenza delle seguenti intestazioni in PutObject e UploadPart per determinare le operazioni di copia. Per copiare un oggetto di origine cifrato con una chiave SSE-C, è necessario specificare queste tre intestazioni in modo che lo storage degli oggetti possa decifrare l'oggetto.

Intestazioni descrizione; API supportate
x-amz-copy-source-server-side-encryption-customer-algorithm Specifica "AES256" come algoritmo di cifratura da utilizzare per decifrare l'oggetto di origine.

PutObject

UploadPart

x-amz-copy-source-server-side-encryption-customer-key Specifica la chiave di cifratura a 256 bit con codifica base64 da utilizzare per decifrare l'oggetto di origine.
x-amz-copy-source-server-side-encryption-customer-key-md5 Specifica il digest MD5 a 128 bit con codifica base64 della chiave di cifratura utilizzata per decifrare l'oggetto di origine.

Supporto per la cifratura mediante le chiavi personali nel vault

Utilizzando intestazioni API facoltative, puoi fornire la tua chiave di cifratura nel vault utilizzata per cifrare gli oggetti caricati nello storage degli oggetti.

Se si desidera utilizzare le proprie chiavi nel vault per la cifratura lato server, specificare l'intestazione di richiesta seguente con l'OCID della chiave nel vault:

Intestazioni descrizione; API supportate
x-amz-server-side-encryption-aws-kms-key-id OCID di una chiave esistente nel vault da utilizzare per cifrare l'oggetto.

PutObject

InitiateMultipartUpload

UploadPart

Client Amazon S3 supportati

Puoi configurare varie applicazioni client per comunicare con gli endpoint compatibili con Amazon S3 dello storage degli oggetti. In questo argomento vengono forniti alcuni esempi di configurazione per i client Amazon S3 supportati. Rivedere i prerequisiti in Impostazione dell'accesso a Oracle Cloud Infrastructure.

SDK AWS per Java

L'SDK AWS per il repository Java, il download di file e i collegamenti alla documentazione sono disponibili sul sito GitHub: https://github.com/aws/aws-sdk-java.

Ecco un esempio di configurazione dell'SDK AWS per Java per l'uso dello storage degli oggetti


                // 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 AWS per Javascript

L'SDK AWS per il repository Javascript, i collegamenti alla documentazione e le istruzioni di installazione sono disponibili su GitHub: https://github.com/aws/aws-sdk-js.

Ecco un esempio di configurazione dell'SDK AWS per Javascript per l'utilizzo dello storage degli oggetti

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 AWS per Python (Boto3)

Il repository SDK AWS per Python (Boto3), i collegamenti alla documentazione e le istruzioni di installazione sono disponibili sul sito GitHub: https://github.com/boto/boto3.

Ecco un esempio di configurazione dell'SDK AWS per Python per utilizzare lo storage degli oggetti

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

Esecuzione del MOUNT dei bucket di storage degli oggetti mediante s3fs

s3fs consente a Linux e macOS di eseguire il MOUNT dello storage degli oggetti come file system. Il repository s3fs, i collegamenti alla documentazione, le istruzioni di installazione ed esempi sono disponibili sul sito GitHub: https://github.com/s3fs-fuse/s3fs-fuse.

s3fs non è adatto a tutte le applicazioni. Comprendere le seguenti limitazioni:

  • I servizi di storage degli oggetti hanno un'alta latenza rispetto ai file system locali per il tempo necessario al primo byte e non dispongono di accesso in scrittura casuale. s3fs ottiene il throughput migliore sui carichi di lavoro che leggono solo file di grandi dimensioni.

  • Impossibile aggiornare parzialmente un file. La modifica di un singolo byte richiede il caricamento dell'intero file.

  • Le scritture casuali o le aggiunte ai file richiedono la riscrittura dell'intero file.

  • s3fs non supporta i download parziali, quindi anche se si desidera leggere solo un byte di un file, è necessario scaricare l'intero file.

  • s3fs non supporta le copie dei file lato server. I file copiati devono essere prima scaricati nel client e poi caricati nella nuova posizione.

  • Le operazioni dei metadati, come la lista delle directory, hanno prestazioni scadenti a causa della latenza di rete.

  • s3fs non supporta i collegamenti hardware o le ridenominazioni atomiche di file o directory.

  • s3fs non fornisce alcun coordinamento tra più client che montano lo stesso bucket.

Per eseguire il MOUNT di un bucket di storage degli oggetti come file system, effettuare le operazioni riportate di seguito.

  1. Seguire le istruzioni di installazione disponibili sul sito GitHub: https://github.com/s3fs-fuse/s3fs-fuse.

    Se non è possibile eseguire l'installazione utilizzando un pacchetto predefinito, seguire le istruzioni di compilazione disponibili al seguente indirizzo: https://github.com/s3fs-fuse/s3fs-fuse/blob/master/COMPILATION.md.

  2. Rivedere ed eseguire i prerequisiti in Impostazione dell'accesso a Oracle Cloud Infrastructure. Sono necessarie una coppia chiave di accesso/chiave segreta e un criterio IAM appropriato che ti consente di eseguire il MOUNT di un bucket come file system. Ad esempio:
    Allow group s3fsAdmins to manage object-family in tenancy
  3. Immettere le credenziali della coppia chiave di accesso/chiave segreta in un file delle credenziali ${HOME}/.passwd-s3fs:

    cat ${HOME}/.passwd-s3fs
    access_key:secret_key

    Ad esempio:

    cat ${HOME}/.passwd-s3fs
    gQ4+YC530sBa8qZI6WcbUbtH8oar0exampleuniqueID:7fa22331ebe62bf4605dc9a42aaeexampleuniqueID

    Quindi, impostare le autorizzazioni di solo proprietario per il file delle credenziali:

    chmod 600 ${HOME}/.passwd-s3fs
  4. Creare un punto di accesso per eseguire il MOUNT di un bucket di storage degli oggetti:
    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]

    Dove:

    • bucket_name è il nome del bucket di cui si desidera eseguire il MOUNT.

    • local_directory_name è il nome della directory locale in cui si desidera eseguire il MOUNT del bucket.

    • namespace_name è l'elemento univoco generato dal sistema assegnato alla tenancy al momento della creazione dell'account. È possibile utilizzare l'interfaccia CLI o la console per ottenere il nome dello spazio di nomi. Per i dettagli, vedere Informazioni sugli spazi di nomi dello storage degli oggetti.

    • region_ID è l'identificativo dell'area in cui risiede il bucket. Per i dettagli, vedere Aree e domini di disponibilità.

    • endpoint: se si desidera eseguire il MOUNT di un bucket creato nella propria area di origine, non è necessario specificare il parametro endpoint. Se si desidera eseguire il MOUNT di un bucket creato in un'area diversa, è necessario specificare il parametro endpoint.

  5. Se si desidera eseguire automaticamente il MOUNT del bucket come file system all'avvio del sistema utilizzando s3fs, aggiungere quanto segue al file /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
  6. Per verificare l'accesso del bucket s3fs, eseguire il comando df -h. L'output mostra il nuovo punto di accesso per il bucket. Andare al nuovo punto di accesso ed eseguire il comando ls per elencare tutti gli oggetti nel bucket.

Per risolvere i problemi relativi all'esecuzione del MOUNT di un bucket di storage degli oggetti

  • Se ricevi errori di autorizzazione, rivedi i criteri IAM e assicurati di averne uno che ti consenta di eseguire il MOUNT di un bucket come file system. Ad esempio:
    Allow group s3fsAdmins to manage object-family in tenancy
  • Se si sta tentando di eseguire il MOUNT di un bucket creato in un'area diversa dall'area di origine, è necessario specificare un'altra area nei parametri url e endpoint.
  • Se si monta un bucket come utente root, gli altri utenti non saranno in grado di elencare o accedere agli oggetti nel bucket a meno che non si aggiunga -o allow_other al comando s3fs o allow_other alle opzioni di accesso /etc/fstab. È inoltre possibile fornire parametri UID e GID specifici per specificare i dettagli di accesso utente.
  • Se le soluzioni di risoluzione dei problemi sono state esaminate e verificate ed è necessario contattare il supporto clienti, eseguire nuovamente il comando mount in modalità DEBUG per ottenere ulteriori dettagli sull'errore. Aggiungere quanto segue alla fine del comando e salvare l'output:
    -o dbglevel=info -f -o curldbg
Per eseguire il NO MOUNT di un bucket di storage degli oggetti da un file system, eseguire il comando riportato di seguito, specificando il punto di accesso:
umount /path/to/local_directory_name