0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Code Engine活用】PowerShellからの脱却!奉行サービスの接続先IPアドレスをクラウドで自動監視する基盤構築

Posted at

💡 導入:なぜCode EngineでIP監視をするのか

従来の課題(オンプレミスPCでの実行)

これまで、変動する奉行サービスなどの接続先IPアドレスを把握し、セキュリティのためファイアウォールを適切に管理する必要がありました。

  • 実行環境の不安定さ: PowerShellをタスクスケジューラで実行していたが、権限や終了ステータスなどで予期せぬエラーが頻発した。
  • PCへの依存: 実行環境であるPCの電源が入っていないと実行できず、安定した運用が難しかった。

解決策と目標

この課題を解決するため、IBM Cloud Code Engineジョブ機能 を利用し、外部URLに依存せず、変動するIPアドレスを安定的に取得・記録するための基盤を構築しました。

⚙️ 技術選定:Code Engineジョブのメリット

Code Engineを選択した主な理由は、以下のメリットのためです。

  • サーバーレスジョブ: 監視処理の実行時のみ課金され、常時起動する必要がないため、コスト効率が良い
  • 安定した実行環境: スクリプトをDockerコンテナで実行するため、OSやPowerShellのバージョンといった環境に左右されず、安定稼働が実現する。
  • シンプルなアーキテクチャ: Pythonスクリプトをコンテナ化し、ジョブとして定期実行するだけで基盤が完成する。

💻 実装ステップ:IP取得基盤の構築

1. 接続先IPアドレスを取得するスクリプトの作成

IPアドレスの解決には、外部のWeb APIに依存せず、Python標準のDNS解決機能を利用しました。

  • ファイル名: job.script.py
  • 利用技術: Python標準ライブラリ socket
  • コードの抜粋:
# IPアドレスを取得し、結果をJSON形式で標準出力する
# Code Engineのログがこれを自動で取得します
import socket
# ...
for url in urls:
    try:
        ip_address = socket.gethostbyname(url)
        results[url] = ip_address
    # ...
print(results)

💻 コンテナ化とジョブ構成

2. コンテナ・イメージの作成と登録

作成した Python スクリプトを Code Engine で実行するために、コンテナイメージとしてパッケージ化し、登録します。

  • Dockerfile の役割
    実行に必要な Python 環境を定義し、作成したスクリプト(job.script.py)をコンテナに含めるための設定ファイルです。
  • ソースコード
    Code Engine のビルド機能を利用し、GitHub リポジトリhttps://github.com/mayname/url-ip-checker)から自動でソースコードを取得しました。
  • イメージの登録
    ビルドされたイメージは、IBM Cloud Container Registry(jp.icr.io/...)に自動で登録されます。

3. Code Engine ジョブの作成と定期実行の構成

Code Engine コンソール上で、登録したコンテナイメージを使用してジョブを定義し、定期的に実行されるように設定します。

  • ジョブの定義
    1. Code Engine コンソールで 「ジョブの作成」 を選択します。
    2. 登録済みのコンテナイメージ(例: jp.icr.io/my-url-checker/...)を指定します。
  • 定期実行(サブスクリプション)の構成
    ジョブのサブスクリプション機能を利用し、実行したい間隔(例: 毎日定時)を設定することで、ジョブが完全に自動で定期実行されるように構成しました。

✅ まとめと今後の展望

結論 🎉

IBM Cloud Code Engine を利用することで、以下の目的を達成し、IP アドレス監視基盤の安定化とクラウド化に成功しました。

  • 安定した IP アドレスの自動取得基盤の構築に成功。
  • Windows PC の電源や環境に依存しない、クラウドベースの運用を実現。
  • ジョブ実行ログ(標準出力)から、取得した IP アドレスの履歴を簡単に確認できるようになった。

今後の展望 🚀

現在は IP アドレスの取得と記録(ログへの出力)までですが、実運用に耐えうるシステムとするため、次のステップでは以下の機能拡張を行います。

  • IP アドレスの変更検知ロジック(前回取得 IP との比較)の組み込み。
  • Chatwork API との連携による、IP アドレス変更時の自動通知機能の実装。
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?