ターミナルで Azure / AWS / GCP をまとめて扱う「Cloud‑Native Shell」について

1ターミナルで Azure / AWS / GCP をまとめて扱う「Cloud‑Native Shell」について

作成日: 2025-11-10

目的: ローカル or クラウド上の 1つのシェル から、Azure/AWS/GCPに安全にログインし、IaC・Kubernetes・日常運用をシームレスに行うための最小セットを、コピペで再現できるようにまとめます。


全体像(3つの選択肢)

  1. ローカル端末に統合CLI環境を作る(推奨)

    • aws / az / gcloud + 認証まわり(aws-vault / ADC / az login)を揃え、direnvディレクトリごとに自動切替
  2. クラウドのホスト型シェルをベースにする

    • 例: Azure Cloud Shell / Google Cloud Shell / AWS CloudShell。中に他クラウドCLIを追加して疑似・統合も可能(Azure Cloud ShellにAWS CLIを追加 など)。
  3. コンテナ/Dev Containerで“同じ開発シェル”を共有

    • VS Code Dev Containers / Docker イメージに必要ツールを同梱し、チームで再現性の高いシェルを共有。

インストール(macOS/Linux想定)



/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

brew install   awscli azure-cli google-cloud-sdk direnv   kubectl kubectx   tfenv pulumi   fzf jq yq


brew install starship
echo 'eval "$(starship init bash)"' >> ~/.bashrc  
  • kubectx/kubens は K8s のコンテキスト/Namespace切替を爆速にします。
  • tfenv は Terraform のバージョン切り替え、pulumi はマルチクラウドIaC。
  • starship はプロンプトに AWS_PROFILE などを表示でき、誤操作の防止に役立ちます。

認証の基本セット

AWS(aws-vault で安全に)

brew install --cask aws-vault  

cat >> ~/.aws/config 'EOF'
[profile dev]
region=ap-northeast-1
output=json
EOF


aws-vault add dev


aws-vault exec dev -- aws sts get-caller-identity
  • aws-vault は OS の安全なキーストアに長期キーを保管し、一時クレデンシャルで操作します。

GCP(ADC: Application Default Credentials)


gcloud auth login


gcloud auth application-default login


gcloud auth application-default print-access-token
  • gcloud auth logingcloud CLI 用gcloud auth application-default loginADC を作成します(使い分けが重要)。

Azure(az login とサブスクリプション選択)

az login  
az account list -o table
az account set --subscription ""
az account show -o table

ディレクトリ単位で“自動切替”する(direnv

プロジェクトごとにクラウドやアカウントが違うと、手動エクスポートのミスが致命傷になりがち。direnvディレクトリに入るだけで安全に切替します。


echo 'eval "$(direnv hook bash)"' >> ~/.bashrc


cat > .envrc 'EOF'
# 安全: 明示したものだけエクスポート
set -a

# AWS は aws-vault 経由で一時クレデンシャルを注入
# 実行シェルをラップする場合
# use aws-vault dev

# 直接プロファイルを指す(必要に応じて)
export AWS_PROFILE=dev
export AWS_REGION=ap-northeast-1

# GCP: ADC へのパスを切替(複数プロジェクト用に ADC を分けている場合)
export GOOGLE_APPLICATION_CREDENTIALS="$HOME/.config/gcloud/application_default_credentials.json"

# Azure: 既定サブスクリプションを固定したい場合の補助(必要に応じて)
export AZURE_DEFAULTS_GROUP=my-rg
export AZURE_DEFAULTS_LOCATION=japaneast

set +a
EOF

direnv allow  
  • ディレクトリ移動だけで AWS_PROFILEGOOGLE_APPLICATION_CREDENTIALS自動で切替
  • aws-vault と組み合わせると、常に短命トークンで運用できます。

Kubernetes を複数クラウドで扱う


kubectx


kubectx eks-dev          
kubectx aks-staging      
kubectx gke-prod         


kubens
kubens kube-system
  • kubectx / kubens入力ミスを減らし、誤クラスター操作を防ぎます。

IaC の利用例(Terraform / Pulumi)

Terraform(宣言型)


terraform { required_providers = {
  aws     = { source = "hashicorp/aws",    version = "~> 5.0" }
  azurerm = { source = "hashicorp/azurerm", version = "~> 4.0" }
  google  = { source = "hashicorp/google",  version = "~> 6.0" }
}}

provider "aws"    { region = "ap-northeast-1" }
provider "azurerm"{ features = {} }
provider "google" { project = "my-proj", region = "asia-northeast1" }
  • 同一ワークフローで複数クラウドを計画/適用でき、CI/CD にも載せやすい。

Pulumi(汎用言語で記述)


import * as aws from "@pulumi/aws";
import * as azure from "@pulumi/azure-native";
import * as gcp from "@pulumi/gcp";

const bucket = new gcp.storage.Bucket("assets");
const rg     = new azure.resources.ResourceGroup("rg");
const queue  = new aws.sqs.Queue("q");
  • 既存のプログラミング言語で条件分岐・ループ・テストを活用できます。

1画面で整理するときに注意する点

  • プロンプトに今のアカウント/サブスクを表示(Starship の aws/gcloud/azure モジュール)。
  • 読み取り専用プロファイル管理者プロファイルを分ける(aws-vault exec readonly -- ...)。
  • MFA/SSO/OIDC連携を有効化し、長期キーを廃止。GCP は ADC、Azure は Entra ID 経由の az login を徹底。

ホスト型 Cloud Shell を“統合端末”として使う

  • 各クラウドはブラウザ内シェルを提供(Azure/Google/AWS)。
  • 例: Azure Cloud Shell に AWS CLI を追加して“ほぼ統合”を実現するワークアラウンドがあります。
  • Google Cloud Shell もブラウザ上でのファイル操作/アップロードや、エディタと連携が可能。

参考リンク

  • 各社 Cloud Shell の比較解説(Seroter, 2021)
  • Azure Cloud Shell に AWS CLI を導入する実例(Qiita 記事)
  • GCP の Application Default Credentials(ADC)の公式解説
  • Azure CLI の公式ログインガイド(サブスクリプション選択含む)
  • direnv で GCP/AWS の設定をディレクトリごとに切替(Zenn/Developers Blog)
  • aws-vault 公式
  • kubectx/kubens 公式
  • Terraform でマルチクラウド管理の解説(2025)
  • Pulumi 公式(マルチクラウド IaC)

簡易確認手順


brew install awscli azure-cli google-cloud-sdk direnv kubectx


aws-vault add dev && aws-vault exec dev -- aws sts get-caller-identity
gcloud auth login && gcloud auth application-default login
az login && az account set --subscription ""




注意点

  • gcloud auth login だけでは ADC が設定されないgcloud auth application-default login も実行。
  • aws configure の長期キーは使わないaws-vault で短命化/MFA化)。
  • Azure はサブスクリプション選択を忘れがち → az account set を明示。

元の記事を確認する

関連記事