View a markdown version of this page

Activer la journalisation CloudTrail des événements de données pour les ressources Amazon Bedrock AgentCore Gateway - Amazon Bedrock AgentCore

Activer la journalisation CloudTrail des événements de données pour les ressources Amazon Bedrock AgentCore Gateway

Vous pouvez utiliser CloudTrail les événements de données pour obtenir des informations sur les demandes Amazon Bedrock AgentCore Gateway. Pour activer CloudTrail les événements de données pour Gateway, vous devez créer un journal manuellement dans un compartiment Amazon S3 CloudTrail soutenu par un compartiment Amazon S3.

Considérations clés

  • L'enregistrement des événements liés aux données entraîne des frais supplémentaires. Vous devez activer explicitement les événements de données car ils ne sont pas capturés par défaut. Vérifiez que les événements liés aux données sont activés pour votre compte.

  • Avec une passerelle qui génère une charge de travail élevée, vous pouvez générer rapidement des milliers de journaux en peu de temps. Tenez compte de la durée pendant laquelle vous choisissez d'activer CloudTrail les événements de données pour une passerelle occupée.

  • CloudTrail stocke les journaux des événements liés aux données de passerelle dans un compartiment Amazon S3 de votre choix. Envisagez d'utiliser un bucket dans un AWS compte distinct pour mieux organiser les événements provenant de plusieurs ressources dans un emplacement central afin de faciliter les requêtes et les analyses.

Lorsque vous enregistrez des événements de données pour un suivi CloudTrail, vous devez utiliser des sélecteurs d'événements avancés pour consigner les événements liés aux opérations de passerelle.

Exemple
AWS CLI
  1. Pour activer CloudTrail les événements de données pour les ressources de passerelle à l'aide de la AWS CLI, vous pouvez exécuter la commande suivante dans un terminal :

    aws cloudtrail put-event-selectors \ --trail-name brac-gateway-canary-trail-prod-us-east-1 \ --region us-east-1 \ --advanced-event-selectors '[ { "Name": "GatewayDataEvents", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::BedrockAgentCore::Gateway"] } ] } ]'
AWS CDK
  1. L'exemple suivant montre comment créer un CloudTrail journal avec les événements de données AgentCore Gateway à l'aide du AWS CDK :

    import { Construct } from 'constructs'; import { Trail, CfnTrail } from 'aws-cdk-lib/aws-cloudtrail'; import { Bucket } from 'aws-cdk-lib/aws-s3'; import { Effect, PolicyStatement, ServicePrincipal } from 'aws-cdk-lib/aws-iam'; import { RemovalPolicy } from 'aws-cdk-lib'; export interface DataEventTrailProps { /** * Whether to enable multi-region trail */ isMultiRegionTrail?: boolean; /** * Whether to include global service events */ includeGlobalServiceEvents?: boolean; /** * AWS region */ region: string; /** * Environment account ID */ account: string; } /** * Creates a CloudTrail trail configured to capture data events for Bedrock Agent Core Gateway */ export class BedrockAgentCoreDataEventTrail extends Construct { /** * The CloudTrail trail */ public readonly trail: Trail; /** * The S3 bucket for CloudTrail logs */ public readonly logsBucket: Bucket; constructor(scope: Construct, id: string, props: DataEventTrailProps) { super(scope, id); // Create S3 bucket for CloudTrail logs const bucketName = `brac-gateway-cloudtrail-logs-${props.account}-${props.region}`; this.logsBucket = new Bucket(this, 'CloudTrailLogsBucket', { bucketName, removalPolicy: RemovalPolicy.RETAIN, }); // Create trail name (suffixing region since regional trail) const trailName = `brac-gateway-trail-${props.region}`; // Add CloudTrail bucket policy this.logsBucket.addToResourcePolicy( new PolicyStatement({ sid: 'AWSCloudTrailAclCheck', effect: Effect.ALLOW, principals: [new ServicePrincipal('cloudtrail.amazonaws.com')], actions: ['s3:GetBucketAcl'], resources: [this.logsBucket.bucketArn], conditions: { StringEquals: { 'aws:SourceArn': `arn:aws:cloudtrail:${props.region}:${props.account}:trail/${trailName}`, }, }, }), ); this.logsBucket.addToResourcePolicy( new PolicyStatement({ sid: 'AWSCloudTrailWrite', effect: Effect.ALLOW, principals: [new ServicePrincipal('cloudtrail.amazonaws.com')], actions: ['s3:PutObject'], resources: [this.logsBucket.arnForObjects(`AWSLogs/${props.account}/*`)], conditions: { StringEquals: { 's3:x-amz-acl': 'bucket-owner-full-control', 'aws:SourceArn': `arn:aws:cloudtrail:${props.region}:${props.account}:trail/${trailName}`, }, }, }), ); // Create CloudTrail trail this.trail = new Trail(this, 'GatewayDataEventTrail', { trailName, bucket: this.logsBucket, isMultiRegionTrail: props.isMultiRegionTrail ?? false, includeGlobalServiceEvents: props.includeGlobalServiceEvents ?? true, enableFileValidation: true, }); // Add advanced event selectors for Bedrock Agent Core Gateway data events const cfnTrail = this.trail.node.defaultChild as CfnTrail; // Define the advanced event selectors const advancedEventSelectors = [ { // Log Bedrock Agent Core Gateway Data Events only fieldSelectors: [ { field: 'eventCategory', equalTo: ['Data'], }, { field: 'resources.type', equalTo: ['AWS::BedrockAgentCore::Gateway'], }, ], }, ]; // Clear any existing event selectors and set advanced event selectors cfnTrail.eventSelectors = undefined; cfnTrail.advancedEventSelectors = advancedEventSelectors; } }