rkoval / alfred-aws-console-services-workflow

A powerful workflow for quickly opening up AWS Console Services in your browser or searching for entities within them.
MIT License
312 stars 54 forks source link

Automatically log in & add `aws-vault` support #68

Open AhsanFazal opened 11 months ago

AhsanFazal commented 11 months ago

Hi @rkoval,

I've been a fan of your Alfred Workflow for quite some time now. It's an invaluable tool in my specific use case, where - as a freelancer - I find myself switching between many different AWS environments in a day.

I've made some enhancements that have been well-received among my colleagues. I've been considering a pull request for a while now, and given the positive feedback, I decided it's time to share these features with the community. Here are the details:

1. AWS Vault as credential provider

The environment variable ALFRED_AWS_CONSOLE_SERVICES_WORKFLOW_AWS_AUTH_PROVIDER can be set to aws-vault to enable this feature. The workflow will then utilize AWS Vault for credential management.

The reason I have implemented this feature in my own workflow is because I do not like to store any IAM credentials in plain text, nor do I like exposing them to the terminal/applications running AWS operations.

2. Federated URLs with Custom Identity Broker Access

I think all developers can agree that getting presented with the following screen when trying to sign in is annoying to say the least.

image

Using the custom identity broker access API endpoints, it is possible to construct a - what I like to call - LogoutLoginURL. This makes it possible to never get presented with that pesky annoying page ever again.

Notes

I understand the importance of code quality and testing. However, this PR is a starting point to gauge your interest. If these features align with your vision for the workflow, I'd be more than happy to refine the code and add necessary tests.

Looking forward to your thoughts!

P.S. This is PR is a very stripped down version of my custom setup of this workflow, as I do not think they would fit the vision of "keep it simple". But if you want to work together on creating a general implementation of those, let me know! To give you an idea: