Stockage d'objets pour l'infrastructure en périphérie de réseau Rover

Décrit comment gérer les tâches de stockage d'objets, notamment celles des seaux et des objets, sur vos appareils d'infrastructure en périphérie de réseau Rover.

Cette section décrit les services inclus sur les appareils du service d'infrastructure en périphérie de réseau Rover qui sont liés au stockage d'objets :

Seuils de rendement et d'utilisation

Nous vous recommandons de maintenir vos seuils de stockage inférieurs à 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 en périphérie de réseau Rover approche 80 %, transférez les données vers votre location OCI jusqu'à ce que le niveau de stockage tombe en dessous de 80 % pour assurer un fonctionnement optimal des services.

Surveillez régulièrement l'espace de stockage disponible pour tous vos appareils de l'infrastructure en périphérie de réseau Rover. Voir Surveillance des appareils de l'infrastructure en périphérie de réseau Rover.

API de compatibilité Amazon S3

À l'aide de l'API de compatibilité Amazon S3, les clients peuvent continuer à utiliser leurs outils Amazon S3 existants (par exemple, les clients de trousse SDK) et à apporter des modifications minimes à leurs applications pour utiliser le service de stockage d'objets. L'API de compatibilité Amazon S3 et les jeux de données du stockage d'objets sont congruents. Si des données sont écrites dans le service de stockage d'objets à l'aide de l'API de compatibilité Amazon S3, vous pourrez les lire au moyen de l'API native de stockage d'objets et inversement.

Différences entre l'API du service Stockage d'objets et l'API de compatibilité Amazon S3

Le service de stockage d'objets fourni par Oracle Cloud Infrastructure et Amazon S3 utilisent une terminologie et des concepts similaires. Dans les deux cas, les données sont stockées en tant qu'objets dans des seaux. Les différences résident dans la mise en oeuvre des fonctions et des outils relatifs à l'utilisation des objets.

Voici les différences entre les deux technologies de stockage :

  • Compartiments

    Amazon S3 n'utilise pas de compartiment. Par défaut, les compartiments 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. À la place, vous pouvez désigner un compartiment différent pour l'API de compatibilité Amazon S3 ou l'API Swift pour créer des seaux dedans.

  • Espace de noms de seau global

    Le service de stockage d'objets n'utilise pas d'espace de noms de seau global. L'espace de noms sert plutôt de conteneur de niveau supérieur pour tous les seaux et objets. Lors de la création du compte, un nom d'espace de noms unique généré par le système et non modifiable est affecté à chaque locataire. L'espace de noms couvre tous les compartiments d'une région. Vous contrôlez les noms de seau, mais ceux-ci doivent être uniques au sein d'un espace de noms. Bien que l'espace de noms soit propre à une région, le nom de l'espace de noms lui-même est le même dans toutes les régions. Vous pouvez avoir un seau nommé MyBucket dans l'ouest des États-Unis (Phoenix) et un seau nommé MyBucket dans le centre de l'Allemagne (Francfort).

  • Chiffrement

    Le service de stockage d'objets chiffre toutes les données au repos par défaut. Il n'est pas possible d'activer ou de désactiver le chiffrement à l'aide de l'API.

  • Listes de contrôle d'accès au niveau de l'objet (LCA)

    Oracle Cloud Infrastructure n'utilise pas de LCA pour les objets. Au lieu de cela, un administrateur doit configurer les groupes , les compartiments et les politiques qui déterminent les utilisateurs pouvant accéder aux services et aux ressources, ainsi que le type d'accès. Par exemple, les politiques contrôlent qui peut créer des utilisateurs et des groupes, créer des seaux, télécharger des objets et gérer les politiques et les règles liées au stockage d'objets.

Pour plus d'informations, voir Aperçu du stockage d'objets.

Définition de l'accès à Oracle Cloud Infrastructure

Pour permettre à votre application d'accéder au stockage d'objets depuis Amazon S3 vous devez configurer l'accès à Oracle Cloud Infrastructure et modifier celui-ci.

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

  2. Tout utilisateur de l'API de compatibilité Amazon S3 avec le service Stockage d'objets doit disposer de l'autorisation nécessaire pour utiliser le service. Si vous n'êtes pas sûr de disposer de l'autorisation nécessaire, communiquez avec l'administrateur. Pour des informations de base sur les politiques, voir Comment fonctionnent les politiques. Pour les politiques qui permettent d'utiliser le service de stockage d'objets, voir Politiques communes et Référence liée aux politiques.

  3. Utilisez une clé secrète de client existante ou en créer une. Une clé secrète de client est associée à 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

