Azureポータルから、AWS上のEC2インスタンスを作成する

2021.01.02

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

AzureポータルからAWS上の操作や、自動化を行う方法があります。 Microsoftのドキュメント上ではAzure Automationを使う方法が案内されています。

手法としては、Azure AutomationでAWS Tools for PowerShellを操作することで、AWSへアクセスすることで実現します。

今日はこちらを試してみました。

Azure Automation とは

Azure Automationについては下記を参照してください。
構成管理やジョブなどの自動化されたプロセスの作成・管理が出来るサービスです。

無料枠あります。

Automationアカウント作成

AutomationはAzure Storageのようにアカウント単位で管理されます。
まずはAutomationアカウントを作成します。

検索ウインドウからAutomationアカウントを選択しアカウント作成に進みます。

リソースグループ、リージョンは任意で良いです。

AWS認証情報

AWSへアクセスするため、Automationアカウントの資格情報にIAMユーザーの資格情報を設定する形になります。

Administrator権限のIAMユーザーを作成しました。

Automationサイドメニューの資格情報からIAMユーザーの認証情報を入力しましょう。

注意点としては、名前は"AWScred"にしてください。
他の名前にした場合は後述するPowerShellスクリプト上のパラメータをあわせて変更する必要が出てきます。

Azure Automationの資格情報については下記を参照してください。

Azure Automation でセキュリティ保護される資産としては、資格情報、証明書、接続、暗号化された変数などがあります。 これらの資産は、各 Automation アカウント用に生成された一意のキーを使って暗号化され、Azure Automation に保存されます。 Azure Automation では、キーはシステムによって管理される Key Vault に格納されます。 セキュリティで保護された資産を保存する前に、Automation によって Key Vault からキーが読み込まれ、それを使用して資産が暗号化されます。

AWS機能の追加

AutomationアカウントはデフォルトではAWSの操作は出来ないため、ギャラリーからAWSPowerShellをインポートします。

サイドバーから"モジュール"を選択してください。

インポート済みモジュールの一覧が表示されます。
"ギャラリーを参照"を選択してください。

AWSPowerShellを検索し、選択してください。

インポートします。

モジュール一覧にて"AWSPowerShell"がインポートされていることを確認してください。

ここまでで実行の基盤が整いました。

Runbook作成

Runbookを作成します。
スクリプトのテンプレートがPowerShellギャラリーにて公開されているので、ローカル端末のPowerShellにて以下をダウンロードを行いましょう。
※ このスクリプトのオーナーはAzureチームの方ですが、Microsoft公式のスクリプトではないと思いますので、その点ご認識のうえご利用ください。

PS /Users/iwasa.takahito> Save-Script -Name New-AwsVM -Path /Users/iwasa.takahito/Downloads/

スクリプトがダウンロード出来たら任意のエディタで開いてみてください。

上記赤枠部分は作成したいEC2インスタンスにあわせて変更するパラメータです。

EC2Image名については、AWS Tools for PowerShellをインストール済みのローカル環境にて取得しました。

PS /Users/iwasa.takahito> Get-EC2ImageByName -ProfileName iwasa 
WINDOWS_2016_BASE
WINDOWS_2016_NANO
WINDOWS_2016_CORE
WINDOWS_2016_CONTAINER
WINDOWS_2016_SQL_SERVER_ENTERPRISE_2016
WINDOWS_2016_SQL_SERVER_STANDARD_2016
WINDOWS_2016_SQL_SERVER_WEB_2016
WINDOWS_2016_SQL_SERVER_EXPRESS_2016

今回は"WINDOWS_2016_BASE"にしました。

スクリプトはのちほどコピーペーストしますので開いておいてください。

Azureポータルに戻りまして、Runbookのメニューから Runbook -> Runbookの作成 でRunbookを作成してください。

名前は任意で良いですが、Runbookの種類は"PowerShell"を選択してください。

作成出来たらスクリプト変更画面が表示されると思うので、先程変更したスクリプトを貼り付けてください。

"公開"ボタンを押して準備完了です。

Runbook実行

RunbookはスケジューリングもできるしWebhook実行も出来ます。
今回は手動で開始します。

開始ボタンを押してください。
EC2インスタンスの作成パラメータが表示されます。

VMNAMEだけ入力し、他は今回は空でOKです。

ジョブが実行出来たらAWSマネジメントコンソールを確認しましょう。

※ログを有効化し、Azureポータル上でジョブの実行状況を確認することも出来るのですが今回は割愛しました。詳細は冒頭のリンクを参照してください。

EC2が作成されました。

まとめ

今回はAzureからEC2インスタンスの作成を行いました。
編集したPowerShellスクリプトを見てみてください。
内容としてはNew-EC2Instanceコマンドを実行しています。

Azureで操作することの是非はともかくとして、リソースの自動起動・停止を始め様々なことが実現できそうですね。