{"id":50965674,"url":"https://github.com/harehare/aws.mq","last_synced_at":"2026-06-18T20:01:57.709Z","repository":{"id":365121581,"uuid":"1269290884","full_name":"harehare/aws.mq","owner":"harehare","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-15T23:56:35.000Z","size":71,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-16T01:24:47.912Z","etag":null,"topics":["aws","markdown","mq"],"latest_commit_sha":null,"homepage":"https://mqlang.org","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/harehare.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-14T14:31:54.000Z","updated_at":"2026-06-15T23:56:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/harehare/aws.mq","commit_stats":null,"previous_names":["harehare/aws.mq"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/harehare/aws.mq","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harehare%2Faws.mq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harehare%2Faws.mq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harehare%2Faws.mq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harehare%2Faws.mq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/harehare","download_url":"https://codeload.github.com/harehare/aws.mq/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harehare%2Faws.mq/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34505423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","markdown","mq"],"created_at":"2026-06-18T20:01:54.706Z","updated_at":"2026-06-18T20:01:57.701Z","avatar_url":"https://github.com/harehare.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eaws.mq\u003c/h1\u003e\n\n\u003e [!WARNING]\n\u003e This project is currently under active development. APIs and features may change without notice.\n\nAn AWS API response processor implemented as an [mq](https://github.com/harehare/mq) module.\n\nProcess AWS CLI / SDK JSON responses with filtering, extraction, and Markdown table rendering — covering the most commonly used services.\n\n## Features\n\n- **EC2** — instances, security groups, VPCs, subnets, route tables, internet gateways, VPC endpoints (filter by state, type, VPC)\n- **S3** — buckets, objects (filter by storage class, total size)\n- **IAM** — users, roles, policies, groups, instance profiles, access keys, MFA devices\n- **Lambda** — functions (filter by runtime, state, total memory), event source mappings, layers\n- **RDS** — DB instances (filter by engine, status)\n- **CloudFormation** — stacks, outputs, parameters\n- **SQS** — queue URLs, queue names, message counts\n- **SNS** — topics, subscriptions (filter by protocol or topic)\n- **ECS** — clusters, services, tasks (filter by status), task definitions, capacity providers\n- **DynamoDB** — table names, table details, backups (filter by table / status)\n- **CloudWatch** — metric alarms (filter by state: OK / ALARM / INSUFFICIENT_DATA), dashboards\n- **SSM** — parameters (filter by type: String / SecureString / StringList)\n- **Secrets Manager** — secrets\n- **ELBv2** — load balancers, target groups (filter by type / state)\n- **Route53** — hosted zones (public / private), resource record sets (filter by type), health checks\n- **CloudFront** — distributions (filter by enabled/deployed status)\n- **ACM** — SSL/TLS certificates (filter by issued status)\n- **KMS** — keys, aliases (filter customer-managed aliases)\n- **CloudTrail** — trails (filter by multi-region / log validation)\n- **SES** — verified identities, send statistics (delivery/bounce/complaint totals)\n- **Redshift** — clusters (filter by status)\n- **CodePipeline** — pipelines, stage states (filter failed/in-progress)\n- **CodeBuild** — build projects, builds (filter by status)\n- **WAF** — Web ACLs (WAFv2)\n- **Glue** — ETL jobs, crawlers (filter by state)\n- **EKS** — clusters, nodegroups (cluster info, nodegroup scaling config)\n- **Kinesis** — streams, stream details (shard count, retention period)\n- **ElastiCache** — cache clusters, replication groups (filter by engine / status)\n- **API Gateway** — REST APIs (v1), HTTP/WebSocket APIs (v2, filter by protocol)\n- **Step Functions** — state machines (filter by type), executions (filter by status)\n- **EventBridge** — rules (filter by state), event buses\n- **ECR** — repositories, images (tags, total size)\n- **Cognito** — user pools, users (filter by status / enabled, attribute lookup)\n- **Auto Scaling** — Auto Scaling groups, scaling policies (filter by type / desired capacity)\n- **Firehose** — Kinesis Data Firehose delivery streams (list, describe)\n- **Athena** — workgroups (filter by state), query executions (filter by state)\n- **CodeCommit** — repositories, branches\n- **CodeDeploy** — applications, deployments (filter by status)\n- **Batch** — job queues, compute environments, jobs (filter by state/status)\n- **GuardDuty** — detectors, findings (filter by severity)\n- **Backup** — backup plans, backup jobs (filter by state)\n- **EFS** — file systems (filter by state / encryption), mount targets\n- **SageMaker** — training jobs, models, endpoints (filter by status)\n\n## Installation\n\nCopy `aws.mq` to your mq module directory:\n\n```sh\ncp aws.mq ~/.mq/\n```\n\n### HTTP Import (no local installation needed)\n\nIf `mq` was built with the `http-import` feature, you can import directly from GitHub without any local setup:\n\n```sh\nmq -I raw 'import \"github.com/harehare/aws.mq\" | aws::from_json | aws::ec2::instances | map(fn(i): i[\"InstanceId\"];)' response.json\n```\n\nPin to a specific release with `@vX.Y.Z`:\n\n```sh\nmq -I raw 'import \"github.com/harehare/aws.mq@v1.0.0\" | aws::from_json | aws::ec2::running_instances' response.json\n```\n\n## Usage\n\n```sh\n# List running EC2 instance IDs\naws ec2 describe-instances | mq -I raw 'import \"aws\" | aws::from_json | aws::ec2::instance_ids'\n\n# Show S3 bucket list as a Markdown table\naws s3api list-buckets | mq -I raw 'import \"aws\" | aws::from_json | aws::s3::buckets_to_markdown_table'\n\n# Count Lambda functions per runtime\naws lambda list-functions | mq -I raw 'import \"aws\" | aws::from_json | aws::lambda::by_runtime(\"python3.11\") | map(fn(f): f[\"FunctionName\"];)'\n```\n\n## API\n\n### Core\n\n| Function | Description |\n|---|---|\n| `from_json(s)` | Parse a raw JSON string into a value; use with `\\|` to feed AWS CLI output into any function |\n\n### EC2\n\n| Function | Description |\n|---|---|\n| `ec2::instances(response)` | All instances from `DescribeInstances` |\n| `ec2::instances_by_state(response, state)` | Filter by state (`\"running\"`, `\"stopped\"`, …) |\n| `ec2::running_instances(response)` | Running instances |\n| `ec2::stopped_instances(response)` | Stopped instances |\n| `ec2::instances_by_type(response, type)` | Filter by instance type |\n| `ec2::instance_ids(response)` | List of instance IDs |\n| `ec2::instance_name(instance)` | Name tag value for an instance |\n| `ec2::instances_to_markdown_table(response)` | Markdown table |\n| `ec2::security_groups(response)` | All security groups from `DescribeSecurityGroups` |\n| `ec2::security_groups_by_vpc(response, vpc_id)` | Filter by VPC |\n| `ec2::security_groups_to_markdown_table(response)` | Markdown table |\n| `ec2::vpcs(response)` | All VPCs from `DescribeVpcs` |\n| `ec2::default_vpc(response)` | The default VPC |\n| `ec2::vpcs_to_markdown_table(response)` | Markdown table |\n| `ec2::subnets(response)` | All subnets from `DescribeSubnets` |\n| `ec2::subnets_by_vpc(response, vpc_id)` | Filter by VPC |\n| `ec2::subnets_to_markdown_table(response)` | Markdown table |\n| `ec2::images(response)` | All AMIs from `DescribeImages` |\n| `ec2::available_images(response)` | Available AMIs |\n| `ec2::images_by_owner(response, owner_id)` | Filter by owner ID |\n| `ec2::images_to_markdown_table(response)` | Markdown table |\n| `ec2::addresses(response)` | Elastic IPs from `DescribeAddresses` |\n| `ec2::unassociated_addresses(response)` | Unattached Elastic IPs |\n| `ec2::addresses_to_markdown_table(response)` | Markdown table |\n| `ec2::nat_gateways(response)` | NAT Gateways from `DescribeNatGateways` |\n| `ec2::available_nat_gateways(response)` | Available NAT Gateways |\n| `ec2::nat_gateways_by_vpc(response, vpc_id)` | Filter by VPC |\n| `ec2::nat_gateways_to_markdown_table(response)` | Markdown table |\n| `ec2::route_tables(response)` | Route tables from `DescribeRouteTables` |\n| `ec2::route_tables_by_vpc(response, vpc_id)` | Filter by VPC |\n| `ec2::route_tables_to_markdown_table(response)` | Markdown table |\n| `ec2::internet_gateways(response)` | Internet gateways from `DescribeInternetGateways` |\n| `ec2::internet_gateways_by_vpc(response, vpc_id)` | Filter by attached VPC |\n| `ec2::internet_gateway_ids(response)` | List of gateway IDs |\n| `ec2::internet_gateways_to_markdown_table(response)` | Markdown table |\n| `ec2::vpc_endpoints(response)` | VPC endpoints from `DescribeVpcEndpoints` |\n| `ec2::vpc_endpoints_by_vpc(response, vpc_id)` | Filter by VPC |\n| `ec2::vpc_endpoints_by_type(response, type)` | Filter by type (`\"Gateway\"`, `\"Interface\"`) |\n| `ec2::vpc_endpoints_to_markdown_table(response)` | Markdown table |\n\n### S3\n\n| Function | Description |\n|---|---|\n| `s3::buckets(response)` | All buckets from `ListBuckets` |\n| `s3::bucket_names(response)` | List of bucket names |\n| `s3::buckets_to_markdown_table(response)` | Markdown table |\n| `s3::objects(response)` | All objects from `ListObjectsV2` |\n| `s3::object_keys(response)` | List of object keys |\n| `s3::total_size(response)` | Total size in bytes |\n| `s3::objects_by_storage_class(response, class)` | Filter by storage class |\n| `s3::objects_to_markdown_table(response)` | Markdown table |\n\n### IAM\n\n| Function | Description |\n|---|---|\n| `iam::users(response)` | All users from `ListUsers` |\n| `iam::usernames(response)` | List of usernames |\n| `iam::users_to_markdown_table(response)` | Markdown table |\n| `iam::roles(response)` | All roles from `ListRoles` |\n| `iam::role_names(response)` | List of role names |\n| `iam::roles_to_markdown_table(response)` | Markdown table |\n| `iam::policies(response)` | All policies from `ListPolicies` |\n| `iam::policy_names(response)` | List of policy names |\n| `iam::policies_to_markdown_table(response)` | Markdown table |\n| `iam::groups(response)` | All groups from `ListGroups` |\n| `iam::group_names(response)` | List of group names |\n| `iam::groups_to_markdown_table(response)` | Markdown table |\n| `iam::instance_profiles(response)` | All profiles from `ListInstanceProfiles` |\n| `iam::instance_profile_names(response)` | List of profile names |\n| `iam::instance_profiles_to_markdown_table(response)` | Markdown table |\n| `iam::access_keys(response)` | Access key metadata from `ListAccessKeys` |\n| `iam::active_access_keys(response)` | Active access keys |\n| `iam::access_keys_to_markdown_table(response)` | Markdown table |\n| `iam::mfa_devices(response)` | MFA devices from `ListMFADevices` |\n| `iam::mfa_device_usernames(response)` | Usernames with MFA devices |\n| `iam::mfa_devices_to_markdown_table(response)` | Markdown table |\n\n### Lambda\n\n| Function | Description |\n|---|---|\n| `lambda::functions(response)` | All functions from `ListFunctions` |\n| `lambda::function_names(response)` | List of function names |\n| `lambda::by_runtime(response, runtime)` | Filter by runtime (e.g. `\"python3.11\"`) |\n| `lambda::by_state(response, state)` | Filter by state (`\"Active\"`, `\"Inactive\"`) |\n| `lambda::total_memory(response)` | Total allocated memory in MB |\n| `lambda::functions_to_markdown_table(response)` | Markdown table |\n| `lambda::event_source_mappings(response)` | Event source mappings from `ListEventSourceMappings` |\n| `lambda::enabled_event_source_mappings(response)` | Enabled mappings only |\n| `lambda::event_source_mappings_to_markdown_table(response)` | Markdown table |\n| `lambda::layers(response)` | Layers from `ListLayers` |\n| `lambda::layer_names(response)` | List of layer names |\n| `lambda::layers_to_markdown_table(response)` | Markdown table |\n\n### RDS\n\n| Function | Description |\n|---|---|\n| `rds::db_instances(response)` | All instances from `DescribeDBInstances` |\n| `rds::available_instances(response)` | Available instances |\n| `rds::by_engine(response, engine)` | Filter by engine (`\"mysql\"`, `\"postgres\"`) |\n| `rds::instance_ids(response)` | List of DB instance identifiers |\n| `rds::db_instances_to_markdown_table(response)` | Markdown table |\n| `rds::db_snapshots(response)` | All snapshots from `DescribeDBSnapshots` |\n| `rds::automated_snapshots(response)` | Automated snapshots |\n| `rds::manual_snapshots(response)` | Manual snapshots |\n| `rds::available_snapshots(response)` | Available snapshots |\n| `rds::db_snapshots_to_markdown_table(response)` | Markdown table |\n| `rds::db_clusters(response)` | Aurora clusters from `DescribeDBClusters` |\n| `rds::available_db_clusters(response)` | Available clusters |\n| `rds::db_cluster_ids(response)` | List of cluster identifiers |\n| `rds::db_clusters_to_markdown_table(response)` | Markdown table |\n\n### CloudFormation\n\n| Function | Description |\n|---|---|\n| `cloudformation::stacks(response)` | All stacks from `DescribeStacks` |\n| `cloudformation::by_status(response, status)` | Filter by status |\n| `cloudformation::stack_names(response)` | List of stack names |\n| `cloudformation::stack_outputs(stack)` | Outputs array from a stack |\n| `cloudformation::stack_parameters(stack)` | Parameters array from a stack |\n| `cloudformation::output_value(stack, key)` | Get an output value by key |\n| `cloudformation::parameter_value(stack, key)` | Get a parameter value by key |\n| `cloudformation::stacks_to_markdown_table(response)` | Markdown table |\n\n### SQS\n\n| Function | Description |\n|---|---|\n| `sqs::queue_urls(response)` | All queue URLs from `ListQueues` |\n| `sqs::queue_names(response)` | Queue names extracted from URLs |\n| `sqs::queue_count(response)` | Number of queues |\n| `sqs::queue_urls_to_markdown_table(response)` | Markdown table |\n| `sqs::attribute(response, name)` | Attribute from `GetQueueAttributes` |\n| `sqs::message_count(response)` | Approximate visible message count |\n| `sqs::in_flight_count(response)` | Approximate in-flight message count |\n\n### SNS\n\n| Function | Description |\n|---|---|\n| `sns::topics(response)` | All topics from `ListTopics` |\n| `sns::topic_arns(response)` | List of topic ARNs |\n| `sns::topics_to_markdown_table(response)` | Markdown table |\n| `sns::subscriptions(response)` | All subscriptions from `ListSubscriptions` |\n| `sns::subscriptions_by_protocol(response, protocol)` | Filter by protocol (`\"email\"`, `\"sqs\"`, …) |\n| `sns::subscriptions_by_topic(response, topic_arn)` | Filter by topic ARN |\n| `sns::subscriptions_to_markdown_table(response)` | Markdown table |\n\n### ECS\n\n| Function | Description |\n|---|---|\n| `ecs::clusters(response)` | All clusters from `DescribeClusters` |\n| `ecs::cluster_names(response)` | List of cluster names |\n| `ecs::active_clusters(response)` | ACTIVE clusters |\n| `ecs::clusters_to_markdown_table(response)` | Markdown table |\n| `ecs::services(response)` | All services from `DescribeServices` |\n| `ecs::running_services(response)` | ACTIVE services |\n| `ecs::services_to_markdown_table(response)` | Markdown table |\n| `ecs::tasks(response)` | All tasks from `DescribeTasks` |\n| `ecs::running_tasks(response)` | RUNNING tasks |\n| `ecs::tasks_to_markdown_table(response)` | Markdown table |\n| `ecs::task_definition_arns(response)` | Task definition ARNs from `ListTaskDefinitions` |\n| `ecs::task_definition_count(response)` | Count of task definitions |\n| `ecs::task_definition_arns_to_markdown_table(response)` | Markdown table |\n| `ecs::task_definition(response)` | Task definition object from `DescribeTaskDefinition` |\n| `ecs::task_definition_info_to_markdown_table(response)` | Markdown table |\n\n### DynamoDB\n\n| Function | Description |\n|---|---|\n| `dynamodb::table_names(response)` | All table names from `ListTables` |\n| `dynamodb::table_count(response)` | Number of tables |\n| `dynamodb::table_names_to_markdown_table(response)` | Markdown table |\n| `dynamodb::table(response)` | Table object from `DescribeTable` |\n| `dynamodb::table_status(response)` | Table status |\n| `dynamodb::item_count(response)` | Item count |\n| `dynamodb::table_info_to_markdown_table(response)` | Markdown table |\n| `dynamodb::backups(response)` | Backup summaries from `ListBackups` |\n| `dynamodb::backups_by_table(response, table_name)` | Filter by table name |\n| `dynamodb::available_backups(response)` | Available backups only |\n| `dynamodb::backups_to_markdown_table(response)` | Markdown table |\n\n### CloudWatch\n\n| Function | Description |\n|---|---|\n| `cloudwatch::alarms(response)` | All alarms from `DescribeAlarms` |\n| `cloudwatch::alarms_in_state(response, state)` | Filter by state |\n| `cloudwatch::ok_alarms(response)` | Alarms in OK state |\n| `cloudwatch::alarm_alarms(response)` | Alarms in ALARM state |\n| `cloudwatch::insufficient_data_alarms(response)` | Alarms in INSUFFICIENT_DATA state |\n| `cloudwatch::alarm_names(response)` | List of alarm names |\n| `cloudwatch::alarms_to_markdown_table(response)` | Markdown table |\n| `cloudwatch::log_groups(response)` | Log groups from `DescribeLogGroups` |\n| `cloudwatch::log_group_names(response)` | List of log group names |\n| `cloudwatch::total_stored_bytes(response)` | Total stored bytes across all log groups |\n| `cloudwatch::log_groups_to_markdown_table(response)` | Markdown table |\n| `cloudwatch::log_streams(response)` | Log streams from `DescribeLogStreams` |\n| `cloudwatch::log_stream_names(response)` | List of log stream names |\n| `cloudwatch::log_streams_to_markdown_table(response)` | Markdown table |\n| `cloudwatch::dashboards(response)` | Dashboards from `ListDashboards` |\n| `cloudwatch::dashboard_names(response)` | List of dashboard names |\n| `cloudwatch::dashboards_to_markdown_table(response)` | Markdown table |\n\n### SSM Parameter Store\n\n| Function | Description |\n|---|---|\n| `ssm::parameters(response)` | All parameters from `DescribeParameters` / `GetParametersByPath` |\n| `ssm::parameter_names(response)` | List of parameter names |\n| `ssm::by_type(response, type)` | Filter by type (`\"String\"`, `\"SecureString\"`, `\"StringList\"`) |\n| `ssm::parameter_values(response)` | List of values (only from `GetParametersByPath`) |\n| `ssm::parameters_to_markdown_table(response)` | Markdown table |\n\n### Secrets Manager\n\n| Function | Description |\n|---|---|\n| `secretsmanager::secrets(response)` | All secrets from `ListSecrets` |\n| `secretsmanager::secret_names(response)` | List of secret names |\n| `secretsmanager::secrets_to_markdown_table(response)` | Markdown table |\n\n### ELBv2\n\n| Function | Description |\n|---|---|\n| `elbv2::load_balancers(response)` | All load balancers from `DescribeLoadBalancers` |\n| `elbv2::active_load_balancers(response)` | Load balancers with state `active` |\n| `elbv2::by_type(response, type)` | Filter by type (`\"application\"`, `\"network\"`, `\"gateway\"`) |\n| `elbv2::load_balancer_names(response)` | List of names |\n| `elbv2::load_balancers_to_markdown_table(response)` | Markdown table |\n| `elbv2::target_groups(response)` | All target groups from `DescribeTargetGroups` |\n| `elbv2::target_group_names(response)` | List of names |\n| `elbv2::target_groups_to_markdown_table(response)` | Markdown table |\n\n### Route53\n\n| Function | Description |\n|---|---|\n| `route53::hosted_zones(response)` | All hosted zones from `ListHostedZones` |\n| `route53::zone_names(response)` | List of zone names |\n| `route53::public_zones(response)` | Public hosted zones |\n| `route53::private_zones(response)` | Private hosted zones |\n| `route53::hosted_zones_to_markdown_table(response)` | Markdown table |\n| `route53::record_sets(response)` | All records from `ListResourceRecordSets` |\n| `route53::by_record_type(response, type)` | Filter by DNS type (`\"A\"`, `\"CNAME\"`, `\"MX\"`, …) |\n| `route53::record_sets_to_markdown_table(response)` | Markdown table |\n| `route53::health_checks(response)` | Health checks from `ListHealthChecks` |\n| `route53::health_checks_by_type(response, type)` | Filter by type (`\"HTTP\"`, `\"HTTPS\"`, `\"TCP\"`) |\n| `route53::health_check_count(response)` | Count of health checks |\n| `route53::health_checks_to_markdown_table(response)` | Markdown table |\n\n### CloudFront\n\n| Function | Description |\n|---|---|\n| `cloudfront::distributions(response)` | Distributions from `ListDistributions` |\n| `cloudfront::deployed_distributions(response)` | Deployed distributions |\n| `cloudfront::enabled_distributions(response)` | Enabled distributions |\n| `cloudfront::distribution_domain_names(response)` | List of domain names |\n| `cloudfront::distributions_to_markdown_table(response)` | Markdown table |\n\n### ACM\n\n| Function | Description |\n|---|---|\n| `acm::certificates(response)` | Certificates from `ListCertificates` |\n| `acm::issued_certificates(response)` | Issued certificates |\n| `acm::certificate_domain_names(response)` | List of domain names |\n| `acm::certificates_to_markdown_table(response)` | Markdown table |\n\n### KMS\n\n| Function | Description |\n|---|---|\n| `kms::keys(response)` | Keys from `ListKeys` |\n| `kms::key_count(response)` | Number of keys |\n| `kms::keys_to_markdown_table(response)` | Markdown table |\n| `kms::aliases(response)` | Aliases from `ListAliases` |\n| `kms::alias_names(response)` | List of alias names |\n| `kms::customer_aliases(response)` | Aliases with a customer-managed TargetKeyId |\n| `kms::aliases_to_markdown_table(response)` | Markdown table |\n\n### CloudTrail\n\n| Function | Description |\n|---|---|\n| `cloudtrail::trails(response)` | Trails from `DescribeTrails` |\n| `cloudtrail::trail_names(response)` | List of trail names |\n| `cloudtrail::multi_region_trails(response)` | Multi-region trails |\n| `cloudtrail::validated_trails(response)` | Trails with log file validation |\n| `cloudtrail::trails_to_markdown_table(response)` | Markdown table |\n\n### SES\n\n| Function | Description |\n|---|---|\n| `ses::identities(response)` | Identities from `ListIdentities` |\n| `ses::identity_count(response)` | Number of verified identities |\n| `ses::identities_to_markdown_table(response)` | Markdown table |\n| `ses::send_statistics(response)` | Data points from `GetSendStatistics` |\n| `ses::total_deliveries(response)` | Total delivery attempts |\n| `ses::total_bounces(response)` | Total bounces |\n| `ses::total_complaints(response)` | Total complaints |\n| `ses::send_statistics_to_markdown_table(response)` | Markdown table |\n\n### Redshift\n\n| Function | Description |\n|---|---|\n| `redshift::clusters(response)` | Clusters from `DescribeClusters` |\n| `redshift::available_clusters(response)` | Available clusters |\n| `redshift::cluster_identifiers(response)` | List of cluster identifiers |\n| `redshift::clusters_to_markdown_table(response)` | Markdown table |\n\n### CodePipeline\n\n| Function | Description |\n|---|---|\n| `codepipeline::pipelines(response)` | Pipelines from `ListPipelines` |\n| `codepipeline::pipeline_names(response)` | List of pipeline names |\n| `codepipeline::pipelines_to_markdown_table(response)` | Markdown table |\n| `codepipeline::stage_states(response)` | Stage states from `GetPipelineState` |\n| `codepipeline::failed_stages(response)` | Stages with Failed latest execution |\n| `codepipeline::in_progress_stages(response)` | Stages with InProgress latest execution |\n| `codepipeline::stage_states_to_markdown_table(response)` | Markdown table |\n\n### CodeBuild\n\n| Function | Description |\n|---|---|\n| `codebuild::project_names(response)` | Project names from `ListProjects` |\n| `codebuild::project_count(response)` | Number of build projects |\n| `codebuild::project_names_to_markdown_table(response)` | Markdown table |\n| `codebuild::builds(response)` | Builds from `BatchGetBuilds` |\n| `codebuild::builds_by_status(response, status)` | Filter by status (`\"SUCCEEDED\"`, `\"FAILED\"`, …) |\n| `codebuild::succeeded_builds(response)` | Succeeded builds |\n| `codebuild::failed_builds(response)` | Failed builds |\n| `codebuild::builds_to_markdown_table(response)` | Markdown table |\n\n### WAF\n\n| Function | Description |\n|---|---|\n| `waf::web_acls(response)` | Web ACLs from `ListWebACLs` (WAFv2) |\n| `waf::web_acl_names(response)` | List of Web ACL names |\n| `waf::web_acls_to_markdown_table(response)` | Markdown table |\n\n### Glue\n\n| Function | Description |\n|---|---|\n| `glue::jobs(response)` | ETL jobs from `GetJobs` |\n| `glue::job_names(response)` | List of job names |\n| `glue::jobs_to_markdown_table(response)` | Markdown table |\n| `glue::crawlers(response)` | Crawlers from `GetCrawlers` |\n| `glue::crawler_names(response)` | List of crawler names |\n| `glue::ready_crawlers(response)` | Crawlers in READY state |\n| `glue::running_crawlers(response)` | Crawlers in RUNNING state |\n| `glue::crawlers_to_markdown_table(response)` | Markdown table |\n\n### EKS\n\n| Function | Description |\n|---|---|\n| `eks::cluster_names(response)` | Cluster names from `ListClusters` |\n| `eks::cluster_count(response)` | Number of clusters |\n| `eks::cluster_names_to_markdown_table(response)` | Markdown table |\n| `eks::cluster(response)` | Cluster object from `DescribeCluster` |\n| `eks::cluster_status(response)` | Cluster status |\n| `eks::cluster_version(response)` | Kubernetes version |\n| `eks::cluster_info_to_markdown_table(response)` | Markdown table |\n| `eks::nodegroup_names(response)` | Nodegroup names from `ListNodegroups` |\n| `eks::nodegroup_names_to_markdown_table(response)` | Markdown table |\n| `eks::nodegroup(response)` | Nodegroup object from `DescribeNodegroup` |\n| `eks::nodegroup_info_to_markdown_table(response)` | Markdown table |\n\n### Kinesis\n\n| Function | Description |\n|---|---|\n| `kinesis::stream_names(response)` | Stream names from `ListStreams` |\n| `kinesis::stream_count(response)` | Number of streams |\n| `kinesis::stream_names_to_markdown_table(response)` | Markdown table |\n| `kinesis::stream_description(response)` | Stream description from `DescribeStream` |\n| `kinesis::stream_status(response)` | Stream status |\n| `kinesis::shards(response)` | List of shards |\n| `kinesis::shard_count(response)` | Number of shards |\n| `kinesis::stream_info_to_markdown_table(response)` | Markdown table |\n\n### ElastiCache\n\n| Function | Description |\n|---|---|\n| `elasticache::cache_clusters(response)` | All clusters from `DescribeCacheClusters` |\n| `elasticache::available_clusters(response)` | Available clusters |\n| `elasticache::by_engine(response, engine)` | Filter by engine (`\"redis\"`, `\"memcached\"`) |\n| `elasticache::cluster_ids(response)` | List of cluster IDs |\n| `elasticache::cache_clusters_to_markdown_table(response)` | Markdown table |\n| `elasticache::replication_groups(response)` | All groups from `DescribeReplicationGroups` |\n| `elasticache::replication_group_ids(response)` | List of group IDs |\n| `elasticache::available_replication_groups(response)` | Available replication groups |\n| `elasticache::replication_groups_to_markdown_table(response)` | Markdown table |\n\n### API Gateway\n\n| Function | Description |\n|---|---|\n| `apigateway::rest_apis(response)` | REST APIs from `GetRestApis` (v1) |\n| `apigateway::rest_api_names(response)` | List of REST API names |\n| `apigateway::rest_apis_to_markdown_table(response)` | Markdown table |\n| `apigateway::http_apis(response)` | HTTP/WebSocket APIs from `GetApis` (v2) |\n| `apigateway::http_api_names(response)` | List of HTTP API names |\n| `apigateway::http_apis_by_protocol(response, protocol)` | Filter by protocol (`\"HTTP\"`, `\"WEBSOCKET\"`) |\n| `apigateway::http_apis_to_markdown_table(response)` | Markdown table |\n\n### Step Functions\n\n| Function | Description |\n|---|---|\n| `stepfunctions::state_machines(response)` | State machines from `ListStateMachines` |\n| `stepfunctions::state_machine_names(response)` | List of state machine names |\n| `stepfunctions::by_type(response, type)` | Filter by type (`\"STANDARD\"`, `\"EXPRESS\"`) |\n| `stepfunctions::state_machines_to_markdown_table(response)` | Markdown table |\n| `stepfunctions::executions(response)` | Executions from `ListExecutions` |\n| `stepfunctions::executions_by_status(response, status)` | Filter by status |\n| `stepfunctions::running_executions(response)` | Running executions |\n| `stepfunctions::executions_to_markdown_table(response)` | Markdown table |\n\n### EventBridge\n\n| Function | Description |\n|---|---|\n| `eventbridge::rules(response)` | Rules from `ListRules` |\n| `eventbridge::rule_names(response)` | List of rule names |\n| `eventbridge::enabled_rules(response)` | Enabled rules |\n| `eventbridge::disabled_rules(response)` | Disabled rules |\n| `eventbridge::rules_to_markdown_table(response)` | Markdown table |\n| `eventbridge::event_buses(response)` | Event buses from `ListEventBuses` |\n| `eventbridge::event_bus_names(response)` | List of event bus names |\n| `eventbridge::event_buses_to_markdown_table(response)` | Markdown table |\n\n### ECR\n\n| Function | Description |\n|---|---|\n| `ecr::repositories(response)` | Repositories from `DescribeRepositories` |\n| `ecr::repository_names(response)` | List of repository names |\n| `ecr::repositories_to_markdown_table(response)` | Markdown table |\n| `ecr::images(response)` | Images from `DescribeImages` |\n| `ecr::image_tags(response)` | All image tags (flattened) |\n| `ecr::total_image_size(response)` | Total image size in bytes |\n| `ecr::images_to_markdown_table(response)` | Markdown table |\n\n### Cognito\n\n| Function | Description |\n|---|---|\n| `cognito::user_pools(response)` | User pools from `ListUserPools` |\n| `cognito::user_pool_names(response)` | List of user pool names |\n| `cognito::user_pools_to_markdown_table(response)` | Markdown table |\n| `cognito::users(response)` | Users from `ListUsers` |\n| `cognito::usernames(response)` | List of usernames |\n| `cognito::confirmed_users(response)` | CONFIRMED users |\n| `cognito::users_by_status(response, status)` | Filter by status (`\"CONFIRMED\"`, `\"UNCONFIRMED\"`, …) |\n| `cognito::enabled_users(response)` | Enabled users |\n| `cognito::user_attribute(user, name)` | Get a user attribute value by name |\n| `cognito::users_to_markdown_table(response)` | Markdown table |\n\n### Auto Scaling\n\n| Function | Description |\n|---|---|\n| `autoscaling::groups(response)` | All groups from `DescribeAutoScalingGroups` |\n| `autoscaling::group_names(response)` | List of group names |\n| `autoscaling::groups_by_min_desired(response, min)` | Filter by minimum desired capacity |\n| `autoscaling::groups_to_markdown_table(response)` | Markdown table |\n| `autoscaling::scaling_policies(response)` | Policies from `DescribePolicies` |\n| `autoscaling::policies_by_type(response, type)` | Filter by type (`\"TargetTrackingScaling\"`, `\"StepScaling\"`) |\n| `autoscaling::policy_names(response)` | List of policy names |\n| `autoscaling::scaling_policies_to_markdown_table(response)` | Markdown table |\n\n### Firehose\n\n| Function | Description |\n|---|---|\n| `firehose::stream_names(response)` | Delivery stream names from `ListDeliveryStreams` |\n| `firehose::stream_count(response)` | Number of delivery streams |\n| `firehose::stream_names_to_markdown_table(response)` | Markdown table |\n| `firehose::stream_description(response)` | Stream description from `DescribeDeliveryStream` |\n| `firehose::stream_status(response)` | Stream status |\n| `firehose::stream_info_to_markdown_table(response)` | Markdown table |\n\n### Athena\n\n| Function | Description |\n|---|---|\n| `athena::workgroups(response)` | All workgroups from `ListWorkGroups` |\n| `athena::workgroup_names(response)` | List of workgroup names |\n| `athena::enabled_workgroups(response)` | ENABLED workgroups |\n| `athena::workgroups_to_markdown_table(response)` | Markdown table |\n| `athena::query_executions(response)` | Executions from `BatchGetQueryExecution` |\n| `athena::executions_by_state(response, state)` | Filter by state (`\"SUCCEEDED\"`, `\"FAILED\"`, `\"RUNNING\"`) |\n| `athena::succeeded_executions(response)` | Succeeded executions |\n| `athena::failed_executions(response)` | Failed executions |\n| `athena::query_executions_to_markdown_table(response)` | Markdown table |\n\n### CodeCommit\n\n| Function | Description |\n|---|---|\n| `codecommit::repositories(response)` | All repositories from `ListRepositories` |\n| `codecommit::repository_names(response)` | List of repository names |\n| `codecommit::repositories_to_markdown_table(response)` | Markdown table |\n| `codecommit::branches(response)` | Branches from `ListBranches` |\n| `codecommit::branch_count(response)` | Number of branches |\n| `codecommit::branches_to_markdown_table(response)` | Markdown table |\n\n### CodeDeploy\n\n| Function | Description |\n|---|---|\n| `codedeploy::application_names(response)` | Application names from `ListApplications` |\n| `codedeploy::application_count(response)` | Number of applications |\n| `codedeploy::application_names_to_markdown_table(response)` | Markdown table |\n| `codedeploy::deployments(response)` | Deployments from `BatchGetDeployments` |\n| `codedeploy::deployments_by_status(response, status)` | Filter by status (`\"Succeeded\"`, `\"Failed\"`, `\"InProgress\"`) |\n| `codedeploy::succeeded_deployments(response)` | Succeeded deployments |\n| `codedeploy::failed_deployments(response)` | Failed deployments |\n| `codedeploy::deployments_to_markdown_table(response)` | Markdown table |\n\n### Batch\n\n| Function | Description |\n|---|---|\n| `batch::job_queues(response)` | Job queues from `DescribeJobQueues` |\n| `batch::queue_names(response)` | List of queue names |\n| `batch::enabled_queues(response)` | ENABLED job queues |\n| `batch::job_queues_to_markdown_table(response)` | Markdown table |\n| `batch::compute_environments(response)` | Compute environments from `DescribeComputeEnvironments` |\n| `batch::environment_names(response)` | List of environment names |\n| `batch::enabled_environments(response)` | ENABLED compute environments |\n| `batch::compute_environments_to_markdown_table(response)` | Markdown table |\n| `batch::jobs(response)` | Job summaries from `ListJobs` |\n| `batch::jobs_by_status(response, status)` | Filter by status (`\"SUCCEEDED\"`, `\"FAILED\"`, `\"RUNNING\"`) |\n| `batch::running_jobs(response)` | RUNNING jobs |\n| `batch::failed_jobs(response)` | FAILED jobs |\n| `batch::jobs_to_markdown_table(response)` | Markdown table |\n\n### GuardDuty\n\n| Function | Description |\n|---|---|\n| `guardduty::detector_ids(response)` | Detector IDs from `ListDetectors` |\n| `guardduty::detector_count(response)` | Number of detectors |\n| `guardduty::detector_ids_to_markdown_table(response)` | Markdown table |\n| `guardduty::findings(response)` | Findings from `GetFindings` |\n| `guardduty::findings_above_severity(response, threshold)` | Filter by minimum severity (0–10) |\n| `guardduty::high_severity_findings(response)` | High-severity findings (≥ 7.0) |\n| `guardduty::medium_severity_findings(response)` | Medium-severity findings (4.0 – 6.9) |\n| `guardduty::findings_to_markdown_table(response)` | Markdown table |\n\n### Backup\n\n| Function | Description |\n|---|---|\n| `backup::backup_plans(response)` | Backup plans from `ListBackupPlans` |\n| `backup::plan_names(response)` | List of plan names |\n| `backup::backup_plans_to_markdown_table(response)` | Markdown table |\n| `backup::backup_jobs(response)` | Backup jobs from `ListBackupJobs` |\n| `backup::jobs_by_state(response, state)` | Filter by state (`\"COMPLETED\"`, `\"FAILED\"`, `\"RUNNING\"`) |\n| `backup::completed_jobs(response)` | Completed backup jobs |\n| `backup::failed_jobs(response)` | Failed backup jobs |\n| `backup::backup_jobs_to_markdown_table(response)` | Markdown table |\n\n### EFS\n\n| Function | Description |\n|---|---|\n| `efs::file_systems(response)` | File systems from `DescribeFileSystems` |\n| `efs::file_system_ids(response)` | List of file system IDs |\n| `efs::available_file_systems(response)` | Available file systems |\n| `efs::encrypted_file_systems(response)` | Encrypted file systems |\n| `efs::file_systems_to_markdown_table(response)` | Markdown table |\n| `efs::mount_targets(response)` | Mount targets from `DescribeMountTargets` |\n| `efs::available_mount_targets(response)` | Available mount targets |\n| `efs::mount_targets_to_markdown_table(response)` | Markdown table |\n\n### SageMaker\n\n| Function | Description |\n|---|---|\n| `sagemaker::training_jobs(response)` | Training jobs from `ListTrainingJobs` |\n| `sagemaker::training_jobs_by_status(response, status)` | Filter by status (`\"Completed\"`, `\"Failed\"`, `\"InProgress\"`) |\n| `sagemaker::completed_training_jobs(response)` | Completed training jobs |\n| `sagemaker::training_job_names(response)` | List of job names |\n| `sagemaker::training_jobs_to_markdown_table(response)` | Markdown table |\n| `sagemaker::models(response)` | Models from `ListModels` |\n| `sagemaker::model_names(response)` | List of model names |\n| `sagemaker::models_to_markdown_table(response)` | Markdown table |\n| `sagemaker::endpoints(response)` | Endpoints from `ListEndpoints` |\n| `sagemaker::endpoints_by_status(response, status)` | Filter by status (`\"InService\"`, `\"Creating\"`, `\"Failed\"`) |\n| `sagemaker::in_service_endpoints(response)` | InService endpoints |\n| `sagemaker::endpoint_names(response)` | List of endpoint names |\n| `sagemaker::endpoints_to_markdown_table(response)` | Markdown table |\n\n## Examples\n\n```sh\n# Show all running EC2 instances as a Markdown table\naws ec2 describe-instances \\\n  | mq -I raw 'import \"aws\" | aws::from_json | aws::ec2::instances_to_markdown_table'\n\n# List SQS queue names\naws sqs list-queues \\\n  | mq -I raw 'import \"aws\" | aws::from_json | aws::sqs::queue_names'\n\n# Show ALARM-state CloudWatch alarms\naws cloudwatch describe-alarms \\\n  | mq -I raw 'import \"aws\" | aws::from_json | aws::cloudwatch::alarm_alarms | map(fn(a): a[\"AlarmName\"];)'\n\n# Count SecureString parameters\naws ssm describe-parameters \\\n  | mq -I raw 'import \"aws\" | aws::from_json | aws::ssm::by_type(\"SecureString\") | len'\n\n# List public Route53 hosted zones\naws route53 list-hosted-zones \\\n  | mq -I raw 'import \"aws\" | aws::from_json | aws::route53::public_zones | map(fn(z): z[\"Name\"];)'\n\n# Show ECS running tasks as a Markdown table\naws ecs describe-tasks --cluster prod-cluster --tasks $(aws ecs list-tasks --cluster prod-cluster --query taskArns --output text) \\\n  | mq -I raw 'import \"aws\" | aws::from_json | aws::ecs::tasks_to_markdown_table'\n```\n\n## Compatibility\n\nRequires [mq](https://github.com/harehare/mq) v0.5 or later.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharehare%2Faws.mq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharehare%2Faws.mq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharehare%2Faws.mq/lists"}