diff --git a/.gitignore b/.gitignore
index 163d2b51..df7deb14 100644
--- a/.gitignore
+++ b/.gitignore
@@ -67,3 +67,22 @@ info.plist.*
# Visual Studio Code
.vscode
+
+# Binaries for programs and plugins
+*.exe
+*.exe~
+*.dll
+*.so
+*.dylib
+
+# Test binary, built with `go test -c`
+*.test
+
+# Output of the go coverage tool, specifically when used with LiteIDE
+*.out
+
+# Dependency directories (remove the comment below to include it)
+# vendor/
+
+alfred-aws-console-services-workflow
+.alfred
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index 03177bd4..cfc052df 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2017 Ryan Koval
+Copyright (c) 2020 Ryan Koval
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index 7e2855e7..e9479f5c 100644
--- a/README.md
+++ b/README.md
@@ -16,19 +16,18 @@ Open up the Alfred Workflow configuration to see the full list of supported serv
### Contributing
#### Requirements
-- Node.js 7.3.0 (or later)
+- go 1.14.0 (or later)
#### Installation
From the root of this repo, run:
```sh
-cd src
-npm install
+go get github.com/rkoval/alfred-aws-console-services-workflow
```
#### Adding Entries
-To add entries to the Alfred Workflow, modify [the .yml config file](src/console-services.yml) and then run [this script](src/generate_items.js) from its directory. It will parse the .yml file and add elements in-place to the info.plist file, which Alfred reads.
+To add entries to the Alfred Workflow, modify [the .yml config file](console-services.yml). This file is used by the executable to populate entries in Alfred.
#### Packaging for Release
diff --git a/console-services.yml b/console-services.yml
index da0aa6c4..b0414560 100644
--- a/console-services.yml
+++ b/console-services.yml
@@ -1,612 +1,784 @@
---
-- command: alexa
- description: Alexa for Business - Empower your organization with voice
+- id: alexa
+ name: Alexa for Business
+ description: Empower your organization with voice
url: https://console.aws.amazon.com/a4b/home
-- command: amplify
- description: Amplify - Develop & deploy cloud-powered mobile and web apps
+- id: amplify
+ name: Amplify
+ description: Develop & deploy cloud-powered mobile and web apps
url: https://console.aws.amazon.com/amplify/home
-- command: apigateway
- description: API Gateway - Build, Deploy and Manage APIs
+- id: apigateway
+ name: API Gateway
+ description: Build, Deploy and Manage APIs
url: https://console.aws.amazon.com/apigateway/home
-- command: appstream
- description: AppStream 2.0 - Stream desktop applications securely to any web browser
+- id: appstream
+ name: AppStream 2.0
+ description: Stream desktop applications securely to any web browser
url: https://console.aws.amazon.com/appstream2/home
-- command: appsync
- description: AppSync - Real-Time Data Sync Using GraphQL for Mobile & Web Apps, Online or Offline
+- id: appsync
+ name: AppSync
+ description: Real-Time Data Sync Using GraphQL for Mobile & Web Apps, Online or Offline
url: https://console.aws.amazon.com/appsync/home
-- command: artifact
- description: Artifact - AWS Compliance Reports and Agreements
+- id: artifact
+ name: Artifact
+ description: AWS Compliance Reports and Agreements
url: https://console.aws.amazon.com/artifact/home
-- command: athena
- description: Athena - Query Data in S3 using SQL
+- id: athena
+ name: Athena
+ description: Query Data in S3 using SQL
url: https://console.aws.amazon.com/athena/home
-- command: awsautoscaling
- description: Auto Scaling - AWS Auto Scaling enables you to quickly scale your entire application on AWS
+- id: autoscaling
+ name: Auto Scaling
+ description: AWS Auto Scaling enables you to quickly scale your entire application on AWS
url: https://console.aws.amazon.com/awsautoscaling/home
-- command: backup
- description: Backup - centrally manage and automate backups across AWS services
+- id: backup
+ name: Backup
+ description: centrally manage and automate backups across AWS services
url: https://console.aws.amazon.com/backup/home
-- command: batch
- description: Batch - Run Batch Jobs at Any Scale
+- id: batch
+ name: Batch
+ description: Run Batch Jobs at Any Scale
url: https://console.aws.amazon.com/batch/home
-- command: blockchain
- description: Blockchain - Easily create and manage scalable blockchain networks
+- id: blockchain
+ name: Blockchain
+ description: Easily create and manage scalable blockchain networks
url: https://console.aws.amazon.com/blockchain/home
-- command: billing
- description: Billing - Access, analyze, and control your AWS costs and usage
+- id: billing
+ name: Billing
+ description: Access, analyze, and control your AWS costs and usage
url: https://console.aws.amazon.com/billing/home
-- command: budgets
- description: Budgets - Set Custom Budgets and Receive Alerts
+- id: budgets
+ name: Budgets
+ description: Set Custom Budgets and Receive Alerts
url: https://console.aws.amazon.com/billing/home#/budgets#/home
-- command: acm
- description: Certificate Manager - Provision, Manage, and Deploy SSL/TLS Certificates
+- id: acm
+ name: Certificate Manager
+ short_name: ACM
+ description: Provision, Manage, and Deploy SSL/TLS Certificates
url: https://console.aws.amazon.com/acm/home
-- command: chime
- description: Chime - Amazon Chime is a communications service that transforms online meetings
+- id: chime
+ name: Chime
+ description: Amazon Chime is a communications service that transforms online meetings
url: https://chime.aws.amazon.com/
-- command: cloud9
- description: Cloud9 - A Cloud IDE for Writing, Running, and Debugging Code
+- id: cloud9
+ name: Cloud9
+ description: A Cloud IDE for Writing, Running, and Debugging Code
url: https://console.aws.amazon.com/cloud9/home
-- command: cloudformation
- description: CloudFormation - Create and Manage Resources with Templates
+- id: cloudformation
+ name: CloudFormation
+ description: Create and Manage Resources with Templates
url: https://console.aws.amazon.com/cloudformation/home
-- command: cloudfront
- description: CloudFront - Global Content Delivery Network
+- id: cloudfront
+ name: CloudFront
+ description: Global Content Delivery Network
url: https://console.aws.amazon.com/cloudfront/home
-- command: cloudhsm
- description: CloudHSM - Managed Hardware Security Modules in the Cloud
+- id: cloudhsm
+ name: CloudHSM
+ description: Managed Hardware Security Modules in the Cloud
url: https://console.aws.amazon.com/cloudhsm/home
-- command: cloudmap
- description: Cloud Map - Build a dynamic map of your cloud
+- id: cloudmap
+ name: Cloud Map
+ description: Build a dynamic map of your cloud
url: https://console.aws.amazon.com/cloudmap/home
-- command: cloudsearch
- description: CloudSearch - Managed Search Service
+- id: cloudsearch
+ name: CloudSearch
+ description: Managed Search Service
url: https://console.aws.amazon.com/cloudsearch/home
-- command: cloudtrail
- description: CloudTrail - Track User Activity and API Usage
+- id: cloudtrail
+ name: CloudTrail
+ description: Track User Activity and API Usage
url: https://console.aws.amazon.com/cloudtrail/home
-- command: cloudwatch
- description: CloudWatch - Monitor Resources and Applications
+- id: cloudwatch
+ name: CloudWatch
+ description: Monitor Resources and Applications
url: https://console.aws.amazon.com/cloudwatch/home
-- command: codebuild
- description: CodeBuild - Build and Test Code
+- id: codebuild
+ name: CodeBuild
+ description: Build and Test Code
url: https://console.aws.amazon.com/codebuild/home
-- command: codecommit
- description: CodeCommit - Store Code in Private Git Repositories
+- id: codecommit
+ name: CodeCommit
+ description: Store Code in Private Git Repositories
url: https://console.aws.amazon.com/codecommit/home
-- command: codedeploy
- description: CodeDeploy - Automate Code Deployments
+- id: codedeploy
+ name: CodeDeploy
+ description: Automate Code Deployments
url: https://console.aws.amazon.com/codedeploy/home
-- command: codepipeline
- description: CodePipeline - Release Software using Continuous Delivery
+- id: codepipeline
+ name: CodePipeline
+ description: Release Software using Continuous Delivery
url: https://console.aws.amazon.com/codepipeline/home
-- command: codestar
- description: Codestar - Develop, build and deploy applications
+- id: codestar
+ name: Codestar
+ description: Develop, build and deploy applications
url: https://console.aws.amazon.com/codestar/home
-- command: cognito
- description: Cognito - User Identity and App Data Synchronization
+- id: cognito
+ name: Cognito
+ description: User Identity and App Data Synchronization
url: https://console.aws.amazon.com/cognito/home
-- command: comprehend
- description: Comprehend - Analyze Unstructured Text
+- id: comprehend
+ name: Comprehend
+ description: Analyze Unstructured Text
url: https://console.aws.amazon.com/comprehend/home
-- command: config
- description: Config - Track Resource Inventory and Changes
+- id: config
+ name: Config
+ description: Track Resource Inventory and Changes
url: https://console.aws.amazon.com/config/home
-- command: connect
- description: Connect - managed contact center that enables engagement at any scale
+- id: connect
+ name: Connect
+ description: managed contact center that enables engagement at any scale
url: https://console.aws.amazon.com/connect/home
-- command: controltower
- description: Control Tower - set up and govern your multi-account AWS environment
+- id: controltower
+ name: Control Tower
+ description: set up and govern your multi-account AWS environment
url: https://console.aws.amazon.com/controltower/home
-- command: costreports
- description: Cost Explorer - Visualize and Explore Your AWS Costs and Usage
+- id: costreports
+ name: Cost Explorer
+ description: Visualize and Explore Your AWS Costs and Usage
+ extra_search_terms:
+ - reports
url: https://console.aws.amazon.com/cost-reports/home
-- command: datapipeline
- description: Data Pipeline - Orchestration for Data-Driven Workflows
+- id: datapipeline
+ name: Data Pipeline
+ description: Orchestration for Data-Driven Workflows
url: https://console.aws.amazon.com/datapipeline/home
-- command: datasync
- description: DataSync - DataSync simplifies, automates, and accelerates moving data
+- id: datasync
+ name: DataSync
+ description: DataSync simplifies, automates, and accelerates moving data
url: https://console.aws.amazon.com/datasync/home
-- command: deeplens
- description: DeepLens - Deep Learning Enabled Video Camera
+- id: deeplens
+ name: DeepLens
+ description: Deep Learning Enabled Video Camera
url: https://console.aws.amazon.com/deeplens/home
-- command: devicefarm
- description: Device Farm - Test Android, iOS, and Web Apps on Real Devices in the Cloud
+- id: devicefarm
+ name: Device Farm
+ description: Test Android, iOS, and Web Apps on Real Devices in the Cloud
url: https://console.aws.amazon.com/devicefarm/home
-- command: directconnect
- description: Direct Connect - Dedicated Network Connection to AWS
+- id: directconnect
+ name: Direct Connect
+ description: Dedicated Network Connection to AWS
url: https://console.aws.amazon.com/directconnect/home
-- command: directoryservice
- description: Directory Service - Host and Manage Active Directory
+- id: directoryservice
+ name: Directory Service
+ description: Host and Manage Active Directory
url: https://console.aws.amazon.com/directoryservice/home
-- command: discovery
- description: Application Discovery Service - Discover on-premises application inventory and dependencies
+- id: discovery
+ name: Application Discovery Service
+ description: Discover on-premises application inventory and dependencies
url: https://console.aws.amazon.com/discovery/home
-- command: dms
- description: DMS - Managed Database Migration Service
+- id: dms
+ name: Database Migation Service
+ short_name: DMS
+ description: Managed Database Migration Service
url: https://console.aws.amazon.com/dms/home
-- command: documentdb
- description: DocumentDB - Fully-managed MongoDB-compatible database service
+- id: documentdb
+ name: DocumentDB
+ description: Fully-managed MongoDB-compatible database service
url: https://console.aws.amazon.com/documentdb/home
-- command: dynamodb
- description: DynamoDB - Managed NoSQL Database
+- id: dynamodb
+ name: DynamoDB
+ description: Managed NoSQL Database
url: https://console.aws.amazon.com/dynamodb/home
-- command: ec2
- description: EC2 - Virtual Servers in the Cloud
+- id: ec2
+ name: Elastic Cloud Compute
+ short_name: EC2
+ description: Virtual Servers in the Cloud
url: https://console.aws.amazon.com/ec2/home
-- command: ecr
- description: ECR - Fully-managed Docker container registry
+- id: ecr
+ name: Elastic Container Registry
+ short_name: ECR
+ description: Fully-managed Docker container registry
url: https://console.aws.amazon.com/ecr/home
-- command: ecs
- description: ECS - Run and Manage Docker Containers
+- id: ecs
+ name: Elastic Container Service
+ short_name: ECS
+ description: Run and Manage Docker Containers
url: https://console.aws.amazon.com/ecs/home
-- command: efs
- description: EFS - Managed File Storage for EC2
+- id: efs
+ name: Elastic File Storage
+ short_naem: EFS
+ description: Managed File Storage for EC2
url: https://console.aws.amazon.com/efs/home
-- command: eks
- description: EKS - Managed Kubernetes on AWS
+- id: eks
+ name: Elastic Kubernetes Service
+ short_name: EKS
+ description: Managed Kubernetes on AWS
url: https://console.aws.amazon.com/eks/home
-- command: elasticache
- description: ElastiCache - In-Memory Cache
+- id: elasticache
+ name: ElastiCache
+ description: In-Memory Cache
url: https://console.aws.amazon.com/elasticache/home
-- command: elasticbeanstalk
- description: Elastic Beanstalk - Run and Manage Web Apps
+- id: elasticbeanstalk
+ name: Elastic Beanstalk
+ description: Run and Manage Web Apps
url: https://console.aws.amazon.com/elasticbeanstalk/home
-- command: ess
- description: Elasticsearch Service - Run and Scale Elasticsearch Clusters
+- id: ess
+ name: Elasticsearch Service
+ short_name: ESS
+ description: Run and Scale Elasticsearch Clusters
url: https://console.aws.amazon.com/es/home
-- command: elastictranscoder
- description: Elastic Transcoder - Easy-to-Use Scalable Media Transcoding
+- id: elastictranscoder
+ name: Elastic Transcoder
+ description: Easy-to-Use Scalable Media Transcoding
url: https://console.aws.amazon.com/elastictranscoder/home
-- command: emr
- description: EMR - Managed Hadoop Framework
+- id: emr
+ name: Elastic Map Reduce
+ short_name: EMR
+ description: Managed Hadoop Framework
url: https://console.aws.amazon.com/elasticmapreduce/home
-- command: eventbridge
- description: EventBridge - Serverless event bus that connects application data from your own apps, SaaS, and AWS services
+- id: eventbridge
+ name: EventBridge
+ description: Serverless event bus that connects application data from your own apps, SaaS, and AWS services
url: https://console.aws.amazon.com/events/home
-- command: forecast
- description: Forecast - fully-managed service for accurate time-series forecasting
+- id: forecast
+ name: Forecast
+ description: fully-managed service for accurate time-series forecasting
url: https://console.aws.amazon.com/forecast/home
-- command: freertos
- description: FreeRTOS - IoT Operating System for Microcontrollers
+- id: freertos
+ name: FreeRTOS
+ description: IoT Operating System for Microcontrollers
url: https://console.aws.amazon.com/freertos/home
-- command: fsx
- description: FSx - Fully managed third-party file systems optimized for a variety of workloads
+- id: fsx
+ name: FSx
+ description: Fully managed third-party file systems optimized for a variety of workloads
url: https://console.aws.amazon.com/fsx/home
-- command: gamelift
- description: GameLift - Deploy and Scale Session-based Multiplayer Games
+- id: gamelift
+ name: GameLift
+ description: Deploy and Scale Session-based Multiplayer Games
url: https://console.aws.amazon.com/gamelift/home
-- command: glacier
- description: S3 Glacier - Archive Storage in the Cloud
+- id: glacier
+ name: S3 Glacier
+ description: Archive Storage in the Cloud
url: https://console.aws.amazon.com/glacier/home
-- command: globalaccelerator
- description: Global Accelerator - Improve your application’s availability and performance using the AWS Global Network
+- id: globalaccelerator
+ name: Global Accelerator
+ description: Improve your application’s availability and performance using the AWS Global Network
url: https://us-west-2.console.aws.amazon.com/ec2/GlobalAccelerator/home?region=us-west-2
-- command: glue
- description: Glue - fully managed ETL (extract, transform, and load) service
+- id: glue
+ name: Glue
+ description: fully managed ETL (extract, transform, and load) service
url: https://console.aws.amazon.com/glue/home
-- command: groundstation
- description: Ground Station - Communicate with satellites
+- id: groundstation
+ name: Ground Station
+ description: Communicate with satellites
url: https://console.aws.amazon.com/groundstation/home
-- command: guardduty
- description: GuardDuty - Intelligent Threat Detection to Protect Your AWS Accounts and Workloads
+- id: guardduty
+ name: GuardDuty
+ description: Intelligent Threat Detection to Protect Your AWS Accounts and Workloads
url: https://console.aws.amazon.com/guardduty/home
-- command: iam
- description: IAM - Manage User Access and Encryption Keys
+- id: iam
+ name: Identity and Access Management
+ short_name: IAM
+ description: Manage User Access and Encryption Keys
url: https://console.aws.amazon.com/iam/home
-- command: inspector
- description: Inspector - Analyze Application Security
+- id: inspector
+ name: Inspector
+ description: Analyze Application Security
url: https://console.aws.amazon.com/inspector/home
-- command: iot1click
- description: IoT 1-Click - Trigger AWS Lambda functions from simple devices
+- id: iot1click
+ name: IoT 1-Click
+ description: Trigger AWS Lambda functions from simple devices
url: https://console.aws.amazon.com/iot1click/home
-- command: iotanalytics
- description: IoT Analytics - Collect, preprocess, store, analyze and visualize data of IoT devices
+- id: iotanalytics
+ name: IoT Analytics
+ description: Collect, preprocess, store, analyze and visualize data of IoT devices
url: https://console.aws.amazon.com/iotanalytics/home
-- command: iotcore
- description: IoT Core - Connect Devices to the Cloud
+- id: iotcore
+ name: IoT Core
+ description: Connect Devices to the Cloud
url: https://console.aws.amazon.com/iotcore/home
-- command: iotdevicedefender
- description: IoT Device Defender - Connect Devices to the Cloud
+- id: iotdevicedefender
+ name: IoT Device Defender
+ description: Connect Devices to the Cloud
url: https://console.aws.amazon.com/devicedefender/home
-- command: iotdevicemanagement
- description: IoT Device Management - Securely Manage Fleets as Small as One Device, or as Broad as Millions of Devices
+- id: iotdevicemanagement
+ name: IoT Device Management
+ description: Securely Manage Fleets as Small as One Device, or as Broad as Millions of Devices
url: https://console.aws.amazon.com/iotdm/home
-- command: iotevents
- description: IoT Events - Monitor device fleets for changes and trigger alerts to respond
+- id: iotevents
+ name: IoT Events
+ description: Monitor device fleets for changes and trigger alerts to respond
url: https://console.aws.amazon.com/iotevents/home
-- command: iotgreengrass
- description: IoT Greengrass - Deploy and run code on your devices
+- id: iotgreengrass
+ name: IoT Greengrass
+ description: Deploy and run code on your devices
url: https://console.aws.amazon.com/iotgreengrass/home
-- command: iotsitewise
- description: IoT SiteWise - Data driven decisions in Industrial operations
+- id: iotsitewise
+ name: IoT SiteWise
+ description: Data driven decisions in Industrial operations
url: https://console.aws.amazon.com/iotsitewise/home
-- command: iotthingsgraph
- description: IoT Things Graph - Easily connect devices and web services to build IoT applications
+- id: iotthingsgraph
+ name: IoT Things Graph
+ description: Easily connect devices and web services to build IoT applications
url: https://console.aws.amazon.com/thingsgraph/home
-- command: msk
- description: MSK - Fully managed, highly available, and secure service for Apache Kafka
+- id: msk
+ name: Managed Streaming for Apache Kafka
+ short_name: MSK
+ description: Fully managed, highly available, and secure service for Apache Kafka
url: https://console.aws.amazon.com/msk/home
-- command: kms
- description: Key Management Service - Securely Generate and Manage AWS Encryption Keys
+- id: kms
+ name: Key Management Service
+ short_name: KMS
+ description: Securely Generate and Manage AWS Encryption Keys
url: https://console.aws.amazon.com/kms/home
-- command: kinesis
- description: Kinesis - Work with Real-Time Streaming Data
+- id: kinesis
+ name: Kinesis
+ description: Work with Real-Time Streaming Data
url: https://console.aws.amazon.com/kinesis/home
-- command: lambda
- description: Lambda - Run Code without Thinking about Servers
+- id: lambda
+ name: Lambda
+ description: Run Code without Thinking about Servers
url: https://console.aws.amazon.com/lambda/home
-- command: lex
- description: Lex - Build Voice and Text Chatbots
+- id: lex
+ name: Lex
+ description: Build Voice and Text Chatbots
url: https://console.aws.amazon.com/lex/home
-- command: licensemanager
- description: License Manager - Set rules to manage, discover, and report third-party license usage proactively
+- id: licensemanager
+ name: License Manager
+ description: Set rules to manage, discover, and report third-party license usage proactively
url: https://console.aws.amazon.com/license-manager/home
-- command: lightsail
- description: Lightsail - Launch and Manage Virtual Private Servers
+- id: lightsail
+ name: Lightsail
+ description: Launch and Manage Virtual Private Servers
url: https://lightsail.aws.amazon.com/ls/webapp/home
-- command: macie
- description: Macie - Amazon Macie classifies and secures your business-critical content.
+- id: macie
+ name: Macie
+ description: Amazon Macie classifies and secures your business-critical content.
url: https://us-east-1.redirection.macie.aws.amazon.com/
-- command: managedservices
- description: Managed Services - IT operations management for AWS
+- id: managedservices
+ name: Managed Services
+ description: IT operations management for AWS
url: https://console.aws.amazon.com/managedservices/home
-- command: marketplace
- description: Marketplace Subscriptions - Digital catalog where you can find, buy, and deploy software
+- id: marketplace
+ name: Marketplace Subscriptions
+ description: Digital catalog where you can find, buy, and deploy software
url: https://console.aws.amazon.com/marketplace/home
-- command: mediaconnect
- description: MediaConnect - Reliable, secure, and flexible transport for live video
+- id: mediaconnect
+ name: MediaConnect
+ description: Reliable, secure, and flexible transport for live video
url: https://console.aws.amazon.com/mediaconnect/home
-- command: mediaconvert
- description: MediaConvert - Convert file-based content for broadcast and multiscreen delivery
+- id: mediaconvert
+ name: MediaConvert
+ description: Convert file-based content for broadcast and multiscreen delivery
url: https://console.aws.amazon.com/mediaconvert/home
-- command: medialive
- description: MediaLive - Convert video inputs into live outputs for broadcast and streaming delivery
+- id: medialive
+ name: MediaLive
+ description: Convert video inputs into live outputs for broadcast and streaming delivery
url: https://console.aws.amazon.com/medialive/home
-- command: mediapackage
- description: MediaPackage - Deliver video to many devices using just-in-time format conversion
+- id: mediapackage
+ name: MediaPackage
+ description: Deliver video to many devices using just-in-time format conversion
url: https://console.aws.amazon.com/mediapackage/home
-- command: mediastore
- description: MediaStore - Store and deliver video assets for live or on-demand media workflows
+- id: mediastore
+ name: MediaStore
+ description: Store and deliver video assets for live or on-demand media workflows
url: https://console.aws.amazon.com/mediastore/home
-- command: mediatailor
- description: MediaTailor - Personalize and monetize multiscreen content with server-side ad insertion
+- id: mediatailor
+ name: MediaTailor
+ description: Personalize and monetize multiscreen content with server-side ad insertion
url: https://console.aws.amazon.com/mediatailor/home
-- command: migrationhub
- description: Migration Hub - Simplify and accelerate the migration of your data centers to AWS
+- id: migrationhub
+ name: Migration Hub
+ description: Simplify and accelerate the migration of your data centers to AWS
url: https://console.aws.amazon.com/migrationhub/home
-- command: mobilehub
- description: Mobile Hub - Build, Test, and Monitor Mobile Apps
+- id: mobilehub
+ name: Mobile Hub
+ description: Build, Test, and Monitor Mobile Apps
url: https://console.aws.amazon.com/mobilehub/home
-- command: mq
- description: MQ - Managed message broker service for Apache ActiveMQ
+- id: mq
+ name: MQ
+ description: Managed message broker service for Apache ActiveMQ
+ extra_search_terms:
+ - activemq
url: https://console.aws.amazon.com/amazon-mq/home
-- command: neptune
- description: Neptune - Fast, reliable graph database built for the cloud
+- id: neptune
+ name: Neptune
+ description: Fast, reliable graph database built for the cloud
url: https://console.aws.amazon.com/neptune/home
-- command: opsworks
- description: OpsWorks - Configuration Management with Chef and Puppet
+- id: opsworks
+ name: OpsWorks
+ description: Configuration Management with Chef and Puppet
url: https://console.aws.amazon.com/opsworks/home
-- command: organizations
- description: Organizations - Policy-based management for multiple AWS accounts.
+- id: organizations
+ name: Organizations
+ description: Policy-based management for multiple AWS accounts.
url: https://console.aws.amazon.com/organizations/home
-- command: personalize
- description: Personalize - easily add real-time recommendations to your apps
+- id: personalize
+ name: Personalize
+ description: easily add real-time recommendations to your apps
url: https://console.aws.amazon.com/personalize/home
-- command: pinpoint
- description: Pinpoint - Engage Users via Email, SMS, Push & Analytics
+- id: pinpoint
+ name: Pinpoint
+ description: Engage Users via Email, SMS, Push & Analytics
url: https://console.aws.amazon.com/pinpoint/home
-- command: polly
- description: Polly - Turn Text into Lifelike Speech
+- id: polly
+ name: Polly
+ description: Turn Text into Lifelike Speech
url: https://console.aws.amazon.com/polly/home
-- command: quicksight
- description: QuickSight - Fast, easy to use business analytics
+- id: quicksight
+ name: QuickSight
+ description: Fast, easy to use business analytics
url: https://quicksight.aws.amazon.com/
-- command: rds
- description: RDS - Managed Relational Database Service
+- id: rds
+ name: Relational Database Service
+ short_name: RDS
+ description: Managed Relational Database Service
url: https://console.aws.amazon.com/rds/home
-- command: redshift
- description: Redshift - Fast, Simple, Cost-Effective Data Warehousing
+- id: redshift
+ name: Redshift
+ description: Fast, Simple, Cost-Effective Data Warehousing
url: https://console.aws.amazon.com/redshift/home
-- command: rekognition
- description: Rekognition - Search and Analyze Images
+- id: rekognition
+ name: Rekognition
+ description: Search and Analyze Images
url: https://console.aws.amazon.com/rekognition/home
-- command: ram
- description: Resource Access Manager - Share AWS resources with other accounts or AWS Organizations
+- id: ram
+ name: Resource Access Manager
+ description: Share AWS resources with other accounts or AWS Organizations
url: https://console.aws.amazon.com/ram/home
-- command: robomaker
- description: RoboMaker - Develop, test, and deploy intelligent robotics applications
+- id: robomaker
+ name: RoboMaker
+ description: Develop, test, and deploy intelligent robotics applications
url: https://console.aws.amazon.com/robomaker/home
-- command: route53
- description: Route 53 - Scalable DNS and Domain Name Registration
+- id: route53
+ name: Route 53
+ description: Scalable DNS and Domain Name Registration
url: https://console.aws.amazon.com/route53/home
-- command: s3
- description: S3 - Scalable Storage in the Cloud
+- id: s3
+ name: Simple Storage Service
+ short_name: S3
+ description: Scalable Storage in the Cloud
url: https://console.aws.amazon.com/s3/home
-- command: sagemaker
- description: SageMaker - Build, Train, and Deploy Machine Learning Models
+- id: sagemaker
+ name: SageMaker
+ description: Build, Train, and Deploy Machine Learning Models
url: https://console.aws.amazon.com/sagemaker/home
-- command: secretsmanager
- description: Secrets Manager - Easily rotate, manage, and retrieve secrets throughout their lifecycle
+- id: secretsmanager
+ name: Secrets Manager
+ description: Easily rotate, manage, and retrieve secrets throughout their lifecycle
url: https://console.aws.amazon.com/secretsmanager/home
-- command: securityhub
- description: Security Hub - AWS’s security and compliance center
+- id: securityhub
+ name: Security Hub
+ description: AWS’s security and compliance center
url: https://console.aws.amazon.com/securityhub/home
-- command: serverlessrepo
- description: Serverless Application Repository - Assemble, deploy, and share serverless applications within teams or publicly
+- id: serverlessrepo
+ name: Serverless Application Repository
+ description: Assemble, deploy, and share serverless applications within teams or publicly
url: https://console.aws.amazon.com/serverlessrepo/home
-- command: servermigrationservice
- description: Server Migration Service - Migrate on-premises servers to AWS
+- id: servermigrationservice
+ name: Server Migration Service
+ description: Migrate on-premises servers to AWS
url: https://console.aws.amazon.com/servermigration/home
-- command: servicecatalog
- description: Service Catalog - allows organizations to manage approved catalogs of IT resources and make them available to employees via a personalized portal.
+- id: servicecatalog
+ name: Service Catalog
+ description: allows organizations to manage approved catalogs of IT resources and make them available to employees via a personalized portal.
url: https://console.aws.amazon.com/servicecatalog/home
-- command: ses
- description: Simple Email Service - Email Sending and Receiving Service
+- id: ses
+ name: Simple Email Service
+ short_name: SES
+ description: Email Sending and Receiving Service
url: https://console.aws.amazon.com/ses/home
-- command: swf
- description: SWF - Workflow Service for Coordinating Application Components
+- id: swf
+ name: Simple Workflow Service
+ short_name: SWF
+ description: Workflow Service for Coordinating Application Components
url: https://console.aws.amazon.com/swf/home
-- command: transfer
- description: Transfer for SFTP - Fully-managed SFTP service for Amazon S3
+- id: transfer
+ name: Transfer for SFTP
+ description: Fully-managed SFTP service for Amazon S3
url: https://console.aws.amazon.com/transfer/home
-- command: shield
- description: WAF & Shield - Protects Against DDoS Attacks and Malicious Web Traffic
- url: https://console.aws.amazon.com/shield/home
-
-- command: singlesignon
- description: Single Sign-On - Manage Single Sign-On (SSO) Access to AWS Accounts and Business Applications
+- id: singlesignon
+ name: Single Sign-On
+ short_name: SSO
+ description: Manage Single Sign-On (SSO) Access to AWS Accounts and Business Applications
url: https://console.aws.amazon.com/singlesignon/home
-- command: snowball
- description: Snowball - Large Scale Data Transport
+- id: snowball
+ name: Snowball
+ description: Large Scale Data Transport
url: https://console.aws.amazon.com/snowball/home
-- command: sns
- description: Simple Notification Service - SNS Pub/Sub, Mobile Push and SMS
+- id: sns
+ name: Simple Notification Service
+ short_name: SNS
+ description: SNS Pub/Sub, Mobile Push and SMS
url: https://console.aws.amazon.com/sns/home
-- command: sqs
- description: Simple Queue Service - SQS Managed Message Queues
+- id: sqs
+ name: Simple Queue Service
+ short_name: SQS
+ description: SQS Managed Message Queues
url: https://console.aws.amazon.com/sqs/home
-- command: stepfunctions
- description: Step Functions - Coordinate Distributed Applications
+- id: stepfunctions
+ name: Step Functions
+ description: Coordinate Distributed Applications
url: https://console.aws.amazon.com/states/home
-- command: storagegateway
- description: Storage Gateway - Hybrid Storage Integration
+- id: storagegateway
+ name: Storage Gateway
+ description: Hybrid Storage Integration
url: https://console.aws.amazon.com/storagegateway/home
-- command: sumerian
- description: Sumerian - Build VR, AR, and 3D applications
+- id: sumerian
+ name: Sumerian
+ description: Build VR, AR, and 3D applications
url: https://console.aws.amazon.com/sumerian/home
-- command: systemsmanager
- description: Systems Manager - a Central Place to View and Manage AWS Resources
+- id: systemsmanager
+ name: Systems Manager
+ description: Gain operational insights and take action on AWS resources
url: https://console.aws.amazon.com/systems-manager/home
-- command: support
- description: Support - Support the success and operational health of your AWS solutions
+- id: support
+ name: Support
+ description: Support the success and operational health of your AWS solutions
url: https://console.aws.amazon.com/support/home
-- command: transcribe
- description: Transcribe - Powerful Speech Recognition
+- id: transcribe
+ name: Transcribe
+ description: Powerful Speech Recognition
url: https://console.aws.amazon.com/transcribe/home
-- command: translate
- description: Translate - Translate Text in Real-time
+- id: translate
+ name: Translate
+ description: Translate Text in Real-time
url: https://console.aws.amazon.com/translate/home
-- command: trustedadvisor
- description: Trusted Advisor - Optimize Performance and Security
+- id: trustedadvisor
+ name: Trusted Advisor
+ description: Optimize Performance and Security
url: https://console.aws.amazon.com/trustedadvisor/home
-- command: vpc
- description: VPC - Isolated Cloud Resources
+- id: vpc
+ name: Virtual Private Cloud
+ description: Isolated Cloud Resources
url: https://console.aws.amazon.com/vpc/home
-- command: waf
- description: WAF & Shield - Protects Against DDoS Attacks and Malicious Web Traffic
+- id: waf
+ name: Web Application Firewall & Shield
+ short_name: WAF
+ description: Protects Against DDoS Attacks and Malicious Web Traffic
url: https://console.aws.amazon.com/wafv2/home
-- command: wellarchitectedtool
- description: Well-Architected Tool - learn best practices, measure, and improve your workloads
+- id: wellarchitectedtool
+ name: Well-Architected Tool
+ description: Learn best practices, measure, and improve your workloads
url: https://console.aws.amazon.com/wellarchitected/home
-- command: worklink
- description: WorkLink - Enable secure mobile access to internal websites and web apps
+- id: worklink
+ name: WorkLink
+ description: Enable secure mobile access to internal websites and web apps
url: https://console.aws.amazon.com/worklink/home
-- command: workmail
- description: WorkMail - Secure Email and Calendaring Service
+- id: workmail
+ name: WorkMail
+ description: Secure Email and Calendaring Service
url: https://console.aws.amazon.com/workmail/home
-- command: workspaces
- description: WorkSpaces - Desktops in the Cloud
+- id: workspaces
+ name: WorkSpaces
+ description: Desktops in the Cloud
url: https://console.aws.amazon.com/workspaces/home
-- command: xray
- description: X-Ray - Analyze and Debug Your Applications
+- id: xray
+ name: X-Ray
+ description: Analyze and Debug Your Applications
url: https://console.aws.amazon.com/xray/home
-- command: appmesh
- description: Easily monitor and control microservices
+- id: appmesh
+ name: App Mesh
+ description: Application-level networking for all your services
url: https://console.aws.amazon.com/appmesh/home
-- command: augmentedai
+- id: augmentedai
+ name: Augmented AI
description: Easy implement human review of machine learning predictions
url: https://console.aws.amazon.com/a2i/home
-- command: bracket
- description: Service for exploring, evaluating, and experimenting with quantum computing
+- id: bracket
+ name: Braket
+ description: Explore and experiment with quantum computing
url: https://pages.awscloud.com/Amazon-Braket-Preview.html
-- command: mcs
- description: Serverless Cassandra-compatible database
- url: https://console.aws.amazon.com/mcs/home
+- id: mcs
+ name: Keyspaces (for Apache Cassandra)
+ description: A scalable, highly available, and managed Apache Cassandra–compatible database service
+ url: https://console.aws.amazon.com/keyspaces/home
-- command: codeguru
+- id: codeguru
+ name: CodeGuru
description: Intelligent recommendations for building and running modern applications
url: https://console.aws.amazon.com/codeguru/home
-- command: computeoptimizer
+- id: computeoptimizer
+ name: Compute Optimizer
description: Recommend optimal AWS Compute resources for your workloads
url: https://console.aws.amazon.com/compute-optimizer/home
-- command: deepracer
+- id: deepracer
+ name: DeepRacer
description: Fully autonomous 1/18th scale race car, driven by machine learning
url: https://console.aws.amazon.com/deepracer/home
-- command: detective
+- id: detective
+ name: Detective
description: Investigate and analyse possible security issues
url: https://console.aws.amazon.com/detective/home
-- command: ec2imagebuilder
- description: https://console.aws.amazon.com/imagebuilder/home
- url: A managed service to automate build, customize and deploy OS images
+- id: ec2imagebuilder
+ name: EC2 Image Builder
+ description: A managed service to automate build, customize and deploy OS images
+ url: https://console.aws.amazon.com/imagebuilder/home
-- command: frauddetector
+- id: frauddetector
+ name: Fraud Detector
description: Detect more online fraud faster with machine learning
url: https://console.aws.amazon.com/frauddetector/home
-- command: kendra
+- id: kendra
+ name: Kendra
description: Highly accurate enterprise search powered by machine learning
url: https://console.aws.amazon.com/kendra/home
-- command: qldb
+- id: qldb
+ name: QLDB
description: Fully managed ledger database
url: https://console.aws.amazon.com/qldb/home
-- command: outpost
+- id: outpost
+ name: Outposts
description: Run AWS Services On Premises
url: https://console.aws.amazon.com/outposts/home
-- command: iq
+- id: iq
+ name: IQ
description: Complete projects faster with help from third-party AWS Certified experts
url: https://iq.aws.amazon.com/
-- command: chatbot
+- id: chatbot
+ name: Chatbot
description: ChatOps for AWS
url: https://console.aws.amazon.com/chatbot/home
-- command: launchwizard
+- id: launchwizard
+ name: Launch Wizard
description: Size, configure, and deploy third-party applications on AWS
url: https://console.aws.amazon.com/launchwizard/home
diff --git a/go.mod b/go.mod
new file mode 100644
index 00000000..dd81d134
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,8 @@
+module github.com/rkoval/alfred-aws-console-services-workflow
+
+go 1.14
+
+require (
+ github.com/deanishe/awgo v0.25.0
+ gopkg.in/yaml.v2 v2.2.2
+)
diff --git a/go.sum b/go.sum
new file mode 100644
index 00000000..baea403f
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,37 @@
+github.com/bmatcuk/doublestar v1.3.1/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/deanishe/awgo v0.25.0 h1:r6/eJFETRB6Zex10XbjixSASGlc2a484b+FgRRAYY9g=
+github.com/deanishe/awgo v0.25.0/go.mod h1:reRZEwXsMuJISYxmdqkn24KrHN+WV/ZQzRBXTtKDPHY=
+github.com/deanishe/go-env v0.4.0 h1:tpu14o16gJGTN/w2gxntwxu2l5Eby30jSrnlgOfjzwk=
+github.com/deanishe/go-env v0.4.0/go.mod h1:RgEcGAqdRnt8ybQteAbv1Ys2lWIRE7TlgON/sbdjuaY=
+github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
+github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+howett.net/plist v0.0.0-20200419221736-3b63eb3a43b5/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0=
diff --git a/info.plist b/info.plist
index 643e8203..0331d247 100644
--- a/info.plist
+++ b/info.plist
@@ -8,11 +8,11 @@
Tools
connections
- D2034C4B-F6D7-4F43-A9CC-2679EACDC081
+ ED4983E7-5D59-45C5-AE7F-5D5570D0B499
destinationuid
- 07488302-09AE-43E3-A8A7-D7C26317547C
+ D1D5721F-0D3B-42C3-95D8-8996D9725E0C
modifiers
0
modifiersubtext
@@ -35,48 +35,66 @@
config
- browser
-
- spaces
-
- url
- {query}
- utf8
-
-
- type
- alfred.workflow.action.openurl
- uid
- 07488302-09AE-43E3-A8A7-D7C26317547C
- version
- 1
-
-
- config
-
+ alfredfiltersresults
+
+ alfredfiltersresultsmatchmode
+ 0
argumenttrimmode
0
argumenttype
0
- fixedorder
-
- items
- [{"title":"alexa","arg":"https://console.aws.amazon.com/a4b/home","subtitle":"Alexa for Business - Empower your organization with voice","imagefile":"alexa.png"},{"title":"amplify","arg":"https://console.aws.amazon.com/amplify/home","subtitle":"Amplify - Develop & deploy cloud-powered mobile and web apps","imagefile":"amplify.png"},{"title":"apigateway","arg":"https://console.aws.amazon.com/apigateway/home","subtitle":"API Gateway - Build, Deploy and Manage APIs","imagefile":"apigateway.png"},{"title":"appstream","arg":"https://console.aws.amazon.com/appstream2/home","subtitle":"AppStream 2.0 - Stream desktop applications securely to any web browser","imagefile":"appstream.png"},{"title":"appsync","arg":"https://console.aws.amazon.com/appsync/home","subtitle":"AppSync - Real-Time Data Sync Using GraphQL for Mobile & Web Apps, Online or Offline","imagefile":"appsync.png"},{"title":"artifact","arg":"https://console.aws.amazon.com/artifact/home","subtitle":"Artifact - AWS Compliance Reports and Agreements","imagefile":"artifact.png"},{"title":"athena","arg":"https://console.aws.amazon.com/athena/home","subtitle":"Athena - Query Data in S3 using SQL","imagefile":"athena.png"},{"title":"awsautoscaling","arg":"https://console.aws.amazon.com/awsautoscaling/home","subtitle":"Auto Scaling - AWS Auto Scaling enables you to quickly scale your entire application on AWS","imagefile":"awsautoscaling.png"},{"title":"backup","arg":"https://console.aws.amazon.com/backup/home","subtitle":"Backup - centrally manage and automate backups across AWS services","imagefile":"backup.png"},{"title":"batch","arg":"https://console.aws.amazon.com/batch/home","subtitle":"Batch - Run Batch Jobs at Any Scale","imagefile":"batch.png"},{"title":"blockchain","arg":"https://console.aws.amazon.com/blockchain/home","subtitle":"Blockchain - Easily create and manage scalable blockchain networks","imagefile":"blockchain.png"},{"title":"billing","arg":"https://console.aws.amazon.com/billing/home","subtitle":"Billing - Access, analyze, and control your AWS costs and usage","imagefile":"billing.png"},{"title":"budgets","arg":"https://console.aws.amazon.com/billing/home#/budgets#/home","subtitle":"Budgets - Set Custom Budgets and Receive Alerts","imagefile":"budgets.png"},{"title":"acm","arg":"https://console.aws.amazon.com/acm/home","subtitle":"Certificate Manager - Provision, Manage, and Deploy SSL/TLS Certificates","imagefile":"acm.png"},{"title":"chime","arg":"https://chime.aws.amazon.com/","subtitle":"Chime - Amazon Chime is a communications service that transforms online meetings","imagefile":"chime.png"},{"title":"cloud9","arg":"https://console.aws.amazon.com/cloud9/home","subtitle":"Cloud9 - A Cloud IDE for Writing, Running, and Debugging Code","imagefile":"cloud9.png"},{"title":"cloudformation","arg":"https://console.aws.amazon.com/cloudformation/home","subtitle":"CloudFormation - Create and Manage Resources with Templates","imagefile":"cloudformation.png"},{"title":"cloudfront","arg":"https://console.aws.amazon.com/cloudfront/home","subtitle":"CloudFront - Global Content Delivery Network","imagefile":"cloudfront.png"},{"title":"cloudhsm","arg":"https://console.aws.amazon.com/cloudhsm/home","subtitle":"CloudHSM - Managed Hardware Security Modules in the Cloud","imagefile":"cloudhsm.png"},{"title":"cloudmap","arg":"https://console.aws.amazon.com/cloudmap/home","subtitle":"Cloud Map - Build a dynamic map of your cloud","imagefile":"cloudmap.png"},{"title":"cloudsearch","arg":"https://console.aws.amazon.com/cloudsearch/home","subtitle":"CloudSearch - Managed Search Service","imagefile":"cloudsearch.png"},{"title":"cloudtrail","arg":"https://console.aws.amazon.com/cloudtrail/home","subtitle":"CloudTrail - Track User Activity and API Usage","imagefile":"cloudtrail.png"},{"title":"cloudwatch","arg":"https://console.aws.amazon.com/cloudwatch/home","subtitle":"CloudWatch - Monitor Resources and Applications","imagefile":"cloudwatch.png"},{"title":"codebuild","arg":"https://console.aws.amazon.com/codebuild/home","subtitle":"CodeBuild - Build and Test Code","imagefile":"codebuild.png"},{"title":"codecommit","arg":"https://console.aws.amazon.com/codecommit/home","subtitle":"CodeCommit - Store Code in Private Git Repositories","imagefile":"codecommit.png"},{"title":"codedeploy","arg":"https://console.aws.amazon.com/codedeploy/home","subtitle":"CodeDeploy - Automate Code Deployments","imagefile":"codedeploy.png"},{"title":"codepipeline","arg":"https://console.aws.amazon.com/codepipeline/home","subtitle":"CodePipeline - Release Software using Continuous Delivery","imagefile":"codepipeline.png"},{"title":"codestar","arg":"https://console.aws.amazon.com/codestar/home","subtitle":"Codestar - Develop, build and deploy applications","imagefile":"codestar.png"},{"title":"cognito","arg":"https://console.aws.amazon.com/cognito/home","subtitle":"Cognito - User Identity and App Data Synchronization","imagefile":"cognito.png"},{"title":"comprehend","arg":"https://console.aws.amazon.com/comprehend/home","subtitle":"Comprehend - Analyze Unstructured Text","imagefile":"comprehend.png"},{"title":"config","arg":"https://console.aws.amazon.com/config/home","subtitle":"Config - Track Resource Inventory and Changes","imagefile":"config.png"},{"title":"connect","arg":"https://console.aws.amazon.com/connect/home","subtitle":"Connect - managed contact center that enables engagement at any scale","imagefile":"connect.png"},{"title":"controltower","arg":"https://console.aws.amazon.com/controltower/home","subtitle":"Control Tower - set up and govern your multi-account AWS environment","imagefile":"controltower.png"},{"title":"costreports","arg":"https://console.aws.amazon.com/cost-reports/home","subtitle":"Cost Explorer - Visualize and Explore Your AWS Costs and Usage","imagefile":"costreports.png"},{"title":"datapipeline","arg":"https://console.aws.amazon.com/datapipeline/home","subtitle":"Data Pipeline - Orchestration for Data-Driven Workflows","imagefile":"datapipeline.png"},{"title":"datasync","arg":"https://console.aws.amazon.com/datasync/home","subtitle":"DataSync - DataSync simplifies, automates, and accelerates moving data","imagefile":"datasync.png"},{"title":"deeplens","arg":"https://console.aws.amazon.com/deeplens/home","subtitle":"DeepLens - Deep Learning Enabled Video Camera","imagefile":"deeplens.png"},{"title":"devicefarm","arg":"https://console.aws.amazon.com/devicefarm/home","subtitle":"Device Farm - Test Android, iOS, and Web Apps on Real Devices in the Cloud","imagefile":"devicefarm.png"},{"title":"directconnect","arg":"https://console.aws.amazon.com/directconnect/home","subtitle":"Direct Connect - Dedicated Network Connection to AWS","imagefile":"directconnect.png"},{"title":"directoryservice","arg":"https://console.aws.amazon.com/directoryservice/home","subtitle":"Directory Service - Host and Manage Active Directory","imagefile":"directoryservice.png"},{"title":"discovery","arg":"https://console.aws.amazon.com/discovery/home","subtitle":"Application Discovery Service - Discover on-premises application inventory and dependencies","imagefile":"discovery.png"},{"title":"dms","arg":"https://console.aws.amazon.com/dms/home","subtitle":"DMS - Managed Database Migration Service","imagefile":"dms.png"},{"title":"documentdb","arg":"https://console.aws.amazon.com/documentdb/home","subtitle":"DocumentDB - Fully-managed MongoDB-compatible database service","imagefile":"documentdb.png"},{"title":"dynamodb","arg":"https://console.aws.amazon.com/dynamodb/home","subtitle":"DynamoDB - Managed NoSQL Database","imagefile":"dynamodb.png"},{"title":"ec2","arg":"https://console.aws.amazon.com/ec2/home","subtitle":"EC2 - Virtual Servers in the Cloud","imagefile":"ec2.png"},{"title":"ecr","arg":"https://console.aws.amazon.com/ecr/home","subtitle":"ECR - Fully-managed Docker container registry","imagefile":"ecr.png"},{"title":"ecs","arg":"https://console.aws.amazon.com/ecs/home","subtitle":"ECS - Run and Manage Docker Containers","imagefile":"ecs.png"},{"title":"efs","arg":"https://console.aws.amazon.com/efs/home","subtitle":"EFS - Managed File Storage for EC2","imagefile":"efs.png"},{"title":"eks","arg":"https://console.aws.amazon.com/eks/home","subtitle":"EKS - Managed Kubernetes on AWS","imagefile":"eks.png"},{"title":"elasticache","arg":"https://console.aws.amazon.com/elasticache/home","subtitle":"ElastiCache - In-Memory Cache","imagefile":"elasticache.png"},{"title":"elasticbeanstalk","arg":"https://console.aws.amazon.com/elasticbeanstalk/home","subtitle":"Elastic Beanstalk - Run and Manage Web Apps","imagefile":"elasticbeanstalk.png"},{"title":"ess","arg":"https://console.aws.amazon.com/es/home","subtitle":"Elasticsearch Service - Run and Scale Elasticsearch Clusters","imagefile":"ess.png"},{"title":"elastictranscoder","arg":"https://console.aws.amazon.com/elastictranscoder/home","subtitle":"Elastic Transcoder - Easy-to-Use Scalable Media Transcoding","imagefile":"elastictranscoder.png"},{"title":"emr","arg":"https://console.aws.amazon.com/elasticmapreduce/home","subtitle":"EMR - Managed Hadoop Framework","imagefile":"emr.png"},{"title":"eventbridge","arg":"https://console.aws.amazon.com/events/home","subtitle":"EventBridge - Serverless event bus that connects application data from your own apps, SaaS, and AWS services","imagefile":"eventbridge.png"},{"title":"forecast","arg":"https://console.aws.amazon.com/forecast/home","subtitle":"Forecast - fully-managed service for accurate time-series forecasting","imagefile":"forecast.png"},{"title":"freertos","arg":"https://console.aws.amazon.com/freertos/home","subtitle":"FreeRTOS - IoT Operating System for Microcontrollers","imagefile":"freertos.png"},{"title":"fsx","arg":"https://console.aws.amazon.com/fsx/home","subtitle":"FSx - Fully managed third-party file systems optimized for a variety of workloads","imagefile":"fsx.png"},{"title":"gamelift","arg":"https://console.aws.amazon.com/gamelift/home","subtitle":"GameLift - Deploy and Scale Session-based Multiplayer Games","imagefile":"gamelift.png"},{"title":"glacier","arg":"https://console.aws.amazon.com/glacier/home","subtitle":"S3 Glacier - Archive Storage in the Cloud","imagefile":"glacier.png"},{"title":"globalaccelerator","arg":"https://us-west-2.console.aws.amazon.com/ec2/GlobalAccelerator/home?region=us-west-2","subtitle":"Global Accelerator - Improve your application’s availability and performance using the AWS Global Network","imagefile":"globalaccelerator.png"},{"title":"glue","arg":"https://console.aws.amazon.com/glue/home","subtitle":"Glue - fully managed ETL (extract, transform, and load) service","imagefile":"glue.png"},{"title":"groundstation","arg":"https://console.aws.amazon.com/groundstation/home","subtitle":"Ground Station - Communicate with satellites","imagefile":"groundstation.png"},{"title":"guardduty","arg":"https://console.aws.amazon.com/guardduty/home","subtitle":"GuardDuty - Intelligent Threat Detection to Protect Your AWS Accounts and Workloads","imagefile":"guardduty.png"},{"title":"iam","arg":"https://console.aws.amazon.com/iam/home","subtitle":"IAM - Manage User Access and Encryption Keys","imagefile":"iam.png"},{"title":"inspector","arg":"https://console.aws.amazon.com/inspector/home","subtitle":"Inspector - Analyze Application Security","imagefile":"inspector.png"},{"title":"iot1click","arg":"https://console.aws.amazon.com/iot1click/home","subtitle":"IoT 1-Click - Trigger AWS Lambda functions from simple devices","imagefile":"iot1click.png"},{"title":"iotanalytics","arg":"https://console.aws.amazon.com/iotanalytics/home","subtitle":"IoT Analytics - Collect, preprocess, store, analyze and visualize data of IoT devices","imagefile":"iotanalytics.png"},{"title":"iotcore","arg":"https://console.aws.amazon.com/iotcore/home","subtitle":"IoT Core - Connect Devices to the Cloud","imagefile":"iotcore.png"},{"title":"iotdevicedefender","arg":"https://console.aws.amazon.com/devicedefender/home","subtitle":"IoT Device Defender - Connect Devices to the Cloud","imagefile":"iotdevicedefender.png"},{"title":"iotdevicemanagement","arg":"https://console.aws.amazon.com/iotdm/home","subtitle":"IoT Device Management - Securely Manage Fleets as Small as One Device, or as Broad as Millions of Devices","imagefile":"iotdevicemanagement.png"},{"title":"iotevents","arg":"https://console.aws.amazon.com/iotevents/home","subtitle":"IoT Events - Monitor device fleets for changes and trigger alerts to respond","imagefile":"iotevents.png"},{"title":"iotgreengrass","arg":"https://console.aws.amazon.com/iotgreengrass/home","subtitle":"IoT Greengrass - Deploy and run code on your devices","imagefile":"iotgreengrass.png"},{"title":"iotsitewise","arg":"https://console.aws.amazon.com/iotsitewise/home","subtitle":"IoT SiteWise - Data driven decisions in Industrial operations","imagefile":"iotsitewise.png"},{"title":"iotthingsgraph","arg":"https://console.aws.amazon.com/thingsgraph/home","subtitle":"IoT Things Graph - Easily connect devices and web services to build IoT applications","imagefile":"iotthingsgraph.png"},{"title":"msk","arg":"https://console.aws.amazon.com/msk/home","subtitle":"MSK - Fully managed, highly available, and secure service for Apache Kafka","imagefile":"msk.png"},{"title":"kms","arg":"https://console.aws.amazon.com/kms/home","subtitle":"Key Management Service - Securely Generate and Manage AWS Encryption Keys","imagefile":"kms.png"},{"title":"kinesis","arg":"https://console.aws.amazon.com/kinesis/home","subtitle":"Kinesis - Work with Real-Time Streaming Data","imagefile":"kinesis.png"},{"title":"lambda","arg":"https://console.aws.amazon.com/lambda/home","subtitle":"Lambda - Run Code without Thinking about Servers","imagefile":"lambda.png"},{"title":"lex","arg":"https://console.aws.amazon.com/lex/home","subtitle":"Lex - Build Voice and Text Chatbots","imagefile":"lex.png"},{"title":"licensemanager","arg":"https://console.aws.amazon.com/license-manager/home","subtitle":"License Manager - Set rules to manage, discover, and report third-party license usage proactively","imagefile":"licensemanager.png"},{"title":"lightsail","arg":"https://lightsail.aws.amazon.com/ls/webapp/home","subtitle":"Lightsail - Launch and Manage Virtual Private Servers","imagefile":"lightsail.png"},{"title":"macie","arg":"https://us-east-1.redirection.macie.aws.amazon.com/","subtitle":"Macie - Amazon Macie classifies and secures your business-critical content.","imagefile":"macie.png"},{"title":"managedservices","arg":"https://console.aws.amazon.com/managedservices/home","subtitle":"Managed Services - IT operations management for AWS","imagefile":"managedservices.png"},{"title":"marketplace","arg":"https://console.aws.amazon.com/marketplace/home","subtitle":"Marketplace Subscriptions - Digital catalog where you can find, buy, and deploy software","imagefile":"marketplace.png"},{"title":"mediaconnect","arg":"https://console.aws.amazon.com/mediaconnect/home","subtitle":"MediaConnect - Reliable, secure, and flexible transport for live video","imagefile":"mediaconnect.png"},{"title":"mediaconvert","arg":"https://console.aws.amazon.com/mediaconvert/home","subtitle":"MediaConvert - Convert file-based content for broadcast and multiscreen delivery","imagefile":"mediaconvert.png"},{"title":"medialive","arg":"https://console.aws.amazon.com/medialive/home","subtitle":"MediaLive - Convert video inputs into live outputs for broadcast and streaming delivery","imagefile":"medialive.png"},{"title":"mediapackage","arg":"https://console.aws.amazon.com/mediapackage/home","subtitle":"MediaPackage - Deliver video to many devices using just-in-time format conversion","imagefile":"mediapackage.png"},{"title":"mediastore","arg":"https://console.aws.amazon.com/mediastore/home","subtitle":"MediaStore - Store and deliver video assets for live or on-demand media workflows","imagefile":"mediastore.png"},{"title":"mediatailor","arg":"https://console.aws.amazon.com/mediatailor/home","subtitle":"MediaTailor - Personalize and monetize multiscreen content with server-side ad insertion","imagefile":"mediatailor.png"},{"title":"migrationhub","arg":"https://console.aws.amazon.com/migrationhub/home","subtitle":"Migration Hub - Simplify and accelerate the migration of your data centers to AWS","imagefile":"migrationhub.png"},{"title":"mobilehub","arg":"https://console.aws.amazon.com/mobilehub/home","subtitle":"Mobile Hub - Build, Test, and Monitor Mobile Apps","imagefile":"mobilehub.png"},{"title":"mq","arg":"https://console.aws.amazon.com/amazon-mq/home","subtitle":"MQ - Managed message broker service for Apache ActiveMQ","imagefile":"mq.png"},{"title":"neptune","arg":"https://console.aws.amazon.com/neptune/home","subtitle":"Neptune - Fast, reliable graph database built for the cloud","imagefile":"neptune.png"},{"title":"opsworks","arg":"https://console.aws.amazon.com/opsworks/home","subtitle":"OpsWorks - Configuration Management with Chef and Puppet","imagefile":"opsworks.png"},{"title":"organizations","arg":"https://console.aws.amazon.com/organizations/home","subtitle":"Organizations - Policy-based management for multiple AWS accounts.","imagefile":"organizations.png"},{"title":"personalize","arg":"https://console.aws.amazon.com/personalize/home","subtitle":"Personalize - easily add real-time recommendations to your apps","imagefile":"personalize.png"},{"title":"pinpoint","arg":"https://console.aws.amazon.com/pinpoint/home","subtitle":"Pinpoint - Engage Users via Email, SMS, Push & Analytics","imagefile":"pinpoint.png"},{"title":"polly","arg":"https://console.aws.amazon.com/polly/home","subtitle":"Polly - Turn Text into Lifelike Speech","imagefile":"polly.png"},{"title":"quicksight","arg":"https://quicksight.aws.amazon.com/","subtitle":"QuickSight - Fast, easy to use business analytics","imagefile":"quicksight.png"},{"title":"rds","arg":"https://console.aws.amazon.com/rds/home","subtitle":"RDS - Managed Relational Database Service","imagefile":"rds.png"},{"title":"redshift","arg":"https://console.aws.amazon.com/redshift/home","subtitle":"Redshift - Fast, Simple, Cost-Effective Data Warehousing","imagefile":"redshift.png"},{"title":"rekognition","arg":"https://console.aws.amazon.com/rekognition/home","subtitle":"Rekognition - Search and Analyze Images","imagefile":"rekognition.png"},{"title":"ram","arg":"https://console.aws.amazon.com/ram/home","subtitle":"Resource Access Manager - Share AWS resources with other accounts or AWS Organizations","imagefile":"ram.png"},{"title":"robomaker","arg":"https://console.aws.amazon.com/robomaker/home","subtitle":"RoboMaker - Develop, test, and deploy intelligent robotics applications","imagefile":"robomaker.png"},{"title":"route53","arg":"https://console.aws.amazon.com/route53/home","subtitle":"Route 53 - Scalable DNS and Domain Name Registration","imagefile":"route53.png"},{"title":"s3","arg":"https://console.aws.amazon.com/s3/home","subtitle":"S3 - Scalable Storage in the Cloud","imagefile":"s3.png"},{"title":"sagemaker","arg":"https://console.aws.amazon.com/sagemaker/home","subtitle":"SageMaker - Build, Train, and Deploy Machine Learning Models","imagefile":"sagemaker.png"},{"title":"secretsmanager","arg":"https://console.aws.amazon.com/secretsmanager/home","subtitle":"Secrets Manager - Easily rotate, manage, and retrieve secrets throughout their lifecycle","imagefile":"secretsmanager.png"},{"title":"securityhub","arg":"https://console.aws.amazon.com/securityhub/home","subtitle":"Security Hub - AWS’s security and compliance center","imagefile":"securityhub.png"},{"title":"serverlessrepo","arg":"https://console.aws.amazon.com/serverlessrepo/home","subtitle":"Serverless Application Repository - Assemble, deploy, and share serverless applications within teams or publicly","imagefile":"serverlessrepo.png"},{"title":"servermigrationservice","arg":"https://console.aws.amazon.com/servermigration/home","subtitle":"Server Migration Service - Migrate on-premises servers to AWS","imagefile":"servermigrationservice.png"},{"title":"servicecatalog","arg":"https://console.aws.amazon.com/servicecatalog/home","subtitle":"Service Catalog - allows organizations to manage approved catalogs of IT resources and make them available to employees via a personalized portal.","imagefile":"servicecatalog.png"},{"title":"ses","arg":"https://console.aws.amazon.com/ses/home","subtitle":"Simple Email Service - Email Sending and Receiving Service","imagefile":"ses.png"},{"title":"swf","arg":"https://console.aws.amazon.com/swf/home","subtitle":"SWF - Workflow Service for Coordinating Application Components","imagefile":"swf.png"},{"title":"transfer","arg":"https://console.aws.amazon.com/transfer/home","subtitle":"Transfer for SFTP - Fully-managed SFTP service for Amazon S3","imagefile":"transfer.png"},{"title":"shield","arg":"https://console.aws.amazon.com/shield/home","subtitle":"WAF & Shield - Protects Against DDoS Attacks and Malicious Web Traffic","imagefile":"shield.png"},{"title":"singlesignon","arg":"https://console.aws.amazon.com/singlesignon/home","subtitle":"Single Sign-On - Manage Single Sign-On (SSO) Access to AWS Accounts and Business Applications","imagefile":"singlesignon.png"},{"title":"snowball","arg":"https://console.aws.amazon.com/snowball/home","subtitle":"Snowball - Large Scale Data Transport","imagefile":"snowball.png"},{"title":"sns","arg":"https://console.aws.amazon.com/sns/home","subtitle":"Simple Notification Service - SNS Pub/Sub, Mobile Push and SMS","imagefile":"sns.png"},{"title":"sqs","arg":"https://console.aws.amazon.com/sqs/home","subtitle":"Simple Queue Service - SQS Managed Message Queues","imagefile":"sqs.png"},{"title":"stepfunctions","arg":"https://console.aws.amazon.com/states/home","subtitle":"Step Functions - Coordinate Distributed Applications","imagefile":"stepfunctions.png"},{"title":"storagegateway","arg":"https://console.aws.amazon.com/storagegateway/home","subtitle":"Storage Gateway - Hybrid Storage Integration","imagefile":"storagegateway.png"},{"title":"sumerian","arg":"https://console.aws.amazon.com/sumerian/home","subtitle":"Sumerian - Build VR, AR, and 3D applications","imagefile":"sumerian.png"},{"title":"systemsmanager","arg":"https://console.aws.amazon.com/systems-manager/home","subtitle":"Systems Manager - a Central Place to View and Manage AWS Resources","imagefile":"systemsmanager.png"},{"title":"support","arg":"https://console.aws.amazon.com/support/home","subtitle":"Support - Support the success and operational health of your AWS solutions","imagefile":"support.png"},{"title":"transcribe","arg":"https://console.aws.amazon.com/transcribe/home","subtitle":"Transcribe - Powerful Speech Recognition","imagefile":"transcribe.png"},{"title":"translate","arg":"https://console.aws.amazon.com/translate/home","subtitle":"Translate - Translate Text in Real-time","imagefile":"translate.png"},{"title":"trustedadvisor","arg":"https://console.aws.amazon.com/trustedadvisor/home","subtitle":"Trusted Advisor - Optimize Performance and Security","imagefile":"trustedadvisor.png"},{"title":"vpc","arg":"https://console.aws.amazon.com/vpc/home","subtitle":"VPC - Isolated Cloud Resources","imagefile":"vpc.png"},{"title":"waf","arg":"https://console.aws.amazon.com/wafv2/home","subtitle":"WAF & Shield - Protects Against DDoS Attacks and Malicious Web Traffic","imagefile":"waf.png"},{"title":"wellarchitectedtool","arg":"https://console.aws.amazon.com/wellarchitected/home","subtitle":"Well-Architected Tool - learn best practices, measure, and improve your workloads","imagefile":"wellarchitectedtool.png"},{"title":"worklink","arg":"https://console.aws.amazon.com/worklink/home","subtitle":"WorkLink - Enable secure mobile access to internal websites and web apps","imagefile":"worklink.png"},{"title":"workmail","arg":"https://console.aws.amazon.com/workmail/home","subtitle":"WorkMail - Secure Email and Calendaring Service","imagefile":"workmail.png"},{"title":"workspaces","arg":"https://console.aws.amazon.com/workspaces/home","subtitle":"WorkSpaces - Desktops in the Cloud","imagefile":"workspaces.png"},{"title":"xray","arg":"https://console.aws.amazon.com/xray/home","subtitle":"X-Ray - Analyze and Debug Your Applications","imagefile":"xray.png"},{"title":"appmesh","arg":"https://console.aws.amazon.com/appmesh/home","subtitle":"Easily monitor and control microservices","imagefile":"appmesh.png"},{"title":"augmentedai","arg":"https://console.aws.amazon.com/a2i/home","subtitle":"Easy implement human review of machine learning predictions","imagefile":"augmentedai.png"},{"title":"bracket","arg":"https://pages.awscloud.com/Amazon-Braket-Preview.html","subtitle":"Service for exploring, evaluating, and experimenting with quantum computing","imagefile":"bracket.png"},{"title":"mcs","arg":"https://console.aws.amazon.com/mcs/home","subtitle":"Serverless Cassandra-compatible database","imagefile":"mcs.png"},{"title":"codeguru","arg":"https://console.aws.amazon.com/codeguru/home","subtitle":"Intelligent recommendations for building and running modern applications","imagefile":"codeguru.png"},{"title":"computeoptimizer","arg":"https://console.aws.amazon.com/compute-optimizer/home","subtitle":"Recommend optimal AWS Compute resources for your workloads","imagefile":"computeoptimizer.png"},{"title":"deepracer","arg":"https://console.aws.amazon.com/deepracer/home","subtitle":"Fully autonomous 1/18th scale race car, driven by machine learning","imagefile":"deepracer.png"},{"title":"detective","arg":"https://console.aws.amazon.com/detective/home","subtitle":"Investigate and analyse possible security issues","imagefile":"detective.png"},{"title":"ec2imagebuilder","arg":"A managed service to automate build, customize and deploy OS images","subtitle":"https://console.aws.amazon.com/imagebuilder/home","imagefile":"ec2imagebuilder.png"},{"title":"frauddetector","arg":"https://console.aws.amazon.com/frauddetector/home","subtitle":"Detect more online fraud faster with machine learning","imagefile":"frauddetector.png"},{"title":"kendra","arg":"https://console.aws.amazon.com/kendra/home","subtitle":"Highly accurate enterprise search powered by machine learning","imagefile":"kendra.png"},{"title":"qldb","arg":"https://console.aws.amazon.com/qldb/home","subtitle":"Fully managed ledger database","imagefile":"qldb.png"},{"title":"outpost","arg":"https://console.aws.amazon.com/outposts/home","subtitle":"Run AWS Services On Premises","imagefile":"outpost.png"},{"title":"iq","arg":"https://iq.aws.amazon.com/","subtitle":"Complete projects faster with help from third-party AWS Certified experts","imagefile":"iq.png"},{"title":"chatbot","arg":"https://console.aws.amazon.com/chatbot/home","subtitle":"ChatOps for AWS","imagefile":"chatbot.png"},{"title":"launchwizard","arg":"https://console.aws.amazon.com/launchwizard/home","subtitle":"Size, configure, and deploy third-party applications on AWS","imagefile":"launchwizard.png"}]
+ escaping
+ 102
keyword
aws
+ queuedelaycustom
+ 3
+ queuedelayimmediatelyinitially
+
+ queuedelaymode
+ 0
+ queuemode
+ 1
runningsubtext
+ script
+ ./alfred-aws-console-services-workflow "$1"
+ scriptargtype
+ 1
+ scriptfile
+
subtext
e.g., cloudformation, ec2, s3 ...
title
Search for an AWS Service ...
+ type
+ 0
withspace
type
- alfred.workflow.input.listfilter
+ alfred.workflow.input.scriptfilter
+ uid
+ ED4983E7-5D59-45C5-AE7F-5D5570D0B499
+ version
+ 2
+
+
+ config
+
+ browser
+
+ spaces
+
+ url
+ {query}
+ utf8
+
+
+ type
+ alfred.workflow.action.openurl
uid
- D2034C4B-F6D7-4F43-A9CC-2679EACDC081
+ D1D5721F-0D3B-42C3-95D8-8996D9725E0C
version
1
@@ -115,25 +133,23 @@ npm install
To add entries to the Alfred Workflow, modify [the .yml config file](src/console-services.yml) and then run [this script](src/generate_items.js) from its directory. It will parse the .yml file and add elements in-place to the info.plist file, which Alfred reads.
uidata
- 07488302-09AE-43E3-A8A7-D7C26317547C
+ D1D5721F-0D3B-42C3-95D8-8996D9725E0C
xpos
- 250
+ 230
ypos
- 50
+ 40
- D2034C4B-F6D7-4F43-A9CC-2679EACDC081
+ ED4983E7-5D59-45C5-AE7F-5D5570D0B499
xpos
- 80
- ypos
50
+ ypos
+ 40
- variablesdontexport
-
version
- 2.8
+ 3.x
webaddress
https://ryankoval.com
diff --git a/main.go b/main.go
new file mode 100644
index 00000000..aed3b500
--- /dev/null
+++ b/main.go
@@ -0,0 +1,90 @@
+package main
+
+import (
+ "io/ioutil"
+ "log"
+ "strings"
+
+ aw "github.com/deanishe/awgo"
+ "gopkg.in/yaml.v2"
+)
+
+var wf *aw.Workflow
+
+func init() {
+ wf = aw.New()
+}
+
+type AwsService struct {
+ Id string `yaml:"id"`
+ Name string `yaml:"name"`
+ ShortName string `yaml:"short_name"`
+ Description string `yaml:"description"`
+ Url string `yaml:"url"`
+ ExtraSearchTerms []string `yaml:"extra_search_terms"`
+}
+
+func parseYaml() []AwsService {
+ awsServices := []AwsService{}
+ yamlFile, err := ioutil.ReadFile("console-services.yml")
+ if err != nil {
+ log.Fatal(err)
+ }
+ err = yaml.Unmarshal(yamlFile, &awsServices)
+ if err != nil {
+ log.Fatal(err)
+ }
+ return awsServices
+}
+
+func run() {
+ var query string
+ if args := wf.Args(); len(args) > 0 {
+ query = args[0]
+ }
+
+ awsServices := parseYaml()
+ for _, awsService := range awsServices {
+ var title string
+ var match string
+ if awsService.ShortName != "" {
+ title = awsService.ShortName + " - " + awsService.Name
+ match = awsService.ShortName
+ } else {
+ title = awsService.Name
+ match = title
+ }
+
+ if len(awsService.ExtraSearchTerms) > 0 {
+ match += " " + strings.Join(awsService.ExtraSearchTerms, " ")
+ }
+
+ item := wf.NewItem(title).
+ UID(awsService.Id).
+ Arg(awsService.Url).
+ Subtitle(awsService.Description).
+ Match(match).
+ Valid(true)
+
+ icon := &aw.Icon{Value: "images/" + awsService.Id + ".png"}
+ item.Icon(icon)
+ }
+
+ if query != "" {
+ res := wf.Filter(query)
+
+ log.Printf("%d results match %q", len(res), query)
+
+ for i, r := range res {
+ log.Printf("%02d. score=%0.1f sortkey=%s", i+1, r.Score, wf.Feedback.Keywords(i))
+ }
+ }
+
+ wf.WarnEmpty("No matching services found", "Try a different query?")
+
+ wf.SendFeedback()
+}
+
+func main() {
+ wf.Run(run)
+}
diff --git a/release_tools/package.sh b/release_tools/package.sh
index e00a0ecb..200fa003 100755
--- a/release_tools/package.sh
+++ b/release_tools/package.sh
@@ -7,11 +7,8 @@ echo -e "Current version: $CURRENT_VERSION\nInput new version: "
read -r VERSION
VERSION="v${VERSION//v/}"
-generate_info_plist() {
- cd src
- npm install
- ./generate_items.js
- cd -
+install_package() {
+ go build
}
bump_version_and_tag() {
@@ -27,7 +24,7 @@ package_release() {
local tmpdir
tmpdir=$(mktemp -d)
echo "Using tmp dir $tmpdir to stage release files ..."
- cp -R "List Filter Images" icon.png info.plist LICENSE README.md "$tmpdir/"
+ cp -R images alfred-aws-console-services-workflow console-services.yml icon.png info.plist LICENSE README.md "$tmpdir/"
ditto -ck "$tmpdir" "AWS Console Services ${VERSION}.alfredworkflow"
}
@@ -36,7 +33,7 @@ open_github() {
open "https://github.com/rkoval/alfred-aws-console-services-workflow/releases/new?tag=${VERSION}&title=${VERSION}&body=Fill out the release"
}
-generate_info_plist
+install_package
bump_version_and_tag
package_release
open_github
\ No newline at end of file
diff --git a/src/generate_items.js b/src/generate_items.js
deleted file mode 100755
index 808ff696..00000000
--- a/src/generate_items.js
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env node
-
-YAML = require('yamljs');
-const consoleServices = YAML.load('console-services.yml');
-const listItems = generate(consoleServices);
-injectIntoXml(listItems);
-
-function generate(consoleServices) {
- return consoleServices.map(({command, description, icon, url}) => {
- console.log(command);
-
- const consoleService = {
- title: command,
- arg: url,
- subtitle: description,
- imagefile: icon || `${command}.png`,
- };
-
- return consoleService;
- });
-}
-
-function injectIntoXml(alfredProjects) {
- const plist = require('plist');
- const fs = require('fs-extra');
- const path = require('path');
-
- fs.copySync(path.resolve(`${__dirname}/../info.plist`), `${__dirname}/../info.plist.generatebackup`);
- const file = fs.readFileSync(`${__dirname}/../info.plist.generatebackup`, 'utf-8');
- const plistJson = plist.parse(file);
- plistJson.objects[1].config.items = JSON.stringify(alfredProjects);
- fixedPlistJson = fixPlistLibraryNullKey(plistJson);
- const updatedPlist = plist.build(fixedPlistJson)
- fs.writeFileSync(`${__dirname}/../info.plist`, updatedPlist);
-}
-
-function fixPlistLibraryNullKey(plistJson) {
- const traverse = require('traverse');
- traverse(plistJson).forEach(function(node) {
- if (node === null) {
- this.update('');
- }
- })
- return plistJson;
-}
diff --git a/src/package-lock.json b/src/package-lock.json
deleted file mode 100644
index 3cda8e25..00000000
--- a/src/package-lock.json
+++ /dev/null
@@ -1,168 +0,0 @@
-{
- "name": "aws-console-services",
- "version": "0.0.1",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
- },
- "base64-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz",
- "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE="
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "fs-extra": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
- "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
- "requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^2.1.0",
- "klaw": "^1.0.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
- },
- "glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.1.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
- "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
- },
- "jsonfile": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
- "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
- "requires": {
- "graceful-fs": "^4.1.6"
- }
- },
- "klaw": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
- "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
- "requires": {
- "graceful-fs": "^4.1.9"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
- },
- "plist": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz",
- "integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=",
- "requires": {
- "base64-js": "1.2.0",
- "xmlbuilder": "8.2.2",
- "xmldom": "0.1.x"
- }
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
- },
- "traverse": {
- "version": "0.6.6",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
- "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc="
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "xmlbuilder": {
- "version": "8.2.2",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz",
- "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M="
- },
- "xmldom": {
- "version": "0.1.27",
- "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
- "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk="
- },
- "yamljs": {
- "version": "0.2.10",
- "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.2.10.tgz",
- "integrity": "sha1-SBzHwlynOvWfWR8MluPOVsdXpA8=",
- "requires": {
- "argparse": "^1.0.7",
- "glob": "^7.0.5"
- }
- }
- }
-}
diff --git a/src/package.json b/src/package.json
deleted file mode 100644
index 64efab73..00000000
--- a/src/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "aws-console-services",
- "version": "0.0.1",
- "description": "Very simple workflow to quickly open up AWS Console Services in your browser",
- "main": "generate_items.js",
- "scripts": {
- "generate": "./generate_items.js"
- },
- "author": "Ryan Koval ",
- "license": "MIT",
- "dependencies": {
- "fs-extra": "^1.0.0",
- "plist": "^2.1.0",
- "traverse": "^0.6.6",
- "yamljs": "^0.2.10"
- }
-}
diff --git a/src/update-script.js b/src/update-script.js
deleted file mode 100644
index 52af8e8a..00000000
--- a/src/update-script.js
+++ /dev/null
@@ -1,26 +0,0 @@
-// this is a hacked-together script that will pluck out service links and their descriptions to JSON
-// for later adding to the csv
-//
-// to use it, run it on the AWS homepage dashboard
-var texts = $('.servicesContainer').find('a').find('.serviceName, .serviceCaption').map((a, b) => {
- return {
- text: b.textContent,
- href: b.parentElement.href
- }
-});
-var outputs = []
-var string;
-for (var i = 0; i < texts.length; i++) {
- var obj = texts[i];
- if (i % 2 === 0) {
- string = obj.text;
- } else {
- var {text, href} = obj;
- var regex = /\.com\/(.*?)\//g;
- var urlKey = regex.exec(href)[1];
- var formattedHref = `https://console.aws.amazon.com/${urlKey}/home`
- var output = `"${urlKey}","${string} - ${text}","${formattedHref}"`;
- outputs.push(output);
- }
-}
-JSON.stringify(outputs)
diff --git a/test.sh b/test.sh
new file mode 100755
index 00000000..69716f79
--- /dev/null
+++ b/test.sh
@@ -0,0 +1,9 @@
+#!/usr/bin/env bash
+
+root=".alfred"
+export alfred_version=
+export alfred_workflow_bundleid="com.ryankoval.awsconsoleservices"
+export alfred_workflow_data="${root}/data"
+export alfred_workflow_cache="${root}/cache"
+
+go run main.go "$1"
\ No newline at end of file