はじめに
OCIユーティリティのoci-notifyコマンドを使用すると、通知サービスを使用して簡単にシェルからメールでの通知を行うことができます。
ということで、やってみました。
1.Computeインスタンスの準備
今回はOracle Linux 7.9のComputeインスタンスを作成しました。
2.OCI CLIのインストールと設定
yumでOCI CLIをインストールします。
sudo yum install -y python36-oci-cli
oci setup configでOCI CLIの構成ファイルとキーペアを作成します。
OCIコンソールで事前にテナンシと使用するユーザのOCIDを確認しておきます。
[opc@work1 ~]$ sudo oci setup config
This command provides a walkthrough of creating a valid CLI config file.
The following links explain where to find the information required by this
script:
User API Signing Key, OCID and Tenancy OCID:
https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#Other
Region:
https://docs.cloud.oracle.com/Content/General/Concepts/regions.htm
General config documentation:
https://docs.cloud.oracle.com/Content/API/Concepts/sdkconfig.htm
Enter a location for your config [/root/.oci/config]:
Enter a user OCID: ocid1.user.oc1..xxxxxxxxxxxxxxxxxxxxxxx
Enter a tenancy OCID: ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxx
Enter a region by index or name(e.g.
1: ap-chiyoda-1, 2: ap-chuncheon-1, 3: ap-hyderabad-1, 4: ap-melbourne-1, 5: ap-mumbai-1,
6: ap-osaka-1, 7: ap-seoul-1, 8: ap-sydney-1, 9: ap-tokyo-1, 10: ca-montreal-1,
11: ca-toronto-1, 12: eu-amsterdam-1, 13: eu-frankfurt-1, 14: eu-zurich-1, 15: me-dubai-1,
16: me-jeddah-1, 17: sa-santiago-1, 18: sa-saopaulo-1, 19: sa-vinhedo-1, 20: uk-cardiff-1,
21: uk-gov-cardiff-1, 22: uk-gov-london-1, 23: uk-london-1, 24: us-ashburn-1, 25: us-gov-ashburn-1,
26: us-gov-chicago-1, 27: us-gov-phoenix-1, 28: us-langley-1, 29: us-luke-1, 30: us-phoenix-1,
31: us-sanjose-1): 9
Do you want to generate a new API Signing RSA key pair? (If you decline you will be asked to supply the path to an existing key.) [Y/n]: Y
Enter a directory for your keys to be created [/root/.oci]:
Enter a name for your key [oci_api_key]:
Public key written to: /root/.oci/oci_api_key_public.pem
Enter a passphrase for your private key (empty for no passphrase):
Private key written to: /root/.oci/oci_api_key.pem
Fingerprint: 01:65:5d:a3:71:d3:b1:d4:ed:49:69:95:bd:d5:98:56
Config written to /root/.oci/config
If you haven't already uploaded your API Signing public key through the
console, follow the instructions on the page linked below in the section
'How to upload the public key':
https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#How2
[opc@work1 ~]$
3.APIキーの作成
OCI CLIからサービスにアクセスするためのAPIキーを作成します。
2.の手順で作成された公開鍵ファイルを開き、内容をコピーします。
sudo vi /root/.oci/oci_api_key_public.pem
OCIコンソールにログインし、ユーザの詳細画面に移動します。
「公開キーの貼り付け」を選択して、コピーした公開鍵の内容をペーストし、「追加」をクリックします。
4.通知サービスの準備
OCIメニュー → 開発者サービス → 通知をクリックします。
通知の画面に移動します。
まず最初にトピックを作成します。
「トピックの作成」をクリックします。
トピックの名前を入力し、「作成」をクリックします。
トピックが作成されました。
oci-notifyの構成で使用するために、トピックのOCIDをメモしておきます。
次にサブスクリプションを作成します。
「サブスクリプション」をクリックします。
「サブスクリプションの作成」をクリックします。
サブスクリプション・トピックは先程作成したトピックを、プロトコルは「電子メール」を選択し、「電子メール」には通知の送信先となるメールアドレスを入力して、「作成」をクリックします。
サブスクリプションが作成されました。
この時点で登録したメールアドレスに確認メールが送信されてます。
メールの受信者がメール内のリンクをクリックして登録を許可するまで、サブスクリプションの状態は「Pending」となっています。
こちらのようなメールが登録したメールアドレス宛に送信されますので、「Confirm Subscription」をクリックして登録を完了します。
メール受信者による確認が完了すると、サブスクリプションの状態が「Active」に変わります。
以上で通知サービスの準備が整いました。
4.oci-notify利用の準備
2.の手順で作成されたOCI CLIの構成ファイルを、デフォルトのoci-utilsの構成ファイルの場所にコピーします。
sudo cp /root/.oci/config /etc/oci-utils/oci_cli.conf
oci-notifyを構成します。
oci-notify -c <使用する通知サービスのトピックのOCID>で、メール送信に使用する通知サービスのトピックを登録します。
[opc@work1 ~]$ sudo oci-notify -c ocid1.onstopic.oc1.ap-tokyo-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Configured OCI notification service topic OCID.
Publishing message 'oci-utils: Notification enabled on instance Work1'
Published message 'oci-utils: Notification enabled on instance Work1'
[opc@work1 ~]$
登録内容は/etc/oci-utils/oci.confに保存されます。
トピックが登録されると、こちらのような通知が有効化された旨のメールが送信されます。
5.oci-notifyコマンドでメール送信
dfコマンドの実行結果をファイルに出力し、その内容をoci-notifyコマンドで通知サービスに渡してメールで送信してみます。
oci-notifyで通知サービスを利用する際のコマンドは以下のとおりです。
oci-notify -t "メールのサブジェクト" -f <通知内容として送信するファイル名>
件名を「Result of df -k」とし、dfコマンドの実行結果(df_result.txt)を通知サービスに渡してメールを送信します。
[opc@work1 ~]$ df -k > df_result.txt
[opc@work1 ~]$ sudo oci-notify -t "Result of df -k" -f df_result.txt
Publishing message 'Work1: Result of df -k'
Published message 'Work1: Result of df -k'
[opc@work1 ~]$
メールボックスを確認すると、こちらのメールが送られてきました。
なお、oci_notifyの実行ログは
/var/log/oci-notify.log
に出力されます。
まとめ
OCIユーティリティのoci-notifyコマンドと通知サービスを利用して、シェルから簡単にメールでの通知が行えることがわかりました。
参考情報
https://docs.oracle.com/ja-jp/iaas/Content/API/SDKDocs/cliinstall.htm
https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/ociutilities.htm#OCI_Utilities