Stockage d'objet pour Roving Edge Infrastructure

Explique comment gérer les tâches de stockage d'objet, y compris celles pour les buckets et les objets, sur vos appareils Roving Edge Infrastructure.

Cette section décrit les services sur appareil Roving Edge Infrastructure suivants, associés au stockage d'objet :

Seuils de performances et d'utilisation

Nous vous recommandons de maintenir vos seuils de stockage en dessous de 80 %. Le maintien de ce niveau est important pour optimiser les performances, en particulier pour les opérations d'écriture intensives. Si la capacité de l'appareil Roving Edge Infrastructure approche les 80 %, transférez les données vers votre location OCI jusqu'à ce que le niveau de stockage tombe en dessous de 80 % pour obtenir un fonctionnement optimal des services.

Surveillez régulièrement l'espace de stockage disponible pour tous vos appareils Roving Edge Infrastructure. Reportez-vous à Surveillance d'appareil Roving Edge Infrastructure.

API de compatibilité Amazon S3

Grâce à l'API de compatibilité Amazon S3, les clients peuvent continuer à utiliser leurs outils Amazon S3 existants (clients de kit SDK, par exemple) et apporter des modifications minimes à leurs applications pour qu'elles fonctionnent avec Object Storage. Les ensembles de données de l'API de compatibilité Amazon S3 et d'Object Storage sont compatibles. Si les données sont écrites dans Object Storage avec l'API de compatibilité Amazon S3, vous pouvez les lire avec l'API native Object Storage et inversement.

Différences entre l'API Object Storage et l'API de compatibilité Amazon S3

Le service Object Storage fourni par Oracle Cloud Infrastructure et Amazon S3 utilisent des concepts et une terminologie similaires. Dans les deux cas, les données sont stockées en tant qu'objets dans des buckets. Les différences résident dans l'implémentation des fonctionnalités et des outils permettant d'utiliser les objets.

Les informations suivantes mettent en évidence les différences entre les deux technologies de stockage :

  • Compartiments

    Amazon S3 n'utilise pas de compartiments. Par défaut, les buckets créés à l'aide de l'API de compatibilité Amazon S3 ou de l'API Swift sont créés dans le compartiment racine de la location Oracle Cloud Infrastructure. A la place, vous pouvez désigner un compartiment différent dans lequel l'API de compatibilité Amazon S3 ou l'API Swift peut créer des buckets.

  • Espace de noms de bucket global

    Object Storage n'utilise pas d'espace de noms de bucket global. A la place, l'espace de noms sert de conteneur de niveau supérieur pour tous les buckets et objets. Au moment de la création de compte, chaque locataire reçoit un nom d'espace de noms unique, généré par le système et non mutable. L'espace de noms couvre tous les compartiments d'une région. Vous contrôlez les noms de catégorie, mais ces noms doivent être uniques au sein d'un espace de noms. Bien que l'espace de noms soit spécifique d'une région, le nom d'espace de noms est le même dans toutes les régions. Vous pouvez nommer un bucket MyBucket dans l'ouest des Etats-Unis (Phoenix) et un autre MyBucket dans le centre de l'Allemagne (Francfort).

  • Cryptage

    Par défaut, le service Object Storage crypte toutes les données inactives. Le chiffrement ne peut pas être activé ou désactivé à l'aide de l'API.

  • Liste de contrôle d'accès de niveau objet

    Oracle Cloud Infrastructure n'utilise pas les ACL pour les objets. Au lieu de cela, un administrateur doit configurer des groupes , des compartiments et des stratégies qui déterminent quels utilisateurs peuvent accéder à ces services, à ces ressources et au type d'accès. Par exemple, les stratégies déterminent qui peut créer des utilisateurs et des groupes, créer des buckets, télécharger des objets, et gérer les règles et stratégies relatives à Object Storage.

Pour plus d'informations, reportez-vous à Présentation d'Object Storage.

Configuration de l'accès à Oracle Cloud Infrastructure

Pour activer l'accès à l'application à partir d'Amazon S3 vers Object Storage, vous devez configurer l'accès à Oracle Cloud Infrastructure et modifier votre application.

  1. Inscrivez-vous à Oracle Cloud Infrastructure et obtenez un espace de noms unique.

  2. Tout utilisateur de l'API de compatibilité Amazon S3 avec Object Storage a besoin de droits d'accès lui permettant d'utiliser le service. Si vous n'êtes pas certain de disposer de ces droits d'accès, contactez l'administrateur. Pour obtenir des informations de base sur les stratégies, reportez-vous à Fonctionnement des stratégies. Pour connaître les stratégies autorisant l'utilisation d'Object Storage, reportez-vous à Stratégies courantes et à Référence de stratégie.

  3. Utilisez une clé secrète client existante ou créez-en une. Une clé secrète client consiste en une paire clé d'accès/clé secrète. La création et l'utilisation de ces clés sont décrites dans la section suivante sur la configuration du fichier de configuration S3.

Configuration du fichier de configuration S3

Object Storage sur Roving Edge Infrastructure prend en charge l'outil Amazon S3cmd en plus de l'interface de ligne de commande Oracle Cloud Infrastructure. La prise en charge de l'outil Amazon S3cmd nécessite que vous configuriez le fichier de configuration S3, mais prend également en charge S3cmd.

Vous pouvez télécharger s3cmd à partir du site suivant :

https://s3tools.org/download

Sur Macintosh et Linux, le fichier de configuration s3cmd est nommé .s3cfg et se trouve dans votre répertoire de base, par exemple :

/home/username/($HOME)

Sous Windows, le fichier de configuration s3cmd est nommé s3cmd.ini et se trouve dans %USERPROFILE% -> Application Data, qui est généralement le suivant :

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

Pour plus de détails, reportez-vous à la page : https://s3tools.org/kb/item14.htm

L'exemple suivant illustre le contenu du fichier de configuration 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 =

Afin de configurer le fichier de configuration S3cmd à utiliser avec Roving Edge Infrastructure, procédez comme suit :

  1. Mettez à jour le champ access_key :

    1. Connectez-vous à la console Roving Edge Infrastructure Device Console de l'appareil approprié.

    2. Ouvrez le menu de navigation et sélectionnez Gestion des identités > Utilisateurs. La page Utilisateurs apparaît. Tous les utilisateurs sont répertoriés sous forme tabulaire.

    3. Sélectionnez l'utilisateur dont vous souhaitez utiliser la clé d'accès dans le fichier de configuration S3cmd. La page Détails de l'utilisateur s'affiche.

    4. Sélectionnez Clés secrètes client sous Ressources. La page Clés secrètes client apparaît. Toutes les clés secrètes client sont répertoriées sous forme tabulaire.

    5. Copiez la clé d'accès et collez-la dans la valeur du champ access_key dans le fichier de configuration s3cmd.

  2. Mettez à jour le champ ca_certs_file : entrez le chemin complet du fichier bundle.pem, par exemple :

    /Users/user_name/.oci/bundle.pem

    Si vous ne disposez pas du fichier ca certs, téléchargez-le à l'aide de la commande suivante :

    echo -n | openssl s_client -showcerts -connect rover_node_IP:8015 | 
    sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > bundle.pem
  3. Définissez le champ check_ssl_hostname sur false.

  4. Mettez à jour le champ host_base : entrez rover_node_IP:8019.

  5. Mettez à jour le champ host_bucket : entrez rover_node_IP:8019.

  6. Mettez à jour le champ secret_key :

    1. Connectez-vous à la console Roving Edge Infrastructure Device Console de l'appareil approprié.

    2. Ouvrez le menu de navigation et sélectionnez Gestion des identités > Utilisateurs. La pages Utilisateurs apparaît. Tous les utilisateurs sont répertoriés sous forme tabulaire.

    3. Sélectionnez l'utilisateur dont vous voulez utiliser la clé secrète dans le fichier de configuration S3cmd. La page Détails de l'utilisateur s'affiche.

    4. Sélectionnez Clés secrètes client sous Ressources. La page Clés secrètes client apparaît. Toutes les clés secrètes client sont répertoriées sous forme tabulaire.

    5. Sélectionnez Générer une clé secrète. La clé Secret générée apparaît dans la fenêtre Générer une clé secrète. Au même moment, Oracle génère la clé d'accès associée à la clé Secret. La clé secrète client nouvellement générée est ajoutée à la liste des clés secrètes client.

    6. Copiez la clé et collez-la dans la valeur du champ secret_key dans le fichier de configuration s3cmd.

  7. Enregistrez et fermez le fichier de configuration s3cmd.

Prise en charge de l'API de compatibilité Amazon S3

La prise en charge de l'API de compatibilité Amazon S3 est fournie au niveau des buckets et au niveau des objets.

API de bucket

Les API de bucket suivantes sont prises en charge :

API d'objet

Les API d'objet suivantes sont prises en charge :

API de téléchargement multipart

Les API de téléchargement multipart suivantes sont prises en charge :

Prise en charge SSE-C

