See it as a diagram
Everything below, as a diagram you can edit. Describe yours and see it in seconds.
No account needed · Editable canvas, not a picture
Where each serverless icon actually lives
Lambda sits under Compute. API Gateway sits under Networking and Content Delivery. EventBridge, SQS, SNS, Step Functions, and AppFlow sit under Application Integration. DynamoDB sits under Database. Cognito sits under Security, Identity and Compliance. S3 sits under Storage, and CloudWatch under Management and Governance.
That spread is a genuine problem for anyone building one diagram: seven services, six categories, six downloads. Searching by service name instead of by category collapses the job to one step, which is what the AWS icon collection and the per-service pages like the Lambda icon exist for.
One more thing the category layout hides: Kinesis Data Streams and Managed Streaming for Apache Kafka are under Analytics, not Application Integration, even though a Lambda event source mapping treats them the same way it treats SQS. If your flow polls a stream, the icon is in a different pile than the queue next to it.
Service icon or resource icon, per box
AWS ships two kinds of mark, and serverless diagrams are where the difference matters most. The filled category-coloured square is the service, and it lives in Architecture-Service-Icons. The lighter line-art mark is a resource inside that service, and it lives in Resource-Icons, in a light and a dark variant. Lambda, EventBridge and SQS all have both tiers.
Use the service square when the box means the platform: a legend entry, or a lane header saying all of this is Lambda. Use the resource icon when the box is a named thing you created, the checkout function, the orders bus, the payments queue. Reviewers read the filled square as a capability and the line art as an instance, and matching that expectation removes a whole category of confusion.
Worth knowing before you go looking: the collection here mirrors the service tier, so aws-lambda and aws-simple-queue-service resolve by name, while the resource tier comes out of the vendor asset package on aws.amazon.com/architecture/icons. Both tiers ship in the same release, currently stamped 07312026, so mixing them within one diagram is fine as long as the release matches.
The dead letter queue is a queue, so it takes the same SQS mark as the main queue. Distinguish them by name and position, not by inventing a symbol. Same for the Step Functions state machine: one node with the workflow name, because the state machine definition already renders as its own better diagram.
Assemble them so the flow reads
Name every function by what it does, never by its runtime or its handler path. checkout-api and order-worker tell a reader something; lambda-python-3-12 tells them nothing an architecture diagram should be carrying.
Put the icon on the node and the trigger on the arrow. A serverless picture is mostly arrows, and an unlabelled arrow between two Lambda squares hides whether the call is synchronous, asynchronous, or a polled event source mapping. The companion page on serverless architecture diagrams covers what to write on each one.
Keep the datastore each function owns next to it. Two functions writing the same DynamoDB table is a design decision, and it only becomes visible when the table is drawn once with two inbound arrows rather than twice.
From icon search to a finished canvas
Type the architecture as a sentence and Datadef resolves each service name to its official icon and places it. Because generation works from the full product name rather than the abbreviation, the near-miss problem does not arise: "Simple Queue Service" is unambiguous where a bare "sqs" typed into a general icon search is a coin toss.
The same lookup is exposed to coding agents. The Datadef MCP server presents 36 tools, nine of them outcome-level, such as create a diagram or refresh a connected repository, and twenty-seven fine-grained canvas tools. canvas_search_icons is one of the twenty-seven, and it returns ranked matches with a match type and a confidence rather than a single guess, so an assistant in Claude Code, Cursor, ChatGPT or Claude Desktop can tell an exact alias hit from a name-similarity hit before it places a node. canvas_add_nodes and canvas_connect_nodes build, canvas_group_nodes creates the domain zones, and canvas_validate_canvas reports orphans and overlaps so the agent can fix its own output. The handshake is anonymous: initialize and tools/list answer with no key, so a client can inspect the surface before anyone signs in. See the agent workflow for how that loop runs.
The canvas stays editable afterwards: rename nodes, relabel edges, group functions into a domain zone once there are more than a dozen. Export the result to PNG or JPEG, or put the live embed in the service README so the picture follows the canvas.
FAQ
Where is the Lambda icon in the official AWS icon set?
Is there a single serverless icon in the AWS set?
Should I use the Lambda service icon or the function resource icon?
Which icon represents an EventBridge event bus?
Can an AI assistant pick the right icons for me?