Inclusión de una configuración de notificaciones en su bucket

Documentación de Jamf Protect

Solution
Application
Content Type
Documentación técnica
Utilities & Services
ft:locale
es-ES

Puede activar las notificaciones del bucket en la consola de Amazon S3 o mediante programación a través de SDK de AWS. Elija cualquiera de las opciones para configurar las notificaciones en su bucket. En esta sección se incluyen ejemplos de código usando SDK de AWS para Java y .NET.

Opción A: Activar las notificaciones en un bucket usando la consola

Usando la consola de Amazon S3, añada una configuración de notificaciones solicitando a Amazon S3 que haga lo siguiente:

  • Publicar eventos del tipo All object create events (Todos los eventos de creación de objetos) en su cola de Amazon SQS.

  • Publicar eventos del tipo Object in RRS lost (Objeto en RRS perdido) en su tema de Amazon SNS.

Después de guardar la configuración de notificaciones, Amazon S3 publica un mensaje de prueba que recibirá por correo electrónico.

Puede consultar instrucciones en Habilitación y configuración de notificaciones de eventos mediante la consola de Amazon S3.

Opción B: Activar las notificaciones en un bucket usando SDK de AWS

El siguiente ejemplo de código C# proporciona un registro de código completo que añade una configuración de notificaciones a un bucket.

Debe actualizar el código y proporcionar el nombre del bucket y el ARN del tema de SNS. Consulte Paso 2: Crear un tema sobre Amazon SNS para obtener instrucciones sobre cómo crear y probar una muestra funcional.

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class EnableNotificationsTest
    {
        private const string bucketName = "*** bucket name ***";
        private const string snsTopic = "*** SNS topic ARN ***";
        private const string sqsQueue = "*** SQS topic ARN ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            EnableNotificationAsync().Wait();
        }

        static async Task EnableNotificationAsync()
        {
            try
            {
               PutBucketNotificationRequest request = new PutBucketNotificationRequest
                {
                    BucketName = bucketName
                };

                TopicConfiguration c = new TopicConfiguration
                {
                    Events = new List<EventType> { EventType.ObjectCreatedCopy },
                    Topic = snsTopic
                };
                request.TopicConfigurations = new List<TopicConfiguration>();
                request.TopicConfigurations.Add(c);
                request.QueueConfigurations = new List<QueueConfiguration>();
                request.QueueConfigurations.Add(new QueueConfiguration()
                {
                    Events = new List<EventType> { EventType.ObjectCreatedPut },
                    Queue = sqsQueue
                });
                
                PutBucketNotificationResponse response = await client.PutBucketNotificationAsync(request);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' ", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown error encountered on server. Message:'{0}' ", e.Message);
            }
        }
    }
}

El siguiente ejemplo de código .NET muestra cómo añadir una configuración de notificaciones a un bucket.

Si quiere más información sobre cómo crear y probar una muestra funcional, consulte la información sobre cómo probar los ejemplos de código Java de Amazon S3.

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.io.IOException;
import java.util.EnumSet;

public class EnableNotificationOnABucket {

    public static void main(String[] args) throws IOException {
        String bucketName = "*** Bucket name ***";
        Regions clientRegion = Regions.DEFAULT_REGION;
        String snsTopicARN = "*** SNS Topic ARN ***";
        String sqsQueueARN = "*** SQS Queue ARN ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withCredentials(new ProfileCredentialsProvider())
                    .withRegion(clientRegion)
                    .build();
            BucketNotificationConfiguration notificationConfiguration = new BucketNotificationConfiguration();

            // Add an SNS topic notification.
            notificationConfiguration.addConfiguration("snsTopicConfig",
                    new TopicConfiguration(snsTopicARN, EnumSet.of(S3Event.ObjectCreated)));

            // Add an SQS queue notification.
            notificationConfiguration.addConfiguration("sqsQueueConfig",
                    new QueueConfiguration(sqsQueueARN, EnumSet.of(S3Event.ObjectCreated)));

            // Create the notification configuration request and set the bucket notification configuration.
            SetBucketNotificationConfigurationRequest request = new SetBucketNotificationConfigurationRequest(
                    bucketName, notificationConfiguration);
            s3Client.setBucketNotificationConfiguration(request);
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process 
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}

Ya puede probar la configuración subiendo un objeto a su bucket y verificando la notificación del evento en la consola de Amazon SQS.

Si quiere más información, consulte la sección sobre cómo recibir un mensaje en la sección Introducción de la Guía para desarrolladores de Amazon Simple Queue Service.

Después de probar la configuración, vuelva a Configuración del reenvío de datos a Google Security Operations y añada el bucket de Amazon S3 para configurar el reenvío de SQS a Google Security Operations.