AWS CLIとGoogle Cloud CLIで実現するクラウドインフラ自動化の手法と実践

クラウドインフラストラクチャの自動化は、迅速な環境構築と運用の効率化、人的エラーの削減に貢献します。手作業での構成や設定を避けることで、システムの再現性を高め、開発のスピードも向上させられます。AWSやGoogle Cloud Platform (GCP) などの主要なクラウドサービスプロバイダーは、自動化に適したコマンドラインインターフェース (CLI) を提供しています。

この記事では、AWS CLIとGoogle Cloud CLIを使ったクラウドインフラストラクチャの自動化手法について解説し、具体的な活用例やベストプラクティスを紹介します。

AWS CLIとGoogle Cloud CLIの概要

AWS CLIGoogle Cloud CLIは、それぞれAWSとGoogle Cloud Platformの管理操作をコマンドライン上で実行できるツールです。

AWS CLI

AWS CLIは、AWSサービスをコマンドラインで管理するためのツールです。主な特徴は以下の通りです。

  • 多くのAWSサービスに対応
  • スクリプトを利用した一括操作や自動化が可能
  • SDKと組み合わせてプログラムからの操作が可能

Google Cloud CLI

Google Cloud CLI (またはgcloud CLI) は、GCPリソースの管理を効率化するコマンドラインツールです。主な特徴は以下の通りです。

  • GCPのほぼ全サービスに対応
  • スクリプトによる効率的な操作が可能
  • クロスプラットフォーム対応

AWS CLIとGoogle Cloud CLIのインストールと設定

AWS CLIとGoogle Cloud CLIを使用するには、それぞれのツールのインストールと設定が必要です。

AWS CLIのインストールと設定

AWS CLIをインストールします(Linux/Macの場合):

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /

設定コマンドを実行します:

aws configure

アクセスキーやリージョンを入力することで、AWS CLIが利用できるようになります。

Google Cloud CLIのインストールと設定

Google Cloud CLIをインストールします(Linux/Macの場合):

curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-367.0.0-darwin-x86_64.tar.gz
tar zxvf google-cloud-sdk-367.0.0-darwin-x86_64.tar.gz
./google-cloud-sdk/install.sh

認証と設定を行います:

gcloud init

AWS CLIとGoogle Cloud CLIでインフラを自動構築する

AWS CLIやGoogle Cloud CLIを使って、一般的なインフラストラクチャ(仮想マシン、ネットワーク、ストレージ)を簡単に構築する方法を見ていきましょう。

AWS CLIでのEC2インスタンスの作成

AWS CLIを使用してEC2インスタンスを作成するには、以下のようなコマンドを実行します。

aws ec2 run-instances --image-id ami-12345abc --count 1 --instance-type t2.micro --key-name MyKeyPair --security-group-ids sg-12345 --subnet-id subnet-12345

このコマンドでは、指定したAMI ID、インスタンスタイプ、キーペア、セキュリティグループ、サブネットに基づきインスタンスが作成されます。

Google Cloud CLIでのCompute Engineインスタンスの作成

GCPで同様に仮想マシンを作成するには、以下のようなgcloudコマンドを使用します。

gcloud compute instances create my-vm --zone=us-central1-a --machine-type=e2-medium --subnet=default --image-family=debian-10 --image-project=debian-cloud

このコマンドで、指定されたゾーン、マシンタイプ、サブネット、イメージに基づいてインスタンスが作成されます。

AWS CLIとGoogle Cloud CLIを組み合わせたワークフローの自動化

AWS CLIとGoogle Cloud CLIを組み合わせて複数のクラウドプロバイダーでインフラストラクチャを管理することも可能です。例えば、AWSにS3バケットを作成し、GCPにデータをバックアップする自動化システムを構築することができます。

例: AWSからGCPへのデータ転送

S3バケットにデータを保存する:

aws s3 cp myfile.txt s3://my-bucket

GCP Storageにデータを転送する:

gsutil cp s3://my-bucket/myfile.txt gs://my-gcp-bucket

このようにして、AWSとGCPを連携させることができます。

CLIスクリプトによる自動化の例

以下は、AWSとGCPの両方に対するリソースを管理する簡単なスクリプトです。

#!/bin/bash

# AWSにS3バケットを作成
aws s3 mb s3://my-backup-bucket

# Google CloudでCompute Engineインスタンスを起動
gcloud compute instances create my-backup-vm --zone=us-central1-a --machine-type=e2-medium

# S3バケットのデータをGCP Storageにコピー
aws s3 cp s3://my-backup-bucket/myfile.txt gs://my-gcp-backup

このスクリプトを実行することで、S3バケットとGCPのストレージを連携させたデータの自動転送が可能になります。

セキュリティとベストプラクティス

クラウドインフラストラクチャの自動化においては、セキュリティも非常に重要です。AWS CLIとGoogle Cloud CLIを使用する際のベストプラクティスとして、以下の点に留意しましょう。

  • 最低限の権限でアクセスキーやアカウントを使用する
  • IAMロールを活用して一時的なアクセス権を付与する。
  • APIキーやシークレットをコードにハードコーディングしない

まとめと今後の展望

AWS CLIとGoogle Cloud CLIの使い方を習得することで、クラウドインフラストラクチャの自動化が容易になります。

これにより、リソース管理の効率を向上させ、より柔軟なシステム運用が可能です。

さらに、異なるクラウドプロバイダー間の連携も容易に行えるため、ハイブリッドクラウドやマルチクラウド戦略にも応用できます。


演習問題

問題1

AWS CLIを使用して、以下の条件でEC2インスタンスを作成するコマンドを書いてください。

  • AMI ID: ami-0abcdef1234567890
  • インスタンスタイプ: t2.micro
  • キーペア名: myKey
  • セキュリティグループ: sg-123abc
  • サブネットID: subnet-0abcd1234

問題2

Google Cloud CLIを使用して、以下の条件でCompute Engineインスタンスを作成するコマンドを書いてください。

  • インスタンス名: my-instance
  • ゾーン: us-west1-b
  • マシンタイプ: n1-standard-1
  • イメージファミリー: ubuntu-1804-lts
  • イメージプロジェクト: ubuntu-os-cloud

問題3

AWS S3に保存したファイルをGoogle Cloud Storageに転送するシェルスクリプトを作成してください。ファイル名は data.txtとし、AWSのバケット名をmy-aws-bucket、Google Cloudのバケット名をmy-gcp-bucketとしてください。

解答例

解答1

aws ec2 run-instances --image-id ami-0abcdef1234567890 --count 1 --instance-type t2.micro --key-name myKey --security-group-ids sg-123abc --subnet-id subnet-0abcd1234

解答2

gcloud compute instances create my-instance --zone=us-west1-b --machine-type=n1-standard-1 --image-family=ubuntu-1804-lts --image-project=ubuntu-os-cloud

解答3

#!/bin/bash

# S3バケットからファイルをコピー
aws s3 cp s3://my-aws-bucket/data.txt .

# GCPバケットにファイルをアップロード
gsutil cp data.txt gs://my-gcp-bucket