LoginSignup
1
0

More than 1 year has passed since last update.

AWS ALBリスナールールをAWS CLIで設定、自動でWEBの閉局・開局を実現する

Last updated at Posted at 2023-02-12

今回はAWS ALB経由でAPサーバ上のWEBサービスを一定時間だけ開局、それ以外は閉局する場合、これをAWS CLIコマンドを使って自動化する方法を考えてみました。
使用するコマンドaws elbv2の詳細はここを参照

前提

・既にALB、ターゲットグループは設定されている。
・既に以下の様な画面が表示されている。
・以下のコマンドをcron等に設定して自動化させる。
スクリーンショット 2023-02-13 031722.jpg

1.リスナールール作成

➀ aws elbv2 create-ruleコマンドでルールを作成
  コマンド仕様は以下となります。
  awss elbv2 create-rule
       --listener-arn <リスナーARN>
       --conditions <コンディションファイル>
       --priority <プライオリティ 1>
       --actions <アクションファイル>

➁ コンディションファイル作成

# cond.json
[
  {
      "Field": "path-pattern", # FieldはURLのパス形式を指定
      "PathPatternConfig": {
          "Values": ["/*"] # リクエストURLのパス ルートパス全て対象
      }
  }
]

➂ アクションファイル作成

[
    {
        "Type": "fixed-response",
        "FixedResponseConfig": {
            "MessageBody": "<html><body><h1>closed right now</body></html>",
            "StatusCode": "503",
            "ContentType": "text/html"
        }
    }
]

➃ コマンド実行しルールを追加します。
 ここでは固定レスポンスを503で返し本文に閉局した旨を表示させます。

aws elbv2 create-rule --listener-arn arn:aws:elasticloadbalancing:ap-northeast-1:773181940404:listener/app/bipro/9f3425e854e7525f/6ec0638ed3d93aba --conditions file://cond.json  --priority 1 --actions file://action.json

➄ ルールが追加された事を確認
image.png

➅ 画面を確認してルールが反映されている事を確認。
 固定レスポンスが返され、最初の画面が閉局しClosed right nowと変わりました。
スクリーンショット 2023-02-13 033301.jpg.png

2.リスナールールの削除

➀ aws elbv2 delete-rule コマンドで今度は1のルールを削除します。
 aws elbv2 delete-rule --rule-arn <ルール ARN>
 ここで問題となるのはルールARNはcreate_ruleコマンドで自動的に割り当てられるので
 ルールARNを取得してこなければなりません。

➁ describe-rules コマンドでルールARNの取得。
 aws elbv2 describe-rules --listener-arn <リスナーARN>
このコマンドコマンド結果を以下の様にgrepで"Priority": "1"の上の行のルールARNの部分を
抽出します。

grep '"Priority": "1"' -B 1 | grep -o 'arn:aws:[^"]*'` 

この抽出結果を delete-rule --rule-arn オプションにに組み込みます。

➂ delete-rule --rule-arn コマンドでルールの削除

aws elbv2 delete-rule --rule-arn `aws elbv2 describe-rules --listener-arn &emsp;arn:aws:elasticloadbalancing:ap-northeast-1:773181940404:listener/app/***(マスクしてます)/9f3425e854e7525f/6ec0638ed3d93aba | grep '"Priority": "1"' -B 1 | grep -o 'arn:aws:[^"]*'` 

➃ 1で作成したルールが削除された事を確認
image.png
1の➄で追加されたルールが削除されている事が判ります。

➄ 閉局されていた画面がルールが削除された事で再び開局した事が確認出来ました。
スクリーンショット 2023-02-13 031722.jpg

1
0
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
1
0