A l'aide des en-têtes d'API facultatifs, vous pouvez fournir votre propre clé de cryptage AES 256 bits utilisée pour crypter et décrypter les objets téléchargés vers et depuis Object Storage.

Si vous souhaitez utiliser vos propres clés pour le cryptage côté serveur, indiquez les trois en-têtes de demande suivants avec les informations de clé de cryptage :

En-têtes Description API prises en charge
x-amz-server-side-encryption-customer-algorithm Indique "AES256" en tant qu'algorithme de cryptage.

GetObject

HeadObject

PutObject

InitiateMultipartUpload

UploadPart

x-amz-server-side-encryption-customer-key Indique la clé de cryptage 256 bits encodée en base64 à utiliser pour crypter ou décrypter les données.
x-amz-server-side-encryption-customer-key-md5 Indique le condensé MD5 128 bits encodé en base64 de la clé de cryptage. Cette valeur sert à vérifier l'intégrité de la clé de cryptage.

Object Storage dispose d'API distinctes pour copier des objets et copier des parties. Amazon S3 utilise la présence des en-têtes suivants dans PutObject et UploadPart pour déterminer les opérations de copie. Pour copier un objet source crypté avec une clé SSE-C, vous devez indiquer ces trois en-têtes afin qu'Object Storage puisse décrypter l'objet.

En-têtes Description API prises en charge
x-amz-copy-source-server-side-encryption-customer-algorithm Indique "AES256" comme algorithme de cryptage à utiliser pour décrypter l'objet source.

PutObject

UploadPart

x-amz-copy-source-server-side-encryption-customer-key Indique la clé de cryptage 256 base64 à utiliser pour décrypter l'objet source.
x-amz-copy-source-server-side-encryption-customer-key-md5 Indique le condensé MD5 128 bits encodé en base64 de la clé de cryptage utilisée pour décrypter l'objet source.

Prise en charge du cryptage à l'aide de vos propres clés dans Vault

A l'aide des en-têtes d'API facultatifs, vous pouvez fournir votre propre clé de cryptage dans Vault qui est utilisée pour crypter les objets téléchargés vers Object Storage.

Si vous voulez utiliser vos propres clés dans Vault pour le cryptage côté serveur, indiquez l'en-tête de demande suivant avec l'OCID de la clé dans Vault :

En-têtes Description API prises en charge
x-amz-server-side-encryption-aws-kms-key-id OCID de la clé existante dans Vault à utiliser pour crypter l'objet.

PutObject

InitiateMultipartUpload

UploadPart

Clients Amazon S3 pris en charge

Vous pouvez configurer différentes applications client pour qu'elles communiquent avec les adresses compatibles Amazon S3 d'Object Storage. Cette rubrique fournit des exemples de configuration pour les clients Amazon S3 pris en charge. Consultez les prérequis dans Configuration de l'accès à Oracle Cloud Infrastructure.

Kit SDK AWS pour Java

Le référentiel du kit SDK AWS pour Java, le téléchargement de fichiers et les liens vers la documentation sont disponibles sur GitHub : https://github.com/aws/aws-sdk-java.

Voici un exemple de configuration du kit SDK AWS pour Java afin qu'il utilise 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();

Kit SDK AWS pour Javascript

Le référentiel du kit SDK AWS pour JavaScript, les liens vers la documentation et les instructions d'installation sont disponibles sur GitHub : https://github.com/aws/aws-sdk-js.

Voici un exemple de configuration du kit SDK AWS pour Javascript afin d'utiliser 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',
});

Kit SDK AWS pour Python (Boto3)

Le référentiel du kit SDK AWS pour Python (Boto3), les liens vers la documentation et les instructions d'installation sont disponibles sur GitHub : https://github.com/boto/boto3.

Voici un exemple de configuration du kit SDK AWS pour Python afin qu'il utilise 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

Montage de buckets Object Storage à l'aide de s3fs

s3fs permet à Linux et macOS de monter Object Storage en tant que système de fichiers. Le référentiel s3fs, les liens vers la documentation, les instructions d'installation et des exemples sont disponibles sur GitHub : https://github.com/s3fs-fuse/s3fs-fuse.

