Repository navigation
Release 0.20.0 - #94
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 (inset_timezone()'s zone, orAgentView(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 theLambdaViewcommands to look closer. Follow-up questions continue the conversation;transcript()andtools()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 withpip 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 aToolkitof your own (fromaws_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.CSVwhen 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 theaws lambda add-permissioncommand), 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, andbudget={"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_notificationsdoes the same on aGetBucketNotificationConfigurationresponse). It needss3:GetBucketNotification(#89).set_timezone("Asia/Kolkata")(fromaws_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. TheAWS_ANALYZER_TZenvironment variable picks it for every notebook, andhelp()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