Shibata(44)33しばたです。CLIやPowerShellを使ってコマンドやスクリプトで作成することも多いかと思います。PowerShellの使い方を紹介します。前提条件VPCやサブネット、セキュリティグループの設定は一通り設定済みの環境を想定しています。EC2キーペアを新しく発行し、新規のEC2インスタンスを作成する流れを紹介します。CoreであればWindows以外の環境からも試すことができより多くの人にリーチできるので最新バージョンを選択します。Coreのインストール手順はGitHubのドキュメントか私が使ってるスクリプトを参考にしてください。Galleryからインストールします。CurrentUser認証の設定などは私の個人ブログを参照してください。PowerShellを使ってみた以降の手順ではSet-DefaultAWSRegionとSet-AWSCredentialを呼び出し既定のリージョンとプロファイルが指定済みの前提とします。test-profile以降で紹介するコマンドではリージョンやプロファイル指定が省略されています。環境に応じて適宜リージョンやプロファイルを含む認証情報の指定を行ってください。作成するインスタンスのAMIはGet-EC2Imageコマンドレットで検索することができます。このコマンドレットを引数なしで実行すると全種類、全バージョンのAMIを検索して使い物になりませんのでFilterパラメーターを使い検索条件を指定してやるのが良いです。このFilterパラメーターはAmazon.EC2.Model.Filter[]と独自の型の配列を受け取るのですが、ハッシュテーブルで代用できるため以下の例の様に使う方がPowerShellとして自然ですし記述も楽になるかと思います。指定可能なパラメーターについてはリファレンスを参照してください。2019を検索する例を紹介します。短いコードですので記載してるコメントだけで十分意味は通るとかと思います。AMIが欲しい場合であればGet-EC2ImageByNameコマンドレットも使えます。Format-ListEC2キーペアの作成EC2キーペアの作成はNew-EC2KeyPairコマンドレットで行えます。何も考えずに実行すると「フィンガープリントと鍵情報がコンソールに出力されて終わり」となってしまうので以下の様にキー情報を変数に格納してファイル出力してやると良いでしょう。(Windows)ここから本題のEC2インスタンスの作成について説明します。インスタンスの作成はNew-EC2Instanceコマンドレットで行えます。このコマンドレットはAMIイメージIDを指定するパターンと起動テンプレートを指定する2パターン存在するのですが今回はAMIイメージを指定するパターンを紹介します。EC2インスタンスを作成するだけあって指定可能なパラメーターが多いため、個々のパラメーターについてはリファレンスで確認してください。Cmdlet本記事では少し実践的な例を紹介します。上記の条件でインスタンスを作成するスクリプトが以下になります。コメントである程度説明してますが補足は後述します。$true}MinCount、MaxCountNew-EC2Instanceでは一回の実行で複数インスタンスを同時に作成することができ、コマンドレットの戻り値もインスタンスそのものではなくReservationを返します。一応最小作成数がMinCount、最大作成数がMaxCountで、基本的にMaxCountの作成を試みるのですがリソース制限に引っかかった際の挙動についてはよくわかりません。CLIではこの様なパラメーターは無く単純に--count引数で作成数を指定するだけです。このパラメーターについては両方同じ数にしておくのが無難だと思います。サブネット、セキュリティグループの指定SubnetIdパラメーターでインスタンスを配置するサブネットを、SecurityGroupIdパラメーターで関連付けるセキュリティグループを指定します。どちらもID指定ですが、一般的な環境であればNameタグを使って名前付けしてると思いますので、それぞれGet-EC2Subnet、Get-EC2SecurityGroupコマンドレットを使い、名前からIDを取得する様にしています。BlockDeviceMappingルートデバイスおよび追加EBSボリュームの設定はBlockDeviceMappingパラメーターで指定します。.NETのAmazon.EC2.Model.EbsBlockDevice型をそのまま指定します。この型では追加するディスクを表すAmazon.EC2.Model.EbsBlockDevice型のオブジェクトをEbsプロパティに、デバイス名をDeviceNameプロパティに設定してやります。この記述は生のSDKそのままであまりPowerShellらしくないため若干わかりにくいです。本記事ではやりませんが簡単な関数を作ってこの記述をラップしてやるとよりPowerShellらしくなると思います。ユーザーデータユーザーデータはUserDataプロパティに処理を記述します。デフォルトではBASE64エンコードした後の値を入れるのですが、EncodeUserDataパラメーターを指定することでエンコード前の値を設定でき、より直感的なコードになります。ディスクの初期化についてはこちらの記事をご覧ください。Coreのインストールスクリプトを記述してます。Coreが利用可能になります。(個人作成)タグ付け【2019.03.08修正】EC2インスタンスのタグを作成と同時に行うことはできません。New-EC2Instanceの戻り値(Reservation)から作成したインスタンスを取得し、インスタンスを更新する形を採る必要があります。TagSpecificationパラメーターを指定するとインスタンスの作成と同時にタグ付けすることができます。(パラメーターを見逃してました...すいません)作成するインスタンスが1つだけの場合であればこのパラメーターを使う方が楽でしょう。同時に複数インスタンス作成する場合はループ内でタグを更新する方がより柔軟に処理できると思います。前述した様にNew-EC2Instanceでは複数のインスタンスを同時に作成できます。このため戻り値(Reservation)のInstancesプロパティに対してForEach-Objectでループ処理をしてやる必要があります。New-EC2Tagで作成したインスタンスに対してタグ付けをしてやります。このコマンドレットはEC2インスタンス以外のリソースでも使えるためパラメーター名がResourceとなっています。削除保護の指定Edit-EC2InstanceAttributeコマンドレットでEC2インスタンスの属性変更を行うことができます。DisableApiTerminationパラメーターで削除保護の有効・無効を切り替えることができます。他にも様々な属性を変更できますので詳細はリファレンスを参照してください。(Linux)続けてLinuxインスタンスの作成スクリプトを紹介します。Windowsの場合と概ね同じ条件のインスタンスを作成します。Coreインストールスクリプトも追記インスタンス追加後にNameタグにyour-amazonlinux2を設定インスタンス追加後に削除保護を設定スクリプトは以下。Windowsの場合とほとんど変わらないので同様の部分の補足は省略します。$true}ユーザーデータユーザーデータに記述している追加ディスクのマウント手順はAWS公式ドキュメントの手順をベースにしています。ボリュームを使用できるようにするmkfsでファイルシステムを作ってマウント、fstabの記述を追加して永続化、とLinuxでの一般的な設定方法かと思います。Coreのインストールをしています。PowerShellを使ってEC2インスタンスを作成するスクリプトを紹介しました。本記事で紹介したようなスクリプトを手元に持っておくとちょっとした環境を作る時に非常に役に立ちますので、みなさんも自分の環境に合わせたスクリプトを作ってみてください。442,935札幌で働くPowerShellおじさんです。Management)だったりもしています。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。カフェ店長のオカノです。今日はオフィスに用があるので、通勤ラッシュを避けて出社しました。この子は新メンバーのさめくんです。在宅勤務が推奨されているのでオフィスが閑散としており、すこしさみしそうです。本が出ていたので読んでみたところよかったので紹介させていただきます。使いたいときの注意点を書きました。新井成一64最近Sphinxつかってドキュメントを書いてるのですがなかなかイケています。臼田佳祐295ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介255SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。芳賀健232こんにちは!猫様の忠実なるしもべ、芳賀健です。Tokyoで開催されました。カフェ店長のオカノです。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。