0
1

More than 1 year has passed since last update.

Elastic Beanstalkでアプリケーションだけ作る(ついでにワーカー環境も作る)

Last updated at Posted at 2023-01-29

はじめに

自動で構成を良しなにしてくれるAWSのElastic Beanstalk。ウェブサーバー環境とワーカー環境の2種類があるのですが、最初触ったときはアプリケーション作成と同時にウェブサーバー環境も作成されてしまい、ワーカー環境だけ作りたいのに…と思っていました。

今回(ウェブサーバー環境を作らずに)アプリケーションだけ作成し、そのあとにワーカー環境を作る方法がわかったので記事にしました。

かんたんにElastic Beanstalkの構成

”アプリケーション”と”環境”の区別が最初わからなかったので、以下に図示しました。
最初に”アプリーケーション”を作って、その中でウェブサーバーやワーカーの”環境”を作っていく、という構成です。

またワーカー環境の構成は以下の公式にあります。

  • SQSでタスクを管理
    • 作成時、DeadLetter用のキューも含めた、2つのキューが作成
  • EC2内部に、SQSとやり取りするデーモンプロセスが起動
    • デーモンプロセスから、デプロイしたアプリに対して、POSTでメッセージが送られる模様

アプリケーションだけ作る

コンソール画面から作る方法

以下の記事にありましたので、それを行いました。

注)AWS Elastic Beanstalk は、初回のアプリ作成時だけ、アプリの実行環境も同時に作成されるため、ここで「アプリケーションの作成」をクリックすると、「Myapp-env」という名称の環境が自動で作成されます。これを避けるために、いったん「より多くのオプションの設定」をクリックします。そうすると、環境が作成されず、アプリのみが作成されます。

Create Applicationをクリックします。
image.png

必須事項を入れて、「より多くのオプションの設定」をクリックすると、アプリケーションだけ作られます。

ここで「アプリケーションの作成」を押すと、アプリケーションと同時にウェブサーバー環境も作成されますので、ご注意ください。

image.png

環境を作る画面に遷移しますが、キャンセルします。
image.png

環境なしのアプリケーションが作成されます。
image.png

コマンド(ebcli)で作る方法

以下の記事を参考にしました。

CloudShellではデフォルトで入っているので、そちらから行います。
コンソールから行う方法とは異なり、途中でキーペアの作成も促されます。

$ eb init

Select a default region
1) us-east-1 : US East (N. Virginia)
2) us-west-1 : US West (N. California)
3) us-west-2 : US West (Oregon)
4) eu-west-1 : EU (Ireland)
5) eu-central-1 : EU (Frankfurt)
6) ap-south-1 : Asia Pacific (Mumbai)
7) ap-southeast-1 : Asia Pacific (Singapore)
8) ap-southeast-2 : Asia Pacific (Sydney)
9) ap-northeast-1 : Asia Pacific (Tokyo)
10) ap-northeast-2 : Asia Pacific (Seoul)
11) sa-east-1 : South America (Sao Paulo)
12) cn-north-1 : China (Beijing)
13) cn-northwest-1 : China (Ningxia)
14) us-east-2 : US East (Ohio)
15) ca-central-1 : Canada (Central)
16) eu-west-2 : EU (London)
17) eu-west-3 : EU (Paris)
18) eu-north-1 : EU (Stockholm)
19) eu-south-1 : EU (Milano)
20) ap-east-1 : Asia Pacific (Hong Kong)
21) me-south-1 : Middle East (Bahrain)
22) af-south-1 : Africa (Cape Town)
(default is 3): 9


Select an application to use
1) testapp-20230126
2) [ Create new Application ]
(default is 2): 2


Enter Application Name
(default is "cloudshell-user"): testcliapp-20230126

Application testcliapp-20230126 has been created.
Select a platform.
1) .NET Core on Linux
2) .NET on Windows Server
3) Docker
4) Go
5) Java
6) Node.js
7) PHP
8) Packer
9) Python
10) Ruby
11) Tomcat
(make a selection): 9

Select a platform branch.
1) Python 3.8 running on 64bit Amazon Linux 2
2) Python 3.7 running on 64bit Amazon Linux 2
(default is 1): 1

Cannot setup CodeCommit because there is no Source Control setup, continuing with initialization
Do you want to set up SSH for your instances?
(Y/n): y

Select a keypair.
1) 20210818_key
2) 20210917_key
3) [ Create new KeyPair ]
(default is 2): 3


Type a keypair name.
(Default is aws-eb): 20230126_eb
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 

WARNING: Uploaded SSH public key for "20230126_eb" into EC2 for region ap-northeast-1.

こちらでも空のアプリケーションが作られました。
image.png
キーペアも作られてました
image.png

ワーカー環境作ってみる

今回はコンソール画面からのみ作ります。
image.png
「より多くのオプションの設定」をクリック(設定変更しないのであれば、「環境の作成」をそのままクリックしてもよいかと思います)。
image.png
必要な設定を変更して作成します。今回は何も変えていないです。
image.png
作成中は以下のようになります。
image.png
EC2インスタンスが作成されました。デフォルトVPC上に展開され、セキュリティグループのインバウンドはありませんでした。
image.png
アタッチされているIAMロールのポリシーは以下でした。タスクで操作が必要なリソースへのアクセス権限は別途付与が必要そうです。
image.png
キューも2つ作成されています。
image.png

環境作成にはCloudFormationを使っているので、スタックから環境を図示してもらいました。
image.png
触ったばかりなので、何がどう使われているか、要勉強です…

EC2インスタンスに入る

作成されたEC2インスタンスにEC2 Instance Connectで接続したいので、セキュリティグループのインバウンドにルールを追加します。
以下の記事を参考にしました。

インスタンス名はヘルスより確認可能。
image.png

ルールを追加しました。
image.png

インスタンスの アクション > 接続 から、内部に入ることができました。
image.png

おわりに

ワーカー環境だけ利用、というニーズもそこそこあるかと思いますので、そういう方の参考になれたら幸いです。

この先のデプロイですが、ソースの書き方がわかなくて困っています。Pythonのワーカー環境のソースの書き方がわかる方がいらっしゃったら、ご教示ください。

(2023.2.12追記)Pythonでのサンプルについて記事にしました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1