0
votes

I am building a Desktop-on-Demand solution using AWS Workspaces product and I am trying to understand what is the best AWS service to fit my requirements for managing state data for new users.

In a nutshell, solution will create a new AWS Workspace (virtual desktop instance) for a user when multiple conditions are met and checks are satisfied. These tasks would be satisfied by multiple lambda functions.
DynamoDB would be used as a central point for storing confguration data details like user data, user groups data and deployed virtual desktops data. Logic for Desktops creation would be implemented using Step Functions like below:

  • Event hook comes from Identity Management system firing a lambda function that checks if user desktop already exists in DynamoDB table
  • If it does not exist, another lambda creates AWS AD connector
  • Once this is done, another lambda builds custom image for new desktop if needed
  • Another lambda pulls latest data from Identity Management system and updates DynamoDB table for users and groups.
  • Other lambda functions that may be fired up as a dependency

To ensure we have transactional mechanism, we only deploy new desktop when all conditions are met. I can think about few ways of implementing this check:

  • Use DynamoDB table for keeping State data. When all attributes in item are in expected state, desktop can be created. If any lambda fails or produces data that does not fit, dont' create desktop.
  • Just use Step Functions and design it's logic flow that all conditions must satisfy before desktop is created
  • Someone suggested using SQS queue but I don't see how this can be used for my purpose.

What is the best way to keep this data?

1

1 Answers

3
votes

Step Functions is the method I would use for this. The DynamoDB solution would also work, but this seems like exactly the sort of thing Step Functions was designed to handle.

I agree that SQS would not be a correct solution.