アプリケーション移行ワークショップやってみた(1) – 環境の準備

AWSでは、実際に手を動かして学ぶワークショップのコンテンツも多数公開されています。
本記事は、それらのうち「アプリケーション移行ワークショップ」を実施した記録です。

このワークショップを通じて、AWSクラウドに移行する方法のうち、以下のものを学ぶことができます。

  • AWS Database Migration Service(AWS DMS)を使ったデータベースのリプラットフォーム
  • AWS Application Migration Service(AWS MGN)を使ったウェブサーバのリホスト
  • Amazon Elastic Container Service(Amazon ECS)で稼働するコンテナへの移行による、ウェブサーバのモダナイゼーション

今回は全5回のうちの第1回として、ワークショップ環境の準備を行います。

目次
  1. はじめに
    1. 作業環境の説明
  2. 環境の準備
    1. AWS CloudFormationテンプレートでワークショップ環境を作成
    2. AWS CloudFormationの出力確認
    3. 作成した移行元(ソース)環境について
    4. 作成した移行先(ターゲット)環境について
    5. 主要リソースの説明
    6. ApplicationMigrationWorkshopスタックの出力の説明
  3. まとめ

はじめに

このワークショップのドキュメントは、リリース後に更新が行われていますが、本記事執筆時点では日本語版が更新されていないため、英語版を参照します。

環境を作成する際の設定値はワークショップのドキュメント記載の値を指定しており、また、明記しない場合はAWSマネジメントコンソールのデフォルト値を使用しています。

ワークショップのマニュアルはAWSマネジメントコンソールのスクリーンショットを用いて操作が説明されています。
本記事では、AWSマネジメントコンソールの操作や設定値はテキストで記載するにとどめ、かわりに「今何を作っているのか」といった情報などを載せるようにしたいと思います。

作業環境の説明

今回の作業では、自身のWindows 10のクライアントPCで、AWS CLIの実行や、AWSマネジメントコンソールの操作を行います。

使用するソフトウェアのインストール方法は述べません。
ご参考までにクライアントPCインストール済のソフトウェアは以下のとおりです。

今回クライアントPCで使用するソフトウェア

> git --version
git version 2.33.0.windows.2
 
> aws --version
aws-cli/2.3.5 Python/3.8.8 Windows/10 exe/AMD64 prompt/off

環境の準備

マニュアル:https://application-migration-with-aws.workshop.aws/en/intro.html

この章ではAWS CloudFormationを用いて、移行元想定の環境と、移行先のネットワーク部分をAWSへ作成します。

AWS CloudFormationテンプレートでワークショップ環境を作成

ワークショップで公開されているAWS CloudFormationテンプレートをデプロイし、環境を作成します。

クライアントPCで以下のコマンドを実行します。

AWS CloudFormationテンプレートのデプロイ

## GitHubからワークショップのリソースをcloneする。
> git clone https://github.com/aws-samples/application-migration-with-aws-workshop.git

## AWS CloudFormationテンプレートのあるディレクトリへ移動する。
> cd application-migration-with-aws-workshop/resources/

## AWS CloudFormationテンプレートを、ApplicationMigrationWorkshopというスタック名でデプロイする。
> aws cloudformation deploy --template-file ./cloudformation.yml --stack-name ApplicationMigrationWorkshop `
    --region us-west-2 --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND

作成作業自体は以上です。
AWS CloudFormationの出力結果や、作成環境について見ていきます。

AWS CloudFormationの出力確認

使用したAWS CloudFormationテンプレートは作成した環境の情報を出力するように定義されており、 出力された値は今後の手順で使用します。
出力内容については記事の最後に説明することとし、ここでは出力された情報をAWS CLIやAWSマネジメントコンソールで確認します。

ApplicationMigrationWorkshopスタックの出力を確認(AWS CLIの場合)

クライアントPCから、AWS CLIでAWS CloudFormationのApplicationMigrationWorkshopスタックの出力を確認します。
コマンドは以下のとおりです。

> aws cloudformation describe-stacks --stack-name ApplicationMigrationWorkshop --region us-west-2 --query 'Stacks[*].Outputs'
  
[
    [
        {
            "OutputKey": "DBServerUsername",
            "OutputValue": "ubuntu",
            "Description": "Username for database server"
        },
        {
            "OutputKey": "WebServerUsername",
            "OutputValue": "ubuntu",
            "Description": "Username for webserver"
        },
        {
            ...(略)...

ApplicationMigrationWorkshopスタックの出力を確認(AWSマネジメントコンソールの場合)

AWSマネジメントコンソールで、AWS CloudFormationのApplicationMigrationWorkshopスタックの出力を確認します。

WebブラウザでAWSマネジメントコンソールにアクセスします。

  • 「CloudFormation > スタック」へ移動します
  • スタックの名前(ApplicationMigrationWorkshop)をクリックし、ApplicationMigrationWorkshopスタックのページを表示します
  • ApplicationMigrationWorkshopページの「出力」タブをクリックすると「出力」セクションに情報が出力されています

作成した移行元(ソース)環境について

ワークショップのドキュメントに記載されている図に少し補足を加えたものを用意しました。
作成した移行元(ソース)環境は以下のようなイメージです。

「AWS CloudFormationの出力確認」で参照した「WebServerDNSName」の値へWebブラウザでアクセスすると、移行元想定として用意されたECサイトを確認できます。

作成した移行先(ターゲット)環境について

こちらもワークショップのドキュメントに記載されている図に少し補足を加えたものを用意しました。
作成した移行先(ターゲット)環境は以下のようになっています。

主要リソースの説明

作成したAWSリソースのうち、次回以降の手順で参照するものを簡単に説明します。

種類 作成されるリソースの名前 説明
EC2インスタンス Source-Webserver 移行元(ソース)のウェブサーバです。
AWS Application Migration Service(AWS MGN)を用いて、移行先環境のAmazon EC2に移行します
Source-DBServer 移行元(ソース)のデータベースサーバです。
AWS Database Migration Service(AWS DMS)を用いて、移行先環境のAmazon RDSに移行します
VPC TargetVPC 移行先(ターゲット)環境のVPCです
サブネット TargetVPC-public-a
TargetVPC-public-b
移行先(ターゲット)環境のパブリックサブネットです。
AWS DMSやAWS MGN、移行後のウェブサーバ(Amazon EC2)、コンテナ用のロードバランサーが使用します
TargetVPC-private-a-web
TargetVPC-private-b-web
移行先(ターゲット)環境のプライベートサブネットです。
Amazon Elastic Container Service(Amazon ECS)のタスクが使用します
TargetVPC-private-a-db
TargetVPC-private-b-db
移行先(ターゲット)環境のプライベートサブネットです。
移行後のデータベース(Amazon RDS)が使用します

ApplicationMigrationWorkshopスタックの出力の説明

「AWS CloudFormationの出力確認」で確認した、ApplicationMigrationWorkshopスタックの「出力」について簡単に説明します。

説明
AppMigServiceAccessKey アクセスキーIDです。
移行元(ソース)のウェブサーバへApplication Migration Serviceのレプリケーションエージェントをインストールする際に使用します
AppMigServiceSecretAccessKey シークレットアクセスキーです。
移行元(ソース)のウェブサーバへApplication Migration Serviceのレプリケーションエージェントをインストールする際に使用します
CloudEndureUserAccessKey アクセスキーIDです。
CloudEndure Migrationに設定するものですが、今回はApplication Migration Serviceを用いるため使用しません
CloudEndureUserSecretAccessKey シークレットアクセスキーです。
CloudEndure Migrationに設定するものですが、今回はApplication Migration Serviceを用いるため使用しません
DBServerDNSName 移行元(ソース)のデータベースサーバ(Source-DBServer)のDNS名です。
ログインで用います
DBServerUsername 移行元(ソース)のデータベースサーバ(Source-DBServer)のユーザ名です。
ログインで用います
SSHKeyURL 移行元のデータベースサーバ、および移行元・移行先のウェブサーバのSSH Keyです。
ログインで用います
WebServerDNSName 移行元(ソース)のウェブサーバ(Source-Webserver)のDNS名です。
ログインで用います
WebServerUsername 移行元のウェブサーバ(Source-Webserver)、および移行先のウェブサーバ(Webserver)のユーザ名です。
ログインで用います

まとめ

  • AWS CloudFormationで、移行元想定の環境(ソース)と、移行先の環境(ターゲット)を作成しました
  • AWS CloudFormationで作成したリソースのうち、次回以降の作業で参照するリソースを確認しました
  • AWS CloudFormationで作成したApplicationMigrationWorkshopスタックの出力値を確認しました。この出力値は次回以降の作業で利用します
  • 次回は、AWS Database Migration Service(AWS DMS)を用いて、ソース環境のデータベースサーバーをターゲット環境へ移行します