The screen recording archival pipeline is dropping half the sessions before they hit the S3 bucket. Configured the export in the admin console under Recordings > Settings, but the EventBridge rule only fires for the initial handshake, not the actual media stream. Lambda Data Action returns a 403 Access Denied on PutObject, even though the execution role has S3:PutObject and S3:ListBucket attached. Checked the policy ARN three times. It’s valid.
Console logs show the webhook hitting the trigger endpoint, then timing out. The GC UI says the recording is processing, but the S3 inventory stays empty. Tried adjusting the retention policy and toggling the secure storage flag, doing jack all. The CloudFormation stack for the receiving endpoint looks clean.
Type: AWS::Lambda::Function
Properties:
FunctionName: gc-screen-ingest
Handler: index.handler
Runtime: nodejs18.x
Role: !GetAtt IngestExecutionRole.Arn
Environment:
Variables:
BUCKET_NAME: prod-gc-captures
The payload structure seems off. EventBridge is passing a recordingId but the Lambda expects a captureSessionUUID. Don’t know if that’s a GC naming mismatch or just how the integration maps the fields. CloudWatch shows the function starting, then aborting after 2.1 seconds.
{"timestamp": "2024-05-18T14:22:01Z", "status": "FAILURE", "error": "Timeout waiting for media chunk", "traceId": "req-88a2c...
Network traces indicate the request leaves the VPC via the NAT gateway, hits the GC edge, and never completes the multipart upload. The admin console mentions a manifest file, but nothing about chunk boundaries or how the screen capture sessions actually serialize.