View a markdown version of this page

Amazon Bedrock AgentCore Gateway リソースの CloudTrail データイベントログ記録を有効にする - Amazon Bedrock AgentCore

Amazon Bedrock AgentCore Gateway リソースの CloudTrail データイベントログ記録を有効にする

CloudTrail データイベントを使用して、Amazon Bedrock AgentCore Gateway リクエストに関する情報を取得できます。Gateway の CloudTrail データイベントを有効にするには、Amazon S3 バケットにバックアップされた CloudTrail で証跡を手動で作成する必要があります。

主な考慮事項

  • データイベントのログ記録には追加料金が発生します。データイベントはデフォルトでキャプチャされないため、明示的に有効にする必要があります。アカウントでデータイベントが有効になっていることを確認します。

  • 高いワークロードを生成しているゲートウェイを使用すると、短時間で数千のログをすばやく生成できます。ビジーゲートウェイの CloudTrail データイベントを有効にする期間に注意してください。

  • CloudTrail は、ゲートウェイデータイベントログを選択した Amazon S3 バケットに保存します。クエリと分析を容易にするために、複数のリソースからのイベントを一元的に整理するには、別の AWS アカウントでバケットを使用することを検討してください。

CloudTrail で証跡のデータイベントをログに記録する場合は、高度なイベントセレクタを使用してゲートウェイオペレーションのデータイベントをログに記録する必要があります。

AWS CLI
  1. AWS CLI を使用してゲートウェイリソースの CloudTrail データイベントを有効にするには、ターミナルで次のコマンドを実行します。

    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. 次の例は、 AWS CDK を使用して AgentCore Gateway データイベントで CloudTrail 証跡を作成する方法を示しています。

    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; } }