s3fs n'est pas adapté à toutes les applications. Tenez compte des restrictions suivantes :

  • Les services de stockage d'objet présentent une latence élevée par rapport aux systèmes de fichiers locaux pour le délai de réception du premier octet et ne disposent pas d'accès en écriture aléatoire. s3fs offre le meilleur débit sur les charges globales qui lisent uniquement les fichiers volumineux.

  • Vous ne pouvez pas mettre à jour partiellement un fichier. Par conséquent, la modification d'un seul octet nécessite le téléchargement de l'intégralité du fichier.

  • Les écritures aléatoires dans un fichier ou les ajouts à un fichier nécessitent la réécriture de l'intégralité du fichier.

  • s3fs ne prend pas en charge les téléchargements partiels. Par conséquent, même si vous ne voulez lire qu'un octet d'un fichier, vous devez télécharger l'intégralité du fichier.

  • s3fs ne prend pas en charge les copies de fichiers côté serveur. Les fichiers copiés doivent d'abord être téléchargés vers le client, puis téléchargés vers le nouvel emplacement.

  • Les opérations de métadonnées, telles que la liste des répertoires, présentent des performances médiocres en raison de la latence du réseau.

  • s3fs ne prend pas en charge les hard links ni les changements de nom atomiques de fichiers ou de répertoires.

  • s3fs ne fournit aucune coordination entre plusieurs clients montant le même bucket.

Pour monter un bucket Object Storage en tant que système de fichiers, procédez comme suit :

  1. Suivez les instructions d'installation fournies sur GitHub : https://github.com/s3fs-fuse/s3fs-fuse.

    Si vous ne parvenez pas à effectuer l'installation à l'aide d'un package prédéfini, consultez les instructions de compilation sur la page suivante : https://github.com/s3fs-fuse/s3fs-fuse/blob/master/COMPILATION.md.

  2. Consultez et effectuez les prérequis dans Configuration de l'accès à Oracle Cloud Infrastructure. Vous avez besoin d'une paire clé d'accès/clé secrète et d'une stratégie IAM appropriée qui vous permet de monter un bucket en tant que système de fichiers. Par exemple :
    Allow group s3fsAdmins to manage object-family in tenancy
  3. Entrez les informations d'identification de paire clé d'accès/clé secrète dans un fichier d'informations d'identification ${HOME}/.passwd-s3fs} :

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

    Par exemple :

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

    Définissez ensuite pour le fichier d'informations d'identification des droits d'accès de propriétaire uniquement :

    chmod 600 ${HOME}/.passwd-s3fs
  4. Créez un point de montage pour monter un bucket 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]

    Où :

    • bucket_name est le nom du bucket à monter.

    • local_directory_name est le nom du répertoire local dans lequel monter le bucket.

    • namespace_name is the unique system-generated assigned to your tenancy at account creation time. You can use the CLI or the Console to obtain your namespace name. See Understanding Object Storage Namespaces for details.

    • region_ID est l'identificateur de la région dans laquelle réside le bucket. Pour obtenir des détails sur les régions et domaines de disponibilité.

    • endpoint : si vous voulez monter un bucket créé dans votre région de base, vous n'avez pas besoin d'indiquer le paramètre endpoint. Si vous voulez monter un bucket créé dans une autre région, vous devez indiquer le paramètre endpoint.

  5. Si vous voulez monter automatiquement le bucket en tant que système de fichiers au démarrage du système à l'aide de s3fs, ajoutez ce qui suit au fichier /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. Pour vérifier le montage du bucket s3fs, exécutez la commande df -h. La sortie indique le nouveau point de montage du bucket. Accédez au nouveau point de montage et exécutez la commande ls pour répertorier tous les objets du bucket.

Procédure de dépannage du montage d'un bucket Object Storage

  • Si vous obtenez des erreurs d'autorisation, vérifiez vos stratégies IAM et assurez-vous que vous en avez une qui vous permet de monter un bucket en tant que système de fichiers. Par exemple :
    Allow group s3fsAdmins to manage object-family in tenancy
  • Si vous essayez de monter un bucket qui a été créé dans une région autre que votre région d'origine, vous devez indiquer cette autre région dans les paramètres url et endpoint.
  • Si vous montez un bucket en tant qu'utilisateur root, les autres utilisateurs ne peuvent pas répertorier les objets du bucket ni y accéder, sauf si vous ajoutez -o allow_other à la commande s3fs ou allow_other aux options de montage /etc/fstab. Vous pouvez également fournir des paramètres UID et GID spécifiques pour indiquer les accès utilisateur.
  • Si vous avez examiné et vérifié les solutions de dépannage et que vous devez contacter le support technique, réexécutez la commande de montage en mode DEBUG pour obtenir plus de détails sur l'échec. Ajoutez ce qui suit à la fin de la commande et enregistrez la sortie :
    -o dbglevel=info -f -o curldbg
Pour démonter un bucket Object Storage à partir d'un système de fichiers, exécutez la commande suivante, en indiquant le point de montage :
umount /path/to/local_directory_name