EC2 Image BuilderでRocket.ChatのAMIを作って起動テンプレートを更新しました
EC2 Image Builderの練習をしようと思い、Rocket.ChatのAMIを定期的に作成するシナリオでやってみました。
EC2 Image Builderではパイプラインがレシピで指定したとおりにAMIを作成します。
レシピではインストールや設定のためにビルドコンポーネントとテストコンポーネントがあります。
Amazon管理のコンポーネントもあります。
今回はRocket.Chatインストール用のコンポーネントを作成して、CloudWatch AgentのインストールとテストはAmazon管理コンポーネントを使用しました。
AMIのもとになるEC2インスタンスの環境はインフラストラクチャ設定をあらかじめ作成しました。
AMIを使用する起動テンプレートと関連するライセンス設定は、ディストリビューション設定をあらかじめ設定しました。
目次
コンポーネントの作成
Rocket.Chatインストール用のビルドコンポーネントを作成しました。
ベースイメージはUbuntu20を予定しています。
コンポーネントバージョンは1.0.0にしました。
例をもとにして作成しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
name: RocketChatInstall description: Rocket.Chat Install document. schemaVersion: 1.0 phases: - name: build steps: - name: RocketChatInstallStep action: ExecuteBash inputs: commands: - snap install rocketchat-server - name: validate steps: - name: RocketChatInstallStep action: ExecuteBash inputs: commands: - snap search rocketchat-server - name: test steps: - name: RocketChatInstallStep action: ExecuteBash inputs: commands: - curl localhost:3000 |
インフラストラクチャ設定の作成
次にインフラストラクチャ設定を作成しました。
IAMロールは新規作成すると、EC2 Image Builderが必要なIAMロールを作成してくれます。
ここで選択したIAMロールが環境構築するEC2インスタンスで使用されます。
レシピで使用するコンポーネントによっては追加のIAMポリシーが必要な場合もあります。
使用するコンポーネントの説明を読んで適宜追加します。
インスタンスタイプ、SNSトピック、VPC、サブネット、セキュリティグループを設定しました。
ディストリビューション設定の作成
次にディストリビューション設定を作成しました。
License Managerのライセンスと、起動テンプレートを設定しました。
AMI作成時に新バージョンをデフォルトバージョンにするにチェックを入れました。
起動テンプレートはあらかじめAMIなしのテンプレートを作成しておきました。
イメージレシピの作成
次にイメージレシピを作成しました。
ベースイメージはクイックスタートのubuntu20にしました。
バージョンは利用可能な最新にしました。
ビルドコンポーネントはあらかじめ作成しておいたRocket.Chatインストール用と、Amazon管理のCloudWatch Agentインストールのビルドコンポーネントにしました。
テストコンポーネントはAmazon管理のLinuxの再起動テストを選択しました。
イメージパイプラインの作成
次にイメージパイプラインを作成しました。
スケジュールでは、依存関係が更新されていればスケジュールの時間にパイプラインが実行されるとしました。
イメージレシピのベースイメージ、コンポーネントに更新があった場合に実行されます。
作成したイメージレシピを選択しました。
作成したインフラストラクチャ設定を選択しました。
作成したディストリビューション設定を選択しました。
イメージパイプラインの実行
作成したイメージパイプラインを手動で実行しました。
インフラストラクチャ設定で指定したとおりにEC2インスタンスが起動しています。
/aws/imagebuilder/rocket-chat-recipeというレシピ名でCloudWatch Logsロググループが出力されていました。
ログストリームはレシピのバージョンと回数でした。
ステータスが利用可能になり正常完了しました。
AMIが作成されています。
起動テンプレートの新バージョンが作成されデフォルトになっていました。
AMIはEC2 Image Builderで作成されたAMIになっています。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
Amazon ECSサービスでAWS App Meshを使用
AWS App MeshユーザーガイドのAWS App Mesh とAmazon …
-
AWS GlueでAurora JDBC接続でS3へのジョブを実行
Aurora Serverless v1のMySQLタイプデータベースからS3へ …
-
AWS Glueチュートリアル
AWS Glueのマネジメントコンソールの左ペインの一番下にチュートリアルがあり …
-
AMIをOrganizations組織で共有しました
よく使うAMIをOrganizations組織内のリソースパブリッシュ用のアカウ …
-
Rocket.ChatからOut Going Webhookを設定してみる
API GatewayとLambda とりあえず、どんなデータが飛んでくるのか見 …
-
AWS Transfer Family EFS向けのSFTP対応サーバー
EFSファイルシステムは作成済です。 AWS Transfer Family S …
-
Azure AD SSOからAWS SSOに統合するための提供情報
Azure AD SSO担当者に送る情報をこちらの記事を見て確認しました。 チュ …
-
slackのbotにWikipediaを調べてもらう(Python on AWS Lambda + API Gateway)
slackのbotに少しでも役に立ってもらおうと、Wikipediaを調べてもら …
-
Microsoft TeamsのOutgoing Webhooksを使ってAWS Lambda(Python), Amazon API Gatewayとbot
Microsoft Teamsの検証その2、Slackで実装しているbotも対応 …
-
Amazon Glacierでボールトロックポリシーの作成開始をしてみました
Glacierを単体で使用することもそうそうないので、確認しました。 まずボール …