View a markdown version of this page

Aktifkan pencatatan peristiwa CloudTrail data untuk sumber daya Amazon Bedrock AgentCore Gateway - Batuan Dasar Amazon AgentCore

Aktifkan pencatatan peristiwa CloudTrail data untuk sumber daya Amazon Bedrock AgentCore Gateway

Anda dapat menggunakan peristiwa CloudTrail data untuk mendapatkan informasi tentang permintaan Amazon Bedrock AgentCore Gateway. Untuk mengaktifkan peristiwa CloudTrail data untuk Gateway, Anda harus membuat jejak secara manual yang CloudTrail didukung oleh bucket Amazon S3.

Pertimbangan utama

  • Pencatatan peristiwa data menimbulkan biaya tambahan. Anda harus secara eksplisit mengaktifkan peristiwa data karena tidak ditangkap secara default. Periksa untuk memastikan bahwa Anda mengaktifkan peristiwa data untuk akun Anda.

  • Dengan gateway yang menghasilkan beban kerja tinggi, Anda dapat dengan cepat menghasilkan ribuan log dalam waktu singkat. Perhatikan berapa lama Anda memilih untuk mengaktifkan peristiwa CloudTrail data untuk Gateway yang sibuk.

  • CloudTrail menyimpan log peristiwa data gateway di bucket Amazon S3 yang Anda pilih. Pertimbangkan untuk menggunakan bucket di AWS akun terpisah untuk mengatur acara dengan lebih baik dari berbagai sumber daya ke tempat sentral untuk memudahkan kueri dan analisis.

Saat Anda mencatat peristiwa data untuk jejak CloudTrail, Anda harus menggunakan pemilih peristiwa lanjutan untuk mencatat peristiwa data untuk operasi gateway.

contoh
AWS CLI
  1. Untuk mengaktifkan peristiwa CloudTrail data untuk sumber daya gateway menggunakan AWS CLI, Anda dapat menjalankan perintah berikut di 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. Contoh berikut menunjukkan cara membuat CloudTrail jejak dengan peristiwa data AgentCore Gateway menggunakan 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; } }