Skip to content

Release 0.20.0 - #94

Merged
utkarsh5026 merged 1 commit into
mainfrom
release/v0.20.0
Oct 18, 2026
Merged

utkarsh5026 merged 1 commit into
mainfrom
release/v0.20.0

Conversation

@utkarsh5026

Copy link
Copy Markdown
Owner

Added

  • Ask about your account in plain English: AgentView().ask("Which Lambda failed last night?") answers from the package's own read-only tools, run by an agent (LangChain's deepagents) on your Azure OpenAI deployment. It finds which functions failed in your night (in set_timezone()'s zone, or AgentView(timezone=...)'s), why, from their logs, and the run that shows it, and every answer says the window and regions it checked, what it couldn't read, the AWS reads, tokens and cost, and the LambdaView commands to look closer. Follow-up questions continue the conversation; transcript() and tools() show the questions so far and what it can call. Nothing can change your account: a guard refuses any AWS call that isn't a read, and each question has a budget (tool calls, time, cost, a 3-day log window) that it stops at and says so. Version 1 covers Lambda. Install it with pip install "aws-analyzer[agent]" (Python 3.11 or newer; everything else still runs on 3.10 with boto3 alone) (#87).

  • The agent's tools come in toolkits, one per AWS service: AgentView(toolkits=["lambda", Runbooks()]) adds a Toolkit of your own (from aws_analyzer.agent) beside the Lambda one, and its tools get the same budget, error handling, read-only guard and report. The agent guide's "Your own tools" has an example (#88).

  • The agent covers S3 too, and the bucket events that invoke Lambda functions: AgentView().ask("Were last night's uploads to acme-raw processed?") checks the bucket's event notifications, the files that arrived in the window and the function they should have run, and says what broke the link: files ending in .CSV when the filter says .csv, files uploaded in parts when the notification fires only on PUT uploads, a function that isn't there, a missing permission (with the aws lambda add-permission command), or no file arriving at all, next to the function's runs and failures in that window. It also answers about buckets on their own (their setup, size and cost, what's in a folder, which files arrived when, one file's headers), and never reads what's inside a file. AgentView(toolkits=["s3"]) gives S3 alone, and budget={"s3_keys": 500_000} lets a listing read more than its default 100,000 keys (#89).

  • S3: S3Analyzer().notifications("my-bucket") lists a bucket's event notifications: which Lambda functions, SQS queues and SNS topics it sends which events to, for which keys, and whether EventBridge gets them all (parse_notifications does the same on a GetBucketNotificationConfiguration response). It needs s3:GetBucketNotification (#89).

  • set_timezone("Asia/Kolkata") (from aws_analyzer) shows times in your own time zone instead of UTC, in every report and window of every service, and their columns and sentences say which zone (Last modified (IST), since 2024-05-01 14:02 IST). It takes a tz database name, its city alone ("kolkata", "new york"), "local" for the machine's own zone, an offset ("+05:30") or "UTC" to go back, and dates you type in (since="2024-05-01 10:00") are read in the same zone. The AWS_ANALYZER_TZ environment variable picks it for every notebook, and help() says which zone times are in. CloudWatch's daily numbers stay in UTC days, as AWS adds them up (#86).

Full diff: v0.19.0...v0.20.0

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@utkarsh5026
utkarsh5026 merged commit 540b481 into main Oct 18, 2026
8 checks passed
@utkarsh5026
utkarsh5026 deleted the release/v0.20.0 branch October 18, 2026 07:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant