Remarque :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification Oracle Cloud Infrastructure, la location et les compartiments. A la fin de votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Transmission de journaux Oracle Cloud Infrastructure à Amazon S3 à l'aide des fonctions OCI
Introduction
Le service Oracle Cloud Infrastructure (OCI) Logging fournit une vue unifiée de tous les journaux générés par les services et ressources OCI, ainsi que des journaux personnalisés créés par les utilisateurs.
OCI Functions est une plate-forme de calcul sans serveur qui permet aux développeurs de créer et de déployer des applications légères orientées événements dans le cloud.
Amazon S3 est un service de stockage cloud hautement évolutif et fiable fourni par Amazon qui permet aux utilisateurs de stocker et d'extraire n'importe quelle quantité de données de n'importe où dans le monde.
Le processus de haut niveau inclut l'utilisation d'un connecteur de service pour collecter les journaux à partir du service OCI Logging et l'envoi à la fonction cible, qui transmet ensuite les données à Amazon S3.

Objectif
Guide pas à pas sur la façon de propager les journaux OCI vers Amazon S3 avec OCI Functions.
Prérequis
-
Les utilisateurs d'Amazon Web Services (AWS) doivent disposer des stratégies requises pour créer le bucket, et être en mesure de lire et d'écrire des objets dans ce bucket. Pour plus d'informations sur les stratégies de bucket, suivez cette page.
-
Les utilisateurs dans OCI doivent disposer des stratégies requises pour les services Functions, Service Connector Hub et Logging afin de gérer les ressources. Les références de stratégie pour tous les services sont ici.
Tâche 1 : configuration des paramètres AWS
-
Créez un bucket Amazon S3.

-
Créez une clé d'accès et une clé secrète AWS pour l'utilisateur sous IAM.
-
Accédez à IAM, Utilisateurs, Informations d'identification de sécurité, Créer une clé d'accès, Service tiers.
-
Copiez la clé d'accès et la clé secrète AWS générées dans un fichier Bloc-notes.

-
Tâche 2 : configuration des paramètres Oracle Cloud Infrastructure
Stocker la clé d'accès et la clé secrète AWS dans OCI Vault
-
Accédez à Identité et sécurité, Vaultes. Créez un coffre (MEK) s'il n'est pas créé. Pour plus d'informations, suivez ce doc.
-
Créez 2 clés secrètes dans le coffre, une pour stocker la clé d'accès AWS et une autre pour la clé secrète AWS. Les images ci-dessous sont pour référence.


