Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Démarrer avec le niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments d'Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles qui sont propres à votre environnement en nuage.
Utiliser l'API de compatibilité Amazon S3 du service de stockage d'objets d'OCI avec la trousse SDK AWS pour C++
Présentation
Oracle Cloud Infrastructure (OCI) Object Storage permet aux clients de stocker, en toute sécurité, tout type de données dans son format natif. Avec la redondance intégrée, OCI Object Storage est idéal pour créer des applications modernes qui nécessitent une mise à l'échelle et une flexibilité, car il peut être utilisé pour consolider plusieurs sources de données à des fins d'analyse, de sauvegarde ou d'archivage.
OCI Object Storage est la base des charges de travail en nuage, son élasticité, son extensibilité, sa fiabilité et sa rentabilité en ont fait le stockage principal pour les données non structurées dans le nuage. En raison de sa popularité, il existe un vaste écosystème d'outils pour utiliser le service de stockage d'objets pour OCI.
Le service de stockage d'objets d'OCI fournit une API de compatibilité Amazon S3, les clients peuvent continuer à utiliser leurs outils Amazon S3 existants et à apporter des modifications minimales à leurs applications pour utiliser le service de stockage d'objets d'OCI. Les jeux de données de l'API de compatibilité Amazon S3 et du stockage d'objets d'OCI sont congruents. Si des données sont écrites dans le service de stockage d'objets d'OCI à l'aide de l'API de compatibilité Amazon S3, vous pourrez les lire au moyen de l'API native de stockage d'objets d'OCI et, inversement. Les clients qui utilisent le SDK AWS pour C++ peuvent trouver l'aspect d'authentification difficile lors de l'utilisation de l'API de compatibilité Amazon S3, ce tutoriel vise à fournir deux exemples simples pour commencer à utiliser le SDK AWS pour C++.
Note : Il s'agit d'exemples de scripts utilisant la trousse SDK AWS pour C++, qui ne sont pas des applications Oracle officielles et qui ne sont pas gérés ou pris en charge par Oracle. Comme il s'agit d'exemples, vous pouvez les réviser, les mettre à jour et les personnaliser en fonction de votre cas d'utilisation dans votre propre référentiel logiciel. Oracle ne certifie pas les trousses SDK de tierce partie ni ne les prend en charge.
Objectifs
-
Évitez les problèmes de certificat et d'authentification SSL lors de l'utilisation de la trousse SDK AWS pour C++ avec le stockage d'objets OCI.
-
Exécutez l'exemple de code C++ pour ListBuckets et ListObjectsV2 dans le service de stockage d'objets OCI.
Préalables
-
Un compte OCI.
-
Autorisation de l'utilisateur pour lire des seaux et des objets dans le service de stockage d'objets pour OCI. Pour plus d'informations, voir Autoriser les utilisateurs à télécharger des objets à partir des seaux du service de stockage d'objets.
-
Accès à un seau existant avec des objets existants imbriqués dans un préfixe/répertoire. Le nom du seau sera nécessaire pour le tutoriel. Pour plus d'informations, voir le tutoriel Placer des données dans le stockage d'objets.
-
Familiarisez-vous avec l'utilisation d'une interface de terminal ou d'interpréteur de commandes sur macOS, Linux, Berkeley Software Distribution (BSD) et sur Windows PowerShell, invite de commande ou bash.
-
Accès à un système Linux.
-
Possibilité ou autorisations d'installer un logiciel sur un système Linux.
-
Installez l'interface de ligne de commande Oracle Cloud Infrastructure (interface de ligne de commande OCI) et configurez-la sur votre système Linux. Pour plus d'informations, voir Installation de l'interface de ligne de commande.
-
Installez AWS SDK pour C++ avec les bibliothèques partagées dans
LD_LIBRARY_PATH
sur votre système Linux. Pour plus d'informations, voir Créer la trousse SDK AWS pour C++ sur Linux/macOS. -
Installez Git sur votre système Linux. Pour plus d'informations, voir Inémarrage - Installation de Git.
Tâche 1 : Comprendre les URL de chemin et de style hébergé virtuel
Au moment de l'écriture de ce tutoriel, l'API de compatibilité Amazon S3 du service de stockage d'objets d'OCI prend en charge les URL de style chemin. Cela signifie que le seau se trouve dans le chemin de l'URL.
Par exemple :
https://MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com/MyBucketName
OU
https://MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com/MyBucketName/MyObjectName
Dans les URL de style hébergé virtuel, le nom du seau de stockage d'objets OCI est inclus dans le sous-domaine (ou au début) de l'URL.
Par exemple :
https://MyBucketName.MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com
OU
https://MyBucketName.MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com/MyObjectName
Par défaut, le SDK AWS pour C++ utilise des URL de style hébergé virtuel. Lorsque vous suivez les exemples de code produits par AWS et que vous remplacez des valeurs de votre location OCI, une erreur s'affiche comme dans la sortie suivante. Pour plus d'informations, voir Création, liste et suppression de seaux.
curlCode: 60, SSL peer certificate or SSH remote key was not OK
Comme le code utilise une URL de style hébergé virtuel, il ne référencera pas le seau de stockage d'objets OCI ni un certificat valide.
Le paramètre S3Client doit être modifié pour utiliser des URL de style chemin. La configuration doit être définie à l'aide de la commande suivante.
Aws::Client::ClientConfiguration config;
S3Client s3Client(config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, false);
Tâche 2 : Déterminer l'espace de noms de la location et le compartiment de l'API S3
-
Connectez-vous à votre système Linux.
Note : Toutes les commandes seront exécutées à partir de votre système Linux où vous avez installé et configuré les préalables nécessaires.
-
Exécutez la commande de l'interface de ligne de commande OCI
oci os ns get-metadata
.$ oci os ns get-metadata { "data": { "default-s3-compartment-id": "ocid1.tenancy.oc1..bbbbcccdabcc0x0aaaaaa00aaaaaaaaaaa0b0b00ccccccccbbbbbbbb00aa", "default-swift-compartment-id": "ocid1.tenancy.oc1..bbbbcccdabcc0x0aaaaaa00aaaaaaaaaaa0b0b00ccccccccbbbbbbbb00aa", "namespace": "MyNamespace" } }
-
Si l'OCID du compartiment S3 contient le mot
tenancy
, il s'agit du compartiment racine. Obtenez le nom à l'aide de la commande suivante.$ oci iam compartment get --compartment-id <compartment_ocid>
Ou, pour le compartiment racine de la location, exécutez la commande suivante.
$ oci iam tenancy get --tenancy-id <tenancy_ocid>
Vous pouvez également utiliser la console OCI en naviguant jusqu'à votre profil dans le coin supérieur droit et en sélectionnant la location (
your_tenancy_name
) pour déterminer l'espace de noms et le compartiment de l'API S3.Le compartiment S3 sera de nouveau utilisé dans la tâche 4.
Tâche 3 : Créer une clé secrète de client pour accéder à l'API compatible S3
Générez une clé secrète à l'aide des commandes de l'interface de ligne de commande OCI.
-
Exécutez la commande
oci iam customer-secret-key create
.oci iam customer-secret-key create --display-name display-name --user-id ocid1.user.oc1..aaaaaaaa-user-ocid-sdd6ahdouq { "data": { "display-name": "display-name", "id": "7aaaa3462aa34271a276002015f30674a5325aaa", "inactive-status": null, "key": "1aaa577aaaa/aa3aa92aa7aa7aaaaaaAa0aaaAa8AAa=", "lifecycle-state": "ACTIVE", "time-created": "2024-07-19T19:58:03.794000+00:00", "time-expires": null, "user-id": "ocid1.user.oc1..aaaaaaaa-user-ocid-sdd6ahdouq" }, "etag": "e63038c73fc24fa087a2a4c3339ef709" }
-
Copiez l'ID (
AWS_ACCESS_KEY_ID
) et la clé (AWS_SECRET_ACCESS_KEY
) dans un emplacement sécurisé pour l'utiliser plus tard pour définir des variables d'environnement.Note : L'OCID de votre utilisateur se trouve dans votre fichier de configuration de l'interface de ligne de commande OCI, généralement stocké dans
$HOME/.oci/config
.
Ou
Une clé secrète peut également être générée à l'aide de la console OCI et en accédant à votre profil dans le coin supérieur droit, puis en sélectionnant votre nom d'utilisateur affiché. Cliquez sur le lien Clés secrètes de client, Générer une clé secrète et définissez un nom d'affichage. Cliquez sur copier et stockez la clé secrète dans un emplacement sécurisé, puis cliquez sur Fermer.
Après avoir fermé la fenêtre Générer une clé secrète, recherchez le nom d'affichage dans la liste des clés secrètes du client, pointez le curseur de la souris sur la clé d'accès et copiez la clé d'accès.
Tâche 4 : Collecter les informations sur le seau pour la configuration
-
Allez à la console OCI, naviguez jusqu'à Stockage et cliquez sur Seaux.
-
Cliquez sur le nom du seau dans vos préalables et notez les informations suivantes.
- Nom du seau.
- Emplacement des objets. Il s'agit du préfixe.
- Nom de la région. Obtenez le code de région ici : Régions et domaines de disponibilité. Par exemple, US East(Ashburn) serait représenté par us-ashburn-1.
Tâche 5 : Définir des variables d'environnement
Définissez les variables d'environnement en fonction des informations des tâches précédentes à l'aide de la commande suivante.
export AWS_ACCESS_KEY_ID="<your access key ID from Task 3>"
export AWS_SECRET_ACCESS_KEY="<your secret key ID from Task 3>"
export OCI_REGION="bukcet region from Task 4>"
export OCI_NAMESPACE="<namespace name from Task 1>"
export OCI_BUCKET="<your bucket name from Task 4>"
export OCI_PREFIX="<object prefix name from Task 4>"
Par exemple :
export AWS_ACCESS_KEY_ID="da34baaa4ab029f51c34c1cee83d40f0dEXAMPLE"
export AWS_SECRET_ACCESS_KEY="7w3uMS6kYiYkUpziSlLFcBimBsYDJfojwCWKEXAMPLE="
export OCI_REGION="us-ashburn-1"
export OCI_NAMESPACE="MyNamespace"
export OCI_BUCKET="Images"
export OCI_PREFIX="2024/12/18/Camera"
Tâche 6 : Créer les exemples C++
-
Exécutez la commande suivante pour cloner l'exemple de référentiel dans git.
$ git clone https://github.com/tonymarkel/OCI_AWS_CPP_SDK_S3_Examples.git
-
Exécutez les commandes suivantes pour passer au répertoire contenant les exemples C++, créer un répertoire de compilation, passer à ce répertoire, puis exécuter build et make.
$ OCI_AWS_CPP_SDK_S3_Examples $ mkdir build $ cd build $ cmake .. $ make
Note : Il s'agit d'exemples de scripts utilisant la trousse SDK AWS pour C++, qui ne sont pas des applications Oracle officielles et qui ne sont pas gérés ou pris en charge par Oracle. Comme il s'agit d'exemples, vous pouvez les réviser, les mettre à jour et les personnaliser en fonction de votre cas d'utilisation dans votre propre référentiel logiciel. Oracle ne certifie pas les trousses SDK de tierce partie ni ne les prend en charge.
Tâche 7 : Exécuter les exemples
-
Exécutez la commande suivante pour obtenir la liste des seaux.
$ ./listBuckets $OCI_NAMESPACE $OCI_REGION $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY
Par exemple :
$ ./listBuckets $OCI_NAMESPACE $OCI_REGION $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY S3 Endpoint is: https://MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com/ Found 3 buckets Demo Images Logs
-
Exécutez la commande suivante pour obtenir la liste des objets.
Par exemple :
$ ./listObjects $OCI_NAMESPACE $OCI_REGION $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY $OCI_BUCKET $OCI_PREFIX S3 Object Path is: https://MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com Bucket is: Images Prefix is: 2024/12/18/Camera LISTING OBJECTS Found 3 objects 2024/12/18/Camera/Image1.jpeg 2024/12/18/Camera/Image2.jpeg 2024/12/18/Camera/DefinitelyNotACat.jpeg
Note : Si vous rencontrez des problèmes, retournez à la tâche 5 et assurez-vous que vos variables d'environnement sont définies correctement.
Liens connexes
Remerciements
-
Auteurs - Kenneth Heung (architecte en nuage en chef), Tony Markel (architecte en nuage principal).
-
Contributeur - Melinda Centeno (Gestionnaire principal de produit principal)
Autres ressources d'apprentissage
Explorez d'autres laboratoires sur le site docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation sur le produit, visitez Oracle Help Center.
Use OCI Object Storage Amazon S3 Compatibility API with AWS SDK for C++
G28121-01
Copyright ©2025, Oracle and/or its affiliates.