目次
AWS CloudShell 完全ガイド 2026
ブラウザベースシェル環境によるサーバーレス AWS 操作基盤
AWS CloudShell は、AWS Management Console からワンクリックで起動できるブラウザベースのシェル環境 です。AWS CLI・Python・Node.js・git・kubectl が事前インストールされており、ローカル環境のセットアップなしに AWS 操作を即座に開始できます。1 GB の永続ストレージで小規模スクリプト・設定ファイルを保存可能。Console 認証情報を自動継承するため、aws configure が不要で、セキュリティ・利便性の両面で優れた AWS 操作ツールです。本ドキュメントは、CloudShell の本質・特徴・ユースケース・運用・ベストプラクティスを体系的に解説します。
ドキュメントの目的
本ガイドは以下を対象としています。
- AWS 初心者向け: LocalAWS CLI セットアップなしに AWS を学びたい方
- DevOps・SRE 向け: インシデント対応・infrastructure as Code の deploy・管理タスク実行
- 開発者向け: Lambda・ECS・CloudFormation デプロイの検証・debugging
- セキュリティチーム向け: エアギャップ・VPC CloudShell による隔離環境での操作
- CTOアーキテクト向け: オンボーディング・ハンズオン実施基盤の選択肢
2026 年の CloudShell エコシステム
- VPC CloudShell 拡張:Private VPC リソースへの直接アクセス(RDS・ElastiCache・ALB)
- IDE 統合(計画中):VS Code・JetBrains IDE との Remote SSH 統合
- Copilot AI 統合:AWS CLI コマンド・Bash スクリプトの AI による自動生成
- Session Management 拡張:長時間セッション対応・Session 復旧機能強化
- Persistent Environment:カスタム環境の保存・チーム内での共有(Preview)
- Graviton Processor 対応:arm64 アーキテクチャでの高速化(計画中)
概要
初心者向けメモ: CloudShell は「ローカル環境なしに、ブラウザからすぐ AWS CLI を実行できるシェル」です。従来は「AWS CLI をインストール → aws configure で認証情報を設定」という手順が必要でしたが、CloudShell なら Console にログインしたら即座に aws s3 ls などのコマンドが実行できます。さらに、Python・Node.js・git・jq・kubectl など開発ツールが事前に揃っているため、小規模な作業であれば IDE すら不要です。
AWS CloudShell は ローカル環境のセットアップなしに、ブラウザから AWS を操作できるマネージドシェルサービス です。AWS Console のサインイン認証情報を自動的に引き継ぎ、IAM Identity Center・Temporary Credentials にも対応。Console 上の認証情報で即座に CLI・Bash・PowerShell・Zsh が使用可能。1 GB の永続ストレージで作業ファイルを保存でき、通常のシェルと変わらない操作性を実現します。
CloudShell の位置づけ
graph TB
subgraph Browser["Webブラウザ"]
CloudShell["🐚 AWS CloudShell<br/>(ブラウザベース)"]
end
subgraph LocalEnv["ローカル環境"]
CLI["AWS CLI<br/>(インストール必須)"]
IDE["IDE / Code Editor<br/>(Setup Complex)"]
end
subgraph ServerEnv["サーバー環境"]
EC2["EC2 Bastion<br/>(Cost & Ops Overhead)"]
SessionMgr["Session Manager<br/>(EC2 Required)"]
end
Browser -->|"Zero Setup"| CloudShell
LocalEnv -->|"Install & Config"| CLI
ServerEnv -->|"Launch & Manage"| EC2
style CloudShell fill:#FF9900
style Browser fill:#E8F4F8
定義
AWS 公式による定義:
“AWS CloudShell is a browser-based shell that makes it easy to securely manage, explore, and interact with your AWS resources.”
AWS Console 統合・事前インストール済みツール・永続ストレージにより、「最も簡単な AWS 操作環境」を実現します。
目次
- 概要
- CloudShell が解決する課題
- 主な特徴
- アーキテクチャ
- コアコンポーネント
- セットアップ・初期実行
- 使用言語・ツール一覧
- 主要ユースケース
- CLI コマンド実例
- スクリプト実行・automation
- VPC CloudShell
- ファイルのアップロード・ダウンロード
- Session 管理・タイムアウト
- セキュリティ・権限管理
- カスタマイズ・環境設定
- 既存ツールとの比較
- トラブルシューティング
- パフォーマンス最適化
- コスト管理
- ベストプラクティス
- 2025-2026 最新動向
- 学習リソース
- 実装例・チェックリスト
- まとめ
- 参考文献
CloudShell が解決する課題
課題1: AWS CLI セットアップの手間
従来の課題: AWS を触り始めるには「AWS CLI インストール → IAM ユーザー作成 → アクセスキー取得 → aws configure 入力」など複数のステップが必要。初心者は環境構築だけで挫折。新しい PC やゲスト端末では毎回セットアップが必要。
CloudShell での解決: Console にログインしたら即座に CLI 環境が起動。AWS CLI v2・Python・git・kubectl など全て事前インストール済み。セットアップゼロで AWS 操作開始可能。
課題2: IAM クレデンシャル管理の複雑性・セキュリティリスク
従来の課題: IAM ユーザーのアクセスキー・シークレットキーをローカルに保存・管理するのはセキュリティリスク。キーの流出・ローテーション忘れなど運用負荷が大きい。
CloudShell での解決: Console 認証情報を自動的に引き継ぎ。IAM Identity Center(SSO)のセッショントークンも直接利用可能。クレデンシャル管理不要。
課題3: EC2 踏み台サーバーの管理・コスト
従来の課題: 本番環境へのアクセスに EC2 踏み台(Bastion)が必要な場合、サーバー管理・OS パッチ・セキュリティグループ設定が発生。常時起動で月数千円のコストも。
CloudShell での解決: EC2 踏み台不要。Console から直接 CloudShell を起動して AWS 操作可能。VPC CloudShell でプライベートリソースへのアクセスも実現。
課題4: 緊急対応時の時間制約
従来の課題: インシデント対応時に「ローカル環境が立ち上がらない」「別の PC を探す」など、環境準備に時間がかかる。
CloudShell での解決: どの PC・スマートフォンのブラウザからでも即座に CloudShell 起動可能。緊急対応をすぐ開始できる。
主な特徴
┌────────────────────────────────────────────────────────────┐
│ AWS CloudShell の主な特徴(v2026) │
├────────────────────────────────────────────────────────────┤
│ │
│ ✅ Zero Setup(セットアップ不要) │
│ • AWS Console からワンクリック起動 │
│ • AWS CLI v2・Python・Node.js 事前インストール │
│ • 現在のリージョン・アカウント自動設定 │
│ │
│ ✅ 安全な認証 │
│ • Console 認証情報を自動継承 │
│ • IAM Identity Center 対応 │
│ • 一時的なセッショントークンで認証 │
│ • アクセスキー管理不要(セキュリティ向上) │
│ │
│ ✅ 事前インストール済みツール │
│ • AWS CLI v2 / boto3 │
│ • Python 3 / pip / numpy / pandas │
│ • Node.js / npm │
│ • git / jq / zip / tar / vim / nano │
│ • kubectl / helm(EKS 管理) │
│ • Docker(コンテナイメージ build) │
│ • MySQL Client / PostgreSQL Client │
│ • aws-vault / aws-cli-local など │
│ │
│ ✅ 永続ストレージ(1 GB) │
│ • ホームディレクトリ($HOME)が保持される │
│ • セッション間でファイル・設定が保持 │
│ • リージョンごとに永続ストレージが存在 │
│ │
│ ✅ 複数シェル対応 │
│ • Bash(デフォルト) │
│ • PowerShell(Windows-like 操作) │
│ • Zsh(macOS-like 操作) │
│ • シェル間のシームレスな切り替え │
│ │
│ ✅ VPC CloudShell(プライベート環境) │
│ • VPC・Subnet・Security Group を指定 │
│ • RDS・ElastiCache・ALB などに直接接続 │
│ • VPN・SSH 不要でプライベートリソースへアクセス │
│ │
│ ✅ 使いやすい UI │
│ • タブ・分割画面対応 │
│ • ファイルのドラッグドロップアップロード │
│ • Download ボタンで即座にダウンロード │
│ • 検索・置換(Ctrl+F・Ctrl+H) │
│ │
│ ✅ IAM で細かいアクセス制御可能 │
│ • CloudShell 起動・セッション終了の権限制御 │
│ • ユーザー・ロール単位での制限 │
│ │
│ ✅ 完全無料(データ転送等は別途課金) │
│ • CloudShell 自体は無料 │
│ • S3・Lambda などの操作は通常料金 │
│ │
└────────────────────────────────────────────────────────────┘
アーキテクチャ
User Browser
│
├─ AWS Console (Authentication)
│ └─ IAM / Identity Center
│
└─ CloudShell (Managed Shell Environment)
│
├─ Amazon Linux 2023
│ ├─ AWS CLI v2
│ ├─ Python 3.x
│ ├─ Node.js
│ ├─ git
│ └─ kubectl / docker
│
├─ Runtime Environment (Auto-managed by AWS)
│ ├─ Compute (MicroVM)
│ ├─ Networking (Isolation)
│ └─ Security (IAM-based)
│
├─ Persistent Storage (1 GB / region)
│ └─ $HOME directory
│
└─ CloudWatch Integration
├─ Logs
├─ Metrics
└─ CloudTrail
Supported AWS Services
├─ S3 / EBS / EFS
├─ EC2 / Lambda / ECS / EKS
├─ RDS / DynamoDB / ElastiCache
├─ CloudFormation / CDK
└─ All AWS APIs (via CLI / SDK)
コアコンポーネント
1. Shell Environment(シェル環境)
Amazon Linux 2023 ベースの軽量 Linux 環境。Bash・PowerShell・Zsh を自由に切り替え可能。
# 現在のシェル確認
echo $SHELL
# Bash に切り替え
bash
# PowerShell に切り替え
pwsh
# Zsh に切り替え
zsh
環境変数:
$AWS_ACCOUNT_ID # 現在のアカウント ID
$AWS_REGION # 現在のリージョン
$AWS_ROLE # 現在のロール名
$HOME # /root(CloudShell)
$PS1 # シェルプロンプト(カスタマイズ可能)
2. IAM Integration(IAM 統合)
Console 認証情報を自動継承。別途クレデンシャル設定不要。
# 認証情報確認(CloudShell 内)
aws sts get-caller-identity
# 出力例:
# {
# "UserId": "AIDABCXYZ123456789",
# "Account": "111111111111",
# "Arn": "arn:aws:iam::111111111111:user/john.doe"
# }
3. Persistent Storage(永続ストレージ)
ホームディレクトリ($HOME)が永続化。セッション終了後も保持。
# ホームディレクトリの確認
pwd # /root
# ファイル作成(永続化される)
echo "config data" > config.txt
exit # セッション終了
# 次回起動時
cat config.txt # "config data" が存在
ストレージ制限: 1 GB(リージョンごと)
4. Pre-installed Tools(事前インストール)
# AWS CLI
aws --version
# Python
python3 --version
pip list
# Node.js
node --version
npm --version
# git
git --version
# kubectl
kubectl version
# Docker
docker --version
# jq(JSON processor)
echo '{"name":"test"}' | jq .name
# curl / wget
curl https://aws.amazon.com
セットアップ・初期実行
CloudShell 起動方法
方法 1: AWS Console UI から
- AWS Console 右上の [CloudShell アイコン] をクリック
- または
- AWS Console の検索欄で “CloudShell” → 実行
方法 2: AWS CLI から
# CloudShell セッション作成(ローカル CLI から)
aws cloudshell create-environment \
--region us-east-1
# CloudShell セッション一覧
aws cloudshell list-sessions
方法 3: AWS Management Console Mobile App
- AWS Mobile App でコンソールにログイン
- [CloudShell] アイコン → 起動
初期設定
# AWS CLI 設定(CloudShell では自動継承のため不要)
# 確認のみ
aws configure list
# デフォルトエディタ設定
export EDITOR=vim
export GIT_EDITOR=vim
# プロンプトのカスタマイズ
export PS1='[\u@cloudshell \W]\$ '
# 設定の永続化(.bashrc に追記)
echo 'export EDITOR=vim' >> ~/.bashrc
source ~/.bashrc
使用言語・ツール一覧
| ツール | バージョン | 用途 |
|---|---|---|
| AWS CLI | v2(最新) | AWS リソース操作 |
| Python | 3.x | スクリプト・boto3 |
| Node.js | 18.x+ | JavaScript 実行 |
| git | 2.x | バージョン管理 |
| kubectl | 最新 | EKS 管理・Pod 操作 |
| helm | 3.x | Helm チャート deploy |
| docker | 最新 | コンテナイメージ build |
| jq | 最新 | JSON パース |
| curl | 最新 | HTTP リクエスト |
| wget | 最新 | ファイルダウンロード |
| zip/unzip | 最新 | 圧縮・展開 |
| tar | 最新 | アーカイブ |
| vim/nano | 最新 | テキストエディタ |
| tmux | 最新 | セッション多重化 |
| aws-vault | 最新 | Credential 管理 |
主要ユースケース
1. S3 バケット操作
# バケット一覧
aws s3 ls
# ファイルアップロード
aws s3 cp local-file.txt s3://my-bucket/
# フォルダ同期
aws s3 sync ./local-dir s3://my-bucket/data
# ファイルダウンロード
aws s3 cp s3://my-bucket/data.csv ./
2. EC2 インスタンス管理
# インスタンス一覧(JSON 出力)
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,State.Name,InstanceType]' --output table
# インスタンス起動
aws ec2 start-instances --instance-ids i-1234567890abcdef0
# インスタンス停止
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
# Security Group ルール追加
aws ec2 authorize-security-group-ingress \
--group-id sg-123456 \
--protocol tcp \
--port 443 \
--cidr 0.0.0.0/0
3. Lambda 関数の deploy・update
# Lambda 関数の更新
zip function.zip index.js
aws lambda update-function-code \
--function-name my-function \
--zip-file fileb://function.zip
# 関数の invoke テスト
aws lambda invoke \
--function-name my-function \
--payload '{"key":"value"}' \
response.json
cat response.json
4. CloudFormation スタック操作
# スタック作成
aws cloudformation create-stack \
--stack-name my-stack \
--template-body file://template.yaml
# スタック更新
aws cloudformation update-stack \
--stack-name my-stack \
--template-body file://template.yaml
# スタック削除
aws cloudformation delete-stack --stack-name my-stack
# スタック イベント監視
aws cloudformation describe-stack-events \
--stack-name my-stack \
--query 'StackEvents[0:10]' \
--output table
5. EKS クラスター・Pod 管理
# kubeconfig 設定
aws eks update-kubeconfig \
--name my-cluster \
--region us-east-1
# Pod 確認
kubectl get pods -A
# Deployment deploy
kubectl apply -f deployment.yaml
# ログ確認
kubectl logs -f deployment/my-app
6. RDS インスタンス管理
# RDS インスタンス一覧
aws rds describe-db-instances \
--query 'DBInstances[*].[DBInstanceIdentifier,DBInstanceStatus]' \
--output table
# MySQL に接続
mysql -h rds-instance.123456789.us-east-1.rds.amazonaws.com \
-u admin \
-p \
mydatabase
# バックアップ作成
aws rds create-db-snapshot \
--db-instance-identifier my-db \
--db-snapshot-identifier my-db-backup-$(date +%s)
7. DynamoDB テーブル操作
# テーブル一覧
aws dynamodb list-tables
# アイテム追加
aws dynamodb put-item \
--table-name MyTable \
--item '{"id":{"S":"123"},"name":{"S":"John"}}'
# アイテム検索
aws dynamodb get-item \
--table-name MyTable \
--key '{"id":{"S":"123"}}'
8. CloudWatch Logs 確認
# ログストリーム一覧
aws logs describe-log-groups \
--query 'logGroups[*].logGroupName' \
--output table
# ログストリーム内容確認
aws logs tail /aws/lambda/my-function --follow
# Logs Insights クエリ
aws logs start-query \
--log-group-name /aws/lambda/my-function \
--start-time $(date -d '1 hour ago' +%s) \
--end-time $(date +%s) \
--query-string 'fields @timestamp, @message | filter @message like /ERROR/'
スクリプト実行・automation
Bash スクリプト例
#!/bin/bash
# EC2 インスタンスのコスト推定
REGION="us-east-1"
INSTANCE_TYPE="t3.medium"
HOURS_PER_MONTH=730
# オンデマンド料金取得(AWS Pricing API)
PRICE=$(aws ec2 describe-spot-price-history \
--instance-types $INSTANCE_TYPE \
--start-time $(date -u -d '1 day ago' +%Y-%m-%dT%H:%M:%S) \
--region $REGION \
--query 'SpotPriceHistory[0].SpotPrice' \
--output text)
# 月額コスト計算
MONTHLY_COST=$(echo "scale=2; $PRICE * $HOURS_PER_MONTH" | bc)
echo "Instance Type: $INSTANCE_TYPE"
echo "Hourly Price: \$$PRICE"
echo "Monthly Cost (730h): \$$MONTHLY_COST"
Python スクリプト例
#!/usr/bin/env python3
# S3 バケットのサイズ計算
import boto3
from pathlib import Path
s3 = boto3.client('s3')
def calculate_bucket_size(bucket_name):
"""Calculate total size of S3 bucket"""
paginator = s3.get_paginator('list_objects_v2')
pages = paginator.paginate(Bucket=bucket_name)
total_size = 0
object_count = 0
for page in pages:
if 'Contents' in page:
for obj in page['Contents']:
total_size += obj['Size']
object_count += 1
return total_size, object_count
def format_size(bytes_size):
"""Convert bytes to human-readable format"""
for unit in ['B', 'KB', 'MB', 'GB', 'TB']:
if bytes_size < 1024:
return f"{bytes_size:.2f} {unit}"
bytes_size /= 1024
return f"{bytes_size:.2f} PB"
if __name__ == "__main__":
bucket = "my-data-bucket"
size, count = calculate_bucket_size(bucket)
print(f"Bucket: {bucket}")
print(f"Total Objects: {count}")
print(f"Total Size: {format_size(size)}")
VPC CloudShell
プライベート VPC リソースに直接接続できる CloudShell 環境。RDS・ElastiCache・ALB などへのアクセスが可能。
# VPC CloudShell 環境作成
aws cloudshell create-environment \
--name vpc-cloudshell \
--vpc-config \
SecurityGroupIds=sg-12345678 \
SubnetIds=subnet-87654321
# VPC CloudShell セッション開始
aws cloudshell start-session \
--environment-id $ENV_ID
# プライベート RDS に接続
mysql -h my-rds-instance.c123456.us-east-1.rds.amazonaws.com \
-u admin \
-p \
mydb
# ElastiCache(Redis)に接続
redis-cli -h my-redis.12345.ng.0001.use1.cache.amazonaws.com \
-p 6379
VPC CloudShell の制約:
- Persistent Storage なし(ホームディレクトリは 20-30 分で削除)
- Session は 20-30 分の非アクティブで自動終了
ファイルのアップロード・ダウンロード
UI からのアップロード
- CloudShell 画面 → 右上 [メニュー ≡] → [Upload file]
- → ファイルを選択 → アップロード完了
または
- CloudShell コンソールに直接ドラッグドロップ
UI からのダウンロード
- CloudShell 画面 → 右上 [メニュー ≡] → [Download file]
- → ファイルパスを入力(例:./result.csv)
- → ブラウザダウンロード
CLI からのアップロード・ダウンロード
# S3 経由でアップロード
aws s3 cp ~/myfile.txt s3://temp-bucket/
# CloudShell で受け取り
aws s3 cp s3://temp-bucket/myfile.txt .
# CloudShell から出力
aws s3 cp ./result.csv s3://temp-bucket/
# ローカルでダウンロード
aws s3 cp s3://temp-bucket/result.csv ~/
Session 管理・タイムアウト
Session ライフサイクル
┌─────────────────────────────────────┐
│ CloudShell 起動(Console UI) │
├─────────────────────────────────────┤
│ Session Active(インタラクティブ) │
│ Timeout: 120 分(非アクティブ) │
├─────────────────────────────────────┤
│ Session Inactive │
│ → 自動終了 │
├─────────────────────────────────────┤
│ ホームディレクトリ保持 │
│ (アップロード日から 1 年) │
└─────────────────────────────────────┘
Session 復旧機能
# 前回のセッションを復旧
# CloudShell 起動時、前回のタブ・コマンド履歴が復旧される
# 明示的なセッション終了
exit # または Ctrl+D
# Session 一覧確認
aws cloudshell list-sessions
セキュリティ・権限管理
IAM Policy 例
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCloudShellAccess",
"Effect": "Allow",
"Action": [
"cloudshell:CreateEnvironment",
"cloudshell:StartSession",
"cloudshell:SendCommand"
],
"Resource": "*"
},
{
"Sid": "AllowS3Access",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::my-cloudshell-bucket",
"arn:aws:s3:::my-cloudshell-bucket/*"
]
}
]
}
Safe Paste セキュリティ機能
CloudShell には Safe Paste が標準搭載。複数行のテキストペースト時に、スクリプトに悪意のあるコマンドがないか確認。
- CloudShell コンソールに複数行の Bash スクリプトをペースト
- → ポップアップ:「このテキストを貼り付けますか?」
- → ユーザーが確認後、[Confirm] で実行
カスタマイズ・環境設定
Bash Profile カスタマイズ
# ~/.bashrc の編集
vim ~/.bashrc
# 追加内容例:
# エイリアス設定
alias ll='ls -la'
alias s3ls='aws s3 ls'
alias getmyip='curl https://checkip.amazonaws.com'
# 関数定義
function ec2list() {
aws ec2 describe-instances \
--query 'Reservations[*].Instances[*].[InstanceId,State.Name]' \
--output table
}
# 環境変数
export AWS_DEFAULT_REGION=us-east-1
export AWS_PAGER="" # AWS CLI ページャー無効化
# 設定を反映
source ~/.bashrc
PowerShell Profile カスタマイズ
# $PROFILE の編集
Edit-Profile
# 追加内容例:
# エイリアス設定
Set-Alias -Name ll -Value Get-ChildItem
Set-Alias -Name ec2list -Value Get-EC2Instances
# 関数定義
function Get-S3Buckets {
aws s3 ls | Write-Host
}
# プロンプトのカスタマイズ
function prompt {
"PS [$env:AWS_REGION]> "
}
テーマ・フォントサイズ変更
CloudShell UI 右上 [メニュー ≡] → [Preferences]
├─ Theme: Dark / Light
├─ Font Size: 小 / 中 / 大
├─ Terminal Width: 狭 / 標準 / 広
└─ Keybindings: Emacs / Vim
既存ツールとの比較
| 観点 | CloudShell | Local CLI | Cloud9 | Session Manager |
|---|---|---|---|---|
| セットアップ | 0 分 | 30 分 | 10 分 | 5 分 |
| クレデンシャル管理 | 自動 | 手動 | 手動 | 自動 |
| 永続ストレージ | 1 GB | ∞ | 制限あり | なし |
| IDE 機能 | △ | ✅ | ✅ | △ |
| VPC アクセス | ✅ | ❌ | △ | ✅ |
| コスト | 無料 | 無料 | $1-10/月 | 無料 |
| 学習曲線 | 低 | 低 | 中 | 中 |
トラブルシューティング
| 症状 | 原因 | 対策 |
|---|---|---|
| CloudShell が起動しない | ブラウザキャッシュ問題 | ブラウザキャッシュ削除 / Private Window で試行 |
| AWS CLI コマンドが見つからない | PATH 設定誤り | which aws で確認 / source ~/.bashrc |
| 永続ストレージが満杯 | 1 GB を超過 | 不要なファイルを削除 / S3 に移動 |
| VPC CloudShell が接続できない | Security Group ルール不足 | Outbound Rule を確認(すべて許可が必須) |
| ファイルダウンロードできない | ブラウザ設定 | ダウンロード フォルダ権限確認 |
| Session タイムアウト | 120 分非アクティブ | 定期的に何か入力(例:echo コマンド) |
パフォーマンス最適化
最適化施策 効果
──────────────────────────────────────────
出力結果をファイルにリダイレクト 高速化
AWS CLI --query で結果絞り込み ネットワーク削減
複数コマンドをスクリプト化 時間短縮
API Rate Limit 対応 安定性向上
S3 Batch Operations 活用 大規模操作最適化
コスト管理
CloudShell 自体は無料
ただし操作対象のサービスは課金対象
例:
S3 ファイル転送 : データ転送料金
EC2 起動 : 実行時間に応じた料金
Lambda 実行 : 実行回数・時間に応じた料金
CloudFormation : リソース料金
コスト削減:
- インシデント対応時の EC2 踏み台不要 → コスト削減
- CloudShell で小規模作業を完結 → 余分なサーバー不要
- S3 を一時バッファとして活用 → Persistent Storage の効率化
ベストプラクティス
✅ Do: 推奨プラクティス
1. 定期的なストレージクリーンアップ
# 不要なファイル削除
rm -rf ~/old-data ~/temp-files
# ストレージ使用量確認
du -sh ~
2. スクリプト化して再利用可能に
# deploy-stack.sh に保存
aws cloudformation deploy \
--template-file template.yaml \
--stack-name my-stack \
--parameter-overrides Environment=prod
3. 権限は最小限に
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": "arn:aws:s3:::specific-bucket"
}
❌ Don’t: アンチパターン
1. アクセスキー・シークレットキーを保存
# ❌ 危険
echo "AKIAIOSFODNN7EXAMPLE" > ~/.aws/credentials
# ✅ 正解:CloudShell の自動認証を使用
aws sts get-caller-identity
2. 本番スクリプトの直接実行
# ❌ 危険:検証なしで本番実行
aws ec2 terminate-instances --instance-ids i-123456
# ✅ 正解:--dry-run で事前検証
aws ec2 terminate-instances --instance-ids i-123456 --dry-run
2025-2026 最新動向
-
IDE 統合(計画中)
- VS Code Remote SSH 対応予定
-
AI Copilot
- AWS CLI コマンド自動提案(2026年)
-
Persistent Environment
- カスタム環境の保存・チーム共有(Preview)
-
Enhanced VPC Support
- Private Subnet でのインターネットアクセス対応
-
Graviton Support
- arm64 アーキテクチャでの高速化(計画中)
学習リソース
実装例・チェックリスト
- [ ] CloudShell 起動確認
- [ ] AWS CLI バージョン確認
- [ ] IAM 認証情報の自動継承確認
- [ ] 永続ストレージ($HOME)の動作確認
- [ ] ファイル upload/download テスト
- [ ] VPC CloudShell 必要性確認
- [ ] ~/.bashrc カスタマイズ
- [ ] 定期ストレージクリーンアップスケジュール設定
まとめ
AWS CloudShell は「ローカルセットアップなしに、ブラウザから即座に AWS を操作できるマネージドシェル環境」 です。AWS CLI・Python・git・kubectl が事前インストールされており、Console 認証情報を自動継承するため、セキュリティと利便性の両面で優れています。
主な価値提案:
- Zero Setup - インストール・設定不要
- Secure - アクセスキー管理不要
- Always Available - どの端末のブラウザからでも起動可能
- Free - CloudShell 自体は無料
適用判断:
- ✅ AWS 初学者の学習環境
- ✅ インシデント対応・緊急対応
- ✅ 小規模な AWS 操作
- ✅ 新しい PC・ゲスト端末での作業
- ❌ 大規模開発・IDE 機能必須 → Cloud9・ローカル CLI 検討
参考文献
最終更新:2026-04-26 バージョン:v2.0