Créer un groupe dynamique
-
Accédez à Identité et sécurité, Identité, Groupes dynamiques.
-
Créez un groupe dynamique pour toutes les fonctions de votre compartiment avec la règle de mise en correspondance ci-dessous.
ALL {resource.type = 'fnfunc', resource.compartment.id = '<your_compartment_id>'}
Créer une stratégie pour le groupe dynamique
-
Accédez à Identité et sécurité, Identité, Stratégies.
-
Créez une stratégie pour le groupe dynamique ci-dessus afin de permettre à toutes les fonctions d'accéder à secret-family pour le compartiment respectif. Vous pouvez également réduire la stratégie en un seul coffre.
allow dynamic-group <dynamic_group_name> to manage secret-family in compartment <compartment_name>
Créer une fonction OCI dans Python ou tout langage pris en charge pour envoyer des journaux OCI à Amazon S3
-
Dans le menu de la console Oracle Cloud, accédez à Services de développeur et sélectionnez Fonctions.
-
Sélectionnez une application existante ou cliquez sur Créer une application. créer une fonction au sein de l'application,
-
Dans ce tutoriel, nous utilisons OCI Cloud Shell pour créer la fonction.
Remarque : Cloud Shell est une option recommandée car elle ne nécessite aucun prérequis de configuration. Si vous ne connaissez pas encore les fonctions OCI, suivez les sections A, B et C du démarrage rapide des fonctions sur Cloud Shell.
-
Nous vous recommandons d'abord de créer un exemple de fonction Python. La commande suivante génère un dossier
ociToawsavec trois fichiers :func.py,func.yamletrequirements.txt.fn init --runtime python pushlogs -
Remplacez
func.pypar le code suivant. Remplacez secret_key_id, access_key_id dans le code par les OCID de clé secrète respectifs d'OCI Vault créés précédemment.import io import json import logging import boto3 import oci import base64 import os from fdk import response # The below method receives the list of log entries from OCI as input in the form of bytestream and is defined in func.yaml def handler(ctx, data: io.BytesIO = None): funDataStr = data.read().decode('utf-8') # Convert the log data to json funData = json.loads(funDataStr) # The Secret Retrieval API is used here to retrieve AWS access keys and secret key from vault. These keys are required to connect to Amazon S3. # Replace secret_key_id, access_key_id with respective secret ocids. secret_key_id = "<vault_secret_ocid>" access_key_id = "<vault_secret_ocid>" signer = oci.auth.signers.get_resource_principals_signer() secret_client = oci.secrets.SecretsClient({},signer=signer) def read_secret_value(secret_client, secret_id): response = secret_client.get_secret_bundle(secret_id) base64_Secret_content = response.data.secret_bundle_content.content base64_secret_bytes = base64_Secret_content.encode('ascii') base64_message_bytes = base64.b64decode(base64_secret_bytes) secret_content = base64_message_bytes.decode('ascii') return secret_content awsaccesskey = read_secret_value(secret_client, access_key_id) awssecretkey = read_secret_value(secret_client, secret_key_id) for i in range(0,len(funData)): filename = funData[i]['time'] logging.getLogger().info(filename) # Send the log data to a temporary json file. /tmp is the supported writable directory for OCI Functions with open('/tmp/'+filename+".json", 'w', encoding='utf-8') as f: json.dump(funData[i], f, ensure_ascii=False, indent=4) # Send the log file to Amazon S3 target bucket session = boto3.Session(aws_access_key_id= awsaccesskey, aws_secret_access_key= awssecretkey) s3 = session.resource('s3') s3.meta.client.upload_file(Filename='/tmp/'+filename+'.json', Bucket='lasya-bucket', Key=filename+'.json') os.remove('/tmp/'+filename+'.json') -
Mettez à jour
func.yamlavec le code suivant.schema_version: 20180708 name: pushlogs version: 0.0.1 runtime: python build_image: fnproject/python:3.9-dev run_image: fnproject/python:3.9 entrypoint: /python/bin/fdk /function/func.py handler memory: 256 -
Remplacez
requirements.txtpar le code suivant.fdk>=0.1.56 boto3 oci -
Déployez la fonction à l'aide de la commande suivante.
fn -v deploy --app ociToaws
Créer un connecteur de service pour envoyer les journaux OCI de Logging vers Functions
-
Dans le menu Console, sélectionnez Analytics & AI, Messaging, puis Service Connector Hub.
-
Sélectionnez le compartiment dans lequel créer le connecteur de service.
-
Cliquez sur Créer un connecteur de service et indiquez les valeurs correspondantes. Sous Configure Service Connector, sélectionnez Streaming en tant que source et Logging Analytics en tant que cible.
-
Sous Configurer la source, sélectionnez les journaux à propager vers Functions
-
Sous Configure Destination, sélectionnez l'application de fonction que nous avons créée à l'étape 4.
-
Créez les stratégies par défaut qui apparaissent à l'écran et cliquez sur Créer.



Tâche 3 : vérifiez si les journaux sont propagés vers Amazon S3
-
Accédez au bucket Amazon S3 que vous avez créé précédemment pour vérifier si les journaux OCI sont disponibles.

Etapes suivantes
Ce tutoriel a expliqué comment les journaux Oracle Cloud Infrastructure peuvent être propagés vers Amazon S3 à l'aide de Service Connector Hub et de Functions. Les données de journal OCI peuvent être utilisées pour plusieurs stratégies de stockage en matière de redondance et de conformité, ainsi que pour une analyse détaillée de vos connecteurs existants dans AWS.
Remerciements
Auteurs - Vishak Chittuvalapil (ingénieur cloud senior), Lasya Vadavalli (ingénieur cloud-IaaS)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenu de formation gratuit sur le canal Oracle Learning YouTube. En outre, accédez à education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour consulter la documentation produit, consultez Oracle Help Center.
Push Oracle Cloud Infrastructure Logs to Amazon S3 with OCI Functions
F82371-01
June 2023
Copyright © 2023, Oracle and/or its affiliates.