Le service de stockage d'objets sur le service d'infrastructure en périphérie de réseau Rover prend en charge l'outil Amazon S3cmd en plus de prendre en charge 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, consultez la page https://s3tools.org/kb/item14.htm

L'exemple suivant présente 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 =

Pour configurer le fichier de configuration S3cmd à utiliser avec l'infrastructure en périphérie de réseau Rover :

  1. Mettez à jour le champ access_key :

    1. Connectez-vous à la console d'appareil du service d'infrastructure en périphérie de réseau Rover de l'appareil approprié.

    2. Ouvrez le menu de navigation et sélectionnez Gestion des identités > Utilisateurs. La page Utilisateurs s'affiche. Tous les utilisateurs sont présentés sous forme de tableau.

    3. Sélectionnez l'utilisateur dont vous voulez 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 de client sous Ressources. La page Clés secrètes de client s'affiche. Toutes les clés secrètes de client sont présentées sous forme de tableau.

    5. Copiez la clé d'accès et passez-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 de votre 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. Réglez le champ check_ssl_hostname à 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 d'appareil du service d'infrastructure en périphérie de réseau Rover de l'appareil approprié.

    2. Ouvrez le menu de navigation et sélectionnez Gestion des identités > Utilisateurs. La page Utilisateurs s'affiche. Tous les utilisateurs sont présentés sous forme de tableau.

    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 de client sous Ressources. La page Clés secrètes de client s'affiche. Toutes les clés secrètes de client sont présentées sous forme de tableau.

    5. Sélectionnez Générer une clé secrète. Le champ Clé secrète généré est affiché dans la boîte de dialogue Créer une clé secrète. En même temps, Oracle génère la clé d'accès qui est associée à la clé secrète. La clé secrète de client nouvellement générée est ajoutée à la liste des clés secrètes de client.

    6. Copiez la clé et passez-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 de compartiment et au niveau de l'objet.

API de seau

Les API de seau suivantes sont prises en charge :

API d'objet

Les API d'objet suivantes sont prises en charge :

API de chargement en plusieurs parties

Les API de chargement en plusieurs parties suivantes sont prises en charge :

Prise en charge de clé SSE-C

À l'aide des en-têtes d'API facultatifs, vous pouvez fournir votre propre clé de chiffrement AES 256 bits qui est utilisée pour chiffrer et déchiffrer les objets chargés et téléchargés à partir du stockage d'objets.

Si vous voulez utiliser vos propres clés pour le chiffrement côté serveur, spécifiez les trois en-têtes de demande suivants avec les informations sur la clé de chiffrement :

En-têtes Description API prises en charge
x-amz-server-side-encryption-customer-algorithm Indique "AES256" comme algorithme de chiffrement.

GetObject

HeadObject

PutObject

InitiateMultipartUpload

UploadPart

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

Le service de stockage d'objets offre des API distinctes pour la copie d'objets et la copie de 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 spécifier ces trois en-têtes afin que le stockage d'objets 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 chiffrement à utiliser pour déchiffrer l'objet source.

PutObject

UploadPart

x-amz-copy-source-server-side-encryption-customer-key Spécifie la clé de chiffrement de 256 bits encodée en base64 à utiliser pour déchiffrer l'objet source.
x-amz-copy-source-server-side-encryption-customer-key-md5 Spécifie le digest MD5 128 bits encodé en base64 de la clé de chiffrement utilisée pour déchiffrer l'objet source.

Prise en charge du chiffrement à l'aide de vos propres clés dans le service de chambre forte

À l'aide des en-têtes d'API facultatifs, vous pouvez fournir votre propre clé de chiffrement dans le service de chambre forte qui est utilisée pour chiffrer les objets chargés dans le service de stockage d'objets.

Si vous voulez utiliser vos propres clés dans le service de chambre forte pour le chiffrement côté serveur, spécifiez l'en-tête de demande suivant avec l'OCID de la clé dans le service de chambre forte :

En-têtes Description API prises en charge
x-amz-server-side-encryption-aws-kms-key-id OCID d'une clé existante dans le chambre forte à utiliser pour chiffrer l'objet.

PutObject

InitiateMultipartUpload

UploadPart

Clients Amazon S3 pris en charge

Vous pouvez configurer diverses applications clients pour qu'elles communiquent avec les points d'extrémité compatibles avec Amazon S3 du service de stockage d'objets. Cette rubrique fournit des exemples de configuration pour les clients Amazon S3 pris en charge. Vérifiez les préalables dans Configuration de l'accès à Oracle Cloud Infrastructure.

