Jo
Okay, so we've built this massive, multi-region WorkSpaces environment. It's secure, it's automated with Terraform, the networking is solid... but now we have to think about the day-to-day. The people actually using it.
Transcript
Jo
Okay, so we've built this massive, multi-region WorkSpaces environment. It's secure, it's automated with Terraform, the networking is solid... but now we have to think about the day-to-day. The people actually using it.
Beau
Right, the 1,200 actual humans. Because it's not 'set it and forget it'. Someone's WorkSpace is going to feel sluggish, or they'll install something that breaks it, or... I don't know, their kid will spill juice on their laptop and they need to reconnect from a new device.
Jo
Exactly. And in a traditional model, every single one of those issues becomes a help desk ticket. 'Please restart my VDI.' 'My WorkSpace is broken, can you rebuild it?' For 1,200 users... that's a full-time job for several people. It's just not scalable.
Beau
You'd drown in tickets. So this is where the self-service portal comes in. We give the users a few... safe buttons to press themselves.
Jo
Exactly. We expose controlled actions. Think 'Restart', 'Rebuild', maybe 'Request Upgrade'. Simple actions. The user gets instant gratification, and the IT team never even sees the request. It's about reducing that administrative burden while keeping governance.
Beau
Governance. That's the key word. We're not giving them the keys to the kingdom. We're giving them a key to their own front door. So, how do we build this? Is it a custom website? An off-the-shelf tool?
Jo
Two main paths, really. The most 'AWS-native' way is using AWS Service Catalog. You define the WorkSpace bundles we made earlier as 'products' in the catalog. Then you can create a portfolio of those products and share it with your users.
Beau
Okay, so a 'product' is like... a 'Standard User WorkSpace' or a 'Power User WorkSpace'. And the user sees this... this catalog, like an internal app store, and they can click on things?
Jo
Precisely. And Service Catalog has built-in controls. You can say, 'This group of users can only see the Standard product' and 'This group of developers can see the Performance product.' You can also define actions on those products, like 'Update' which could map to a bundle change, or 'Terminate'.
Beau
So that handles the 'who can do what' part. What's the other path you mentioned? The not-Service-Catalog one.
Jo
That's the more custom, serverless approach. You build your own simple front-end—just a static webpage hosted in an S3 bucket. That page has your 'Restart' and 'Rebuild' buttons. When a user clicks a button, it makes a call to an API Gateway endpoint.
Beau
Okay, so a web page talks to an API. And behind that API... a Lambda function?
Jo
You got it. The API Gateway triggers a Lambda function. That function contains the logic. It verifies who the user is, finds their WorkSpace ID, and then uses the AWS SDK to make the actual API call—like 'workspaces.reboot_workspaces' or 'workspaces.rebuild_workspaces'.
Beau
That sounds more flexible, but also more work. You have to build the UI, the API, the Lambda... but you get total control over the experience.
Jo
It is. And that's where the really interesting stuff comes in. Because in a highly regulated environment, you can't just let a user upgrade to a super expensive Graphics bundle whenever they want. There has to be an approval.
Beau
An approval workflow. Okay, so in my mental movie: I'm a user, my WorkSpace is slow. I go to our company portal, click 'Request Performance Upgrade'. What happens next? An email goes to my manager?
Jo
It could, but emails get lost. A better way is to integrate with what the business already uses for approvals. Tools like ServiceNow or Jira. So, your click on the portal triggers a Lambda function. But that function doesn't upgrade the WorkSpace. Not yet.
Beau
Okay... so what does it do?
Jo
Its only job is to call the ServiceNow or Jira API and create a ticket. An approval ticket, assigned to your manager. It pre-populates all the details: 'Beau requests upgrade from Standard to Performance for WorkSpace ID ws-123abc. Cost impact: $20/month.'
Beau
I see! So the workflow leaves AWS and enters the ITSM tool. My manager sees the Jira ticket, reviews it, and clicks the 'Approve' button inside Jira.
Jo
And this is the cool part. The 'Approve' button in Jira triggers a webhook. That webhook calls back to our API Gateway, but to a *different* endpoint. It invokes a *second* Lambda function.
Beau
Aha! And the second Lambda function is the one with the power. It receives the approval notification, and *it's* the one that actually calls the WorkSpaces API to perform the bundle modification. The circle is complete.
Jo
Exactly. You've completely automated the approval and execution while maintaining strict institutional control. And you can build on that. The second Lambda can also post a comment back to the Jira ticket saying 'Upgrade in progress', and then another when it's 'Complete'.
Beau
So you have a full, automated audit trail right there in the ticket. Nobody can claim they didn't approve it, and the user gets status updates without having to ask. That's... really powerful.
Jo
It's the difference between a proof-of-concept and a production-ready enterprise system. It's about governing user-initiated actions. A 'Rebuild' might be fine to allow instantly. But changing a bundle, which has a cost impact, needs that documented approval loop.
Beau
So the self-service portal isn't just one thing. It's a combination of a user interface, a set of APIs, a layer of serverless logic, and deep integration into existing business processes. It's an entire system.
Jo
That's the perfect way to put it. You're not just building a button; you're automating a business process and just exposing the very first step of it to the end user.