Phase 3: proactive heartbeat — EventBridge 30min rule, heartbeat-runner Lambda, HEARTBEAT_OK suppression
This commit is contained in:
@@ -8,6 +8,8 @@ import * as apigatewayv2 from 'aws-cdk-lib/aws-apigatewayv2';
|
||||
import * as apigatewayv2integrations from 'aws-cdk-lib/aws-apigatewayv2-integrations';
|
||||
import * as iam from 'aws-cdk-lib/aws-iam';
|
||||
import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';
|
||||
import * as events from 'aws-cdk-lib/aws-events';
|
||||
import * as eventsTargets from 'aws-cdk-lib/aws-events-targets';
|
||||
import { SqsEventSource } from 'aws-cdk-lib/aws-lambda-event-sources';
|
||||
import { Construct } from 'constructs';
|
||||
import * as path from 'path';
|
||||
@@ -303,6 +305,29 @@ export class AgentClawStack extends cdk.Stack {
|
||||
// Output the URL so it can be manually set in agentcore.json OAUTH_START_URL.
|
||||
|
||||
|
||||
// ── Lambda: heartbeat-runner ──────────────────────────────────────────
|
||||
const heartbeatRunnerFn = new lambda.Function(this, 'HeartbeatRunner', {
|
||||
functionName: 'agent-claw-heartbeat-runner',
|
||||
runtime: lambda.Runtime.PYTHON_3_12,
|
||||
handler: 'handler.handler',
|
||||
code: lambda.Code.fromAsset(path.join(__dirname, '../../src/lambdas/heartbeat-runner')),
|
||||
timeout: cdk.Duration.seconds(60),
|
||||
memorySize: 128,
|
||||
environment: {
|
||||
MESSAGE_QUEUE_URL: messageQueue.queueUrl,
|
||||
USERS_TABLE_NAME: usersTable.tableName,
|
||||
},
|
||||
});
|
||||
messageQueue.grantSendMessages(heartbeatRunnerFn);
|
||||
usersTable.grantReadData(heartbeatRunnerFn);
|
||||
|
||||
// EventBridge rule: every 30 minutes
|
||||
const heartbeatRule = new events.Rule(this, 'HeartbeatRule', {
|
||||
ruleName: 'agent-claw-heartbeat',
|
||||
schedule: events.Schedule.rate(cdk.Duration.minutes(30)),
|
||||
});
|
||||
heartbeatRule.addTarget(new eventsTargets.LambdaFunction(heartbeatRunnerFn));
|
||||
|
||||
// ── Lambda: scheduler ─────────────────────────────────────────────────
|
||||
const schedulerFn = new lambda.Function(this, 'Scheduler', {
|
||||
functionName: 'agent-claw-scheduler',
|
||||
|
||||
Reference in New Issue
Block a user