AWS CloudShell позволяет легко настроить терминал прямо в вашей учетной записи AWS. CloudShell поставляется с предустановленным AWS CLI и вашими учетными данными в соответствующей учетной записи. Поскольку CloudShell – это такой же терминал, как и любой другой, у вас есть возможность загружать другие инструменты без необходимости запуска экземпляра. Я лично считаю CloudShell полезным для специальных действий, которые мне нужно выполнить в AWS CLI или с другими инструментами с открытым исходным кодом.
Как руководитель нашего инструмента с открытым исходным кодом Steampipe.io, я активно использую Steampipe CLI, часто запуская Steampipe на своей локальной машине для выполнения агрегированных запросов и отчетов в многоаккаунтной среде AWS и других облачных аккаунтах. Когда я работаю с клиентами в их учетных записях AWS, мне проще работать в структуре их учетных записей, чем создавать локальный профиль. В этом случае я нахожу AWS CloudShell быстрой победой для того, чтобы быть гостем в другой учетной записи для загрузки моих инструментов во временной среде под их контролем.
В этом посте мы рассмотрим, как установить Steampipe в AWS CloudShell.
Общие сведения о Steampipe
С помощью Steampipe вы можете мгновенно запрашивать API AWS с помощью SQL прямо в терминале.
select
title,
create_date,
mfa_enabled
from
aws_iam_user
+-----------------+---------------------+-------------+
| title | create_date | mfa_enabled |
+-----------------+---------------------+-------------+
| pam_beesly | 2005-03-24 21:30:00 | false |
| creed_bratton | 2005-03-24 21:30:00 | true |
| stanley_hudson | 2005-03-24 21:30:00 | false |
| michael_scott | 2005-03-24 21:30:00 | false |
| dwight_schrute | 2005-03-24 21:30:00 | true |
+-----------------+---------------------+-------------+
Установка самого Steampipe, а также плагина AWS, который отображает вызовы AWS API в таблицы Postgres, занимает всего несколько секунд.
Steampipe разрешит ваш регион и учетные данные, используя тот же механизм, что и AWS CLI (переменные окружения AWS, профиль по умолчанию и т.д.). Примечание: можно расширить возможности для запроса нескольких учетных записей, регионов, настройки учетных данных из профилей AWS, SSO, aws-vault и т.д.
AWS CloudShell + Steampipe
В качестве альтернативы вы можете использовать CloudShell для установки Steampipe непосредственно в вашем аккаунте AWS. С CloudShell ваши учетные данные, которые вы используете для входа в консоль AWS, уже переданы в CloudShell. Поскольку Steampipe по умолчанию будет использовать ваши локальные учетные данные AWS, с самого начала работы вы будете запрашивать API AWS с помощью SQL за считанные секунды.
Установка Steampipe в CloudShell
Зайдите в свой AWS CloudShell, установите Steampipe:
$ sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/turbot/steampipe/main/install.sh)"
...
Installing
Applying necessary permissions
Steampipe was installed successfully to /usr/local/bin/steampipe
Установите плагин AWS
Теперь, когда Steampipe установлен, вы можете установить плагин AWS:
$ steampipe plugin install aws
Installed plugin: aws v0.57.0
Documentation: https://hub.steampipe.io/plugins/turbot/aws
Запустите SQL-запрос!
Теперь вы готовы выполнить SQL-запрос. Поскольку CloudShell уже имеет учетные данные, вы можете просто начать:
$ steampipe query
Welcome to Steampipe v0.13.6
For more information, type .help
> select * from aws_s3_bucket
+--------------------------------------+
| name |
+--------------------------------------+
| jon-turbot-test-bucket-01 |
| cf-templates-1s5tzrjxv4j52-us-west-1 |
+--------------------------------------+
CloudShell использует все преимущества компонентов Steampipe CLI, поэтому вы можете просматривать таблицы, настраивать переменные окружения, визуализировать подсветку синтаксиса, выбирать предложения автозаполнения и т.д.
Заключительные мысли
Мне нравится использовать AWS CloudShell для специальных действий с AWS CLI и Steampipe в рамках конкретного аккаунта AWS. Интересно узнать от других, как вы используете CloudShell в своей среде; каковы ваши случаи использования и как часто вы используете CloudShell?