SDK AWS pour Java

La trousse SDK AWS pour le référentiel 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 de la trousse SDK AWS pour que Java utilise le stockage d'objets


                // 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 pour Javascript.

Le référentiel AWS SDK 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 de la trousse SDK AWS pour Javascript pour utiliser le stockage d'objets

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

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

Voici un exemple de configuration de la trousse SDK AWS pour Python pour utiliser le stockage d'objets

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 seaux de stockage d'objets à l'aide de s3fs

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

s3fs ne convient pas à toutes les applications. Tenez compte des limites suivantes :

  • Les services de stockage d'objets présentent une latence élevée par rapport aux systèmes de fichiers locaux en ce qui concerne le temps d'accès au premier octet et l'absence d'accès aléatoire en écriture. s3fs offre le meilleur débit sur les charges de travail qui ne lisent que des fichiers importants.

  • Vous ne pouvez pas mettre à jour partiellement un fichier, la modification d'un seul octet nécessite le chargement de tout le fichier.

  • Les écritures ou les ajouts aléatoires aux fichiers nécessitent la réécriture complète du fichier.

  • s3fs ne prend pas en charge les téléchargements partiels. Ainsi, même si vous ne voulez lire qu'un octet d'un fichier, vous devez télécharger tout le fichier.

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

  • Les opérations de métadonnées, telles que les répertoires de liste, sont peu performantes en raison de la latence du réseau.

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

  • s3fs ne fournit aucune coordination entre plusieurs clients qui montage le même seau.

Pour monter un seau de stockage d'objets en tant que système de fichiers :

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

    Si vous ne pouvez pas effectuer l'installation à l'aide d'un ensemble prédéfini, suivez les instructions de compilation ici : https://github.com/s3fs-fuse/s3fs-fuse/blob/master/COMPILATION.md.

  2. Vérifiez et exécutez les préalables sous Configuration de l'accès à Oracle Cloud Infrastructure. Vous avez besoin d'une paire clé d'accès/clé secrète d'API et d'une politique IAM appropriée qui vous permet de monter un seau en tant que système de fichiers. Par exemple :
    Allow group s3fsAdmins to manage object-family in tenancy
  3. Entrez vos données d'identification de paire clé d'accès/clé secrète dans un fichier de données 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 les autorisations de responsable uniquement pour le fichier de données d'identification :

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

    • local_directory_name est le nom du répertoire local où vous voulez monter le seau.

    • namespace_name est la valeur unique affectée à votre location par le système lors de la création du compte. Vous pouvez utiliser l'interface de ligne de commande ou la console pour obtenir le nom de votre espace de noms. Pour plus de détails, voir Présentation des espaces de noms du stockage d'objets.

    • region_ID est l'identificateur de région où réside le seau. Pour détails, voir Régions et domaines de disponibilité.

    • endpoint : Si vous voulez monter un seau qui a été créé dans votre région principale, vous ne devez pas spécifier le paramètre endpoint. Si vous voulez monter un seau qui a été créé dans une autre région, vous devez spécifier le paramètre endpoint.

  5. Si vous voulez monter automatiquement le seau 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 seau s3fs, exécutez la commande df -h. La sortie présente le nouveau point de montage pour le seau. Naviguez vers le nouveau point de montage et exécutez la commande ls pour lister tous les objets du seau.

Pour dépanner le montage d'un seau de stockage d'objets

  • Si vous obtenez des erreurs d'autorisation, vérifiez vos politiques IAM et assurez-vous d'en avoir une qui vous permet de monter un seau en tant que système de fichiers. Par exemple :
    Allow group s3fsAdmins to manage object-family in tenancy
  • Si vous tentez de monter un seau qui a été créé dans une région autre que votre région principale, vous devez spécifier cette autre région dans les paramètres url et endpoint.
  • Si vous montagez un seau en tant qu'utilisateur racine, les autres utilisateurs ne peuvent pas lister les objets du seau 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 d'UID et d'IDG spécifiques pour spécifier les détails d'accès de l'utilisateur.
  • Si vous avez examiné et vérifié les solutions de dépannage et que vous devez communiquer avec le soutien, exécutez de nouveau la commande de montage en mode DEBUG pour obtenir plus de détails sur les défaillances. Ajoutez les éléments suivants à la fin de la commande et enregistrez la sortie :
    -o dbglevel=info -f -o curldbg
Pour démonter un seau de stockage d'objets d'un système de fichiers, exécutez la commande suivante, en spécifiant le point de montage :
umount /path/to/local_directory_name