LoginSignup
3
0

Informaticaのデータ統合サービスCloud Data Integrationの処理が失敗したら、携帯電話にSMS(ショートメッセージ)を送るようにしてみた

Posted at

はじめに

はじめまして。 NTTデータ テクノロジーコンサルティング事業本部 デジタルテクノロジー&データマネジメントユニット の nttd-nagano です。

Informatica(インフォマティカ) のクラウドデータマネージメントプラットフォームとして、「Intelligent Data Management Cloud」(※1。以下IDMCと記載)というものがあります。

今回は、そのIDMCのデータ統合サービス「Cloud Data Integration」(※2。以下CDIと記載)の処理が失敗したら、携帯電話にSMSを送るようにしてみました ので、ご報告します。

※1. 略称はIDMC。旧称はIICS。クラウドデータマネジメントプラットフォーム。以下IDMCと記載。

※2. 略称はCDI。データ統合サービス。ETL処理(※3)やELT処理(※4)を担う。以下CDIと記載。

idmc_summary.png

さて、IDMC CDIにはデータ統合機能(ETL/ELT機能)だけではなく、運用管理機能もあり、たとえば処理が失敗した際にメールを送信するさまざまな仕組みがあります。

通常はこれらの仕組みを使いますが、それでは本記事の特色がでないので、今回は Amazon SNS を使って、携帯電話に対してSMS(いわゆるショートメッセージ)を送るようにしてみます。

前提

本記事は次の状態を前提としています。

  • LinuxがインストールされたEC2インスタンスが存在する。
  • 当該EC2インスタンスにIAMロールが割り当てられている。
  • Linux上に Secure Agent をインストールしており、IDMCの「管理者」の「ランタイム環境」に当該SecureAgentが表示されている。
  • Linux上に AWS CLI をインストールしている。

注意点

次の注意点があります。

IAMでIAMロールにポリシーを追加する。

まずは、EC2インスタンスに割り当て済みのIAMロールに権限を追加します。

  1. AWSマネジメントコンソールでIAMを開く。
  2. 前述のトピックに書き込めるIAMポリシーを作る。
  3. EC2インスタンスに割り当てているIAMロールにそのIAMポリシーを追加する。(今回は簡単のために、 AmazonSNSFullAccess を追加しました)

informatica_cdi_sms_001.png

Amazon SNSで電話番号を登録する

次に、SMSの送信先の電話番号を登録します。

というのも、Amazon SNSはデフォルトでは、「サンドボックス」モードになっており、このモードの場合は、登録済みの電話番号にしかSMSを送信できないためです。

この「サンドボックス」モードは、 公式の解説ページ によれば、次のような目的で設けられている仕組みです。

SMS サンドボックスは、SMS 送信者としての評判を損なうことなく、Amazon SNS 機能を試すための安全な環境を提供します。アカウントは SMS サンドボックスにありますが、Amazon SNS のすべての機能を使用することができます。ただし、以下の制限があります。

  • SMS メッセージは、認証済みの送信先電話番号にのみ送信できます。
  • 最大 10 個の認証済みの送信先電話番号を持つことができます。
  • 送信先の電話番号を削除できるのは、認証または最後の認証の試行から 24 時間以上経過後に限られます。

アカウントがサンドボックスから移動されると、これらの制限は解除され、SMS メッセージを任意の受信者に送信できます。

  1. AWSマネジメントコンソールでAmazon SNSを開く。
  2. 左ペインの「テキストメッセージング (SMS)」をクリックする。
  3. 「サンドボックスの送信先電話番号」の「電話番号を追加」ボタンをクリックする。
  4. 「電話番号」欄にSMSを送信する先の電話番号を入力します。 (このとき日本の携帯電話に送る場合は、先頭の「0」を除いたうえで、「+81」を追加して記述する)
  5. 「検証メッセージの言語」欄で「日本語 (日本)」を選択する。
  6. 「電話番号を追加」ボタンをクリックします。
  7. 携帯電話にベリファイ用のSMSが届くため、SMS内に記載された番号を「検証コード」欄に入力する。
  8. 「電話番号を検証」ボタンをクリックする。

informatica_cdi_sms_002.png
informatica_cdi_sms_003.png
informatica_cdi_sms_004.png

Amazon SNSでトピックを作る

次に、AWS CLIで送信の指定に使うトピックを作ります。

  1. 左ペインの「トピック」をクリックする。
  2. 「トピックの作成」ボタンをクリックする。
  3. 「タイプ」欄で「スタンダード」を選択する。(「FIFO」を選択するとサブスクリプションを作成する際に「SMS」を選択できないため、注意。)
  4. 「名前」欄に任意の名称を入力する。(以降では、 TopicSmsToAdmin と記載します)
  5. 「トピックの作成」ボタンをクリックする。

informatica_cdi_sms_005.png
informatica_cdi_sms_006.png
informatica_cdi_sms_007.png

Amazon SNSでサブスクリプションを作る

次に、サブスクリプションを作ります。

  1. 左ペインの「サブスクリプション」をクリックする。
  2. 「サブスクリプションの作成」ボタンをクリックする。
  3. 「トピックARN」欄で前述のトピックを選択する。
  4. 「プロトコル」欄で「SMS」を選択する。
  5. 「エンドポイント」欄で前述の電話番号を選択する。
  6. 「サブスクリプションの作成」ボタンをクリックする。

informatica_cdi_sms_008.png
informatica_cdi_sms_009.png

Linux上で以降の作業の準備をする

次に、IDMCの操作前に必要な作業を実施します。

  1. ソース側のフラットファイル( input.csv )を作成する。
  2. ターゲット側のフラットファイル( output.csv )を作成する。
  3. 今回は意図的に実行時に処理が失敗するようにするため、ターゲット側のフラットファイル( output.csv )に書き込めないようにパーミッションを変更する。
  4. 下記の内容のシェルスクリプト( sms.sh )を作成する。( TOPIC_ARN には、前述のトピックのARNを記入する)
    bash
    #!/bin/bash
    
    TOPIC_ARN="arn:aws:sns:ap-northeast-1:999999999999:TopicSmsToAdmin"
    MAPPING_TASK_NAME=$1
    MESSAGE="Mapping Task ${MAPPING_TASK_NAME} failed."
    SENDER_ID="IDMC-CDI"
    
    /usr/local/bin/aws sns publish \
        --topic-arn "${TOPIC_ARN}" \
        --message "${MESSAGE}" \
        --message-attributes '{"AWS.SNS.SMS.SenderID":{"DataType":"String","StringValue":"'${SENDER_ID}'"}}'
    
    exit $?
    
  5. シェルスクリプトを実行できるようにパーミッションを変更する。

informatica_cdi_sms_010.png
informatica_cdi_sms_011.png
informatica_cdi_sms_012.png
informatica_cdi_sms_013.png
informatica_cdi_sms_014.png

IDMCでマッピングを作る

ここから、IDMCでの作業になります。まず、マッピングを作っていきます。

  1. IDMCにログインする。
  2. アプリケーションピッカーで「データ統合」をクリックする。
  3. 左ペインの「新規」をクリックする。
  4. 左ペインの「マッピング」をクリックする。
  5. 「作成」ボタンをクリックする。
  6. 「名前」欄に任意の名称を入力する。(以降では、 m_sms_if_mapping_failed と記載します)
  7. ソーストランスフォーメーションをクリックする。
  8. 「ソース」をクリックする。
  9. 「接続」欄であらかじめ作っておいたフラットファイル接続を選択します。
  10. 「オブジェクト」欄右横の「選択」ボタンをクリックする。
  11. ソース側のフラットファイル( input.csv )を選択する。
  12. 「OK」ボタンをクリックする。
  13. 「ターゲット」をクリックする。
  14. 「接続」欄であらかじめ作っておいたフラットファイル接続を選択します。
  15. 「オブジェクト」欄右横の「選択」ボタンをクリックする。
  16. ターゲット側のフラットファイル( output.csv )を選択する。
  17. 「OK」ボタンをクリックする。
  18. 「フィールドマッピング」をクリックする。
  19. 「ターゲットフィールド」側の「自動マップ」をクリックし、「正確なフィールド名」をクリックする。
  20. 「保存」ボタンをクリックする。

informatica_cdi_sms_015.png
informatica_cdi_sms_016.png
informatica_cdi_sms_017.png
informatica_cdi_sms_018.png
informatica_cdi_sms_019.png
informatica_cdi_sms_020.png
informatica_cdi_sms_021.png

IDMCでマッピングタスクを作る

次に、マッピングタスクを作っていきます。

  1. 左ペインの「新規」をクリックする。
  2. 左ペインの「タスク」をクリックする。
  3. 「マッピングタスク」をクリックする。
  4. 「作成」ボタンをクリックする。
  5. 「タスク名」欄に任意の名称を入力する。(以降では、 mt_sms_if_mapping_failed と記載します)
  6. 「ランタイム環境」欄で有効なランタイム環境を選択する。
  7. 「マッピング」欄で前述のマッピング( m_sms_if_mapping_failed )を選択する。
  8. 「完了」ボタンをクリックする。

informatica_cdi_sms_022.png
informatica_cdi_sms_023.png

IDMCでタスクフローを作る

最後に、タスクフローを作っていきます。

  1. 左ペインの「新規」をクリックする。
  2. 左ペインの「タスクフロー」をクリックする。
  3. 「タスクフロー」をクリックする。
  4. 「名前」欄に任意の名称を入力する。(以降では、 tf_sms_if_mapping_failed と記載します)
  5. 「開始」と「終了」の間に、「データタスク」を挿入する。
  6. 下ペインで「データタスク」をクリックする。
  7. 「データタスク」欄で前述のマッピングタスク( mt_sms_if_mapping_failed )を選択する。
  8. 下ペインで「エラー処理」をクリックする。
  9. 「エラー発生時」欄で「カスタムエラー処理」を選択する。
  10. 「データタスク」から下に伸びる矢印の箇所に「コマンドタスク」を挿入する。
  11. 「Script」パートの「Script1」のツリーを開く。
  12. 下ペインで「入力フィールド」をクリックする。
  13. 「スクリプトファイル名」の「値」欄に前述のシェルスクリプトのフルパス( /home/infa/sms.sh )を入力する。
  14. 「入力引数」の「値」欄の右側の「(x)」をクリックする。
  15. 「データタスク1」>「フォルト」>「詳細」>「エラー出力の詳細」>「オブジェクト名」をクリックする。
  16. 「入力引数」の「値」欄に入力された値の先頭と末尾に「"」を入力する。
  17. 「保存」ボタンをクリックする。

informatica_cdi_sms_024.png
informatica_cdi_sms_025.png
informatica_cdi_sms_026.png
informatica_cdi_sms_027.png
informatica_cdi_sms_028.png
informatica_cdi_sms_029.png

IDMCでタスクフローを実行する~実行結果の確認

さて、必要なものはすべて揃ったので、実際に実行してみます。

  1. 前述のタスクフロー( tf_sms_if_mapping_failed )を開く。
  2. 「実行」ボタンをクリックする。
  3. 左ペインで「マイジョブ」をクリックする。
  4. 最新のジョブインスタンスをクリックする。
  5. 「コマンドタスク1」が実行される(タスクの右上に緑色のチェックアイコンが表示される)まで、画面右上の更新アイコンを定期的にクリックする。
  6. 携帯電話のSMSアプリを起動し、SMSが届いていることを確認する。

informatica_cdi_sms_030.png
informatica_cdi_sms_031.png

ちゃんと届きましたね!

おわりに

以上、「Informaticaのデータ統合サービスCloud Data Integrationの処理が失敗したら、携帯電話にSMS(ショートメッセージ)を送るようにしてみた」でした。

いかがでしたでしょうか。IDMC CDIがデータ統合機能(ETL/ELT機能)だけではなく、例外処理や(今回は使いませんでしたが)条件分岐などを伴うような運用管理機能も具備していることの一端をご紹介できたのではないでしょうか。

CDIは30日間の無料体験ができる ので、この機会に試してみてはいかがでしょうか。

仲間募集

NTTデータ テクノロジーコンサルティング事業本部 では、以下の職種を募集しています。

1. クラウド技術を活用したデータ分析プラットフォームの開発・構築(ITアーキテクト/クラウドエンジニア)

クラウド/プラットフォーム技術の知見に基づき、DWH、BI、ETL領域におけるソリューション開発を推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/cloud_engineer

2. データサイエンス領域(データサイエンティスト/データアナリスト)

データ活用/情報処理/AI/BI/統計学などの情報科学を活用し、よりデータサイエンスの観点から、データ分析プロジェクトのリーダーとしてお客様のDX/デジタルサクセスを推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/datascientist

3.お客様のAI活用の成功を推進するAIサクセスマネージャー

DataRobotをはじめとしたAIソリューションやサービスを使って、
お客様のAIプロジェクトを成功させ、ビジネス価値を創出するための活動を実施し、
お客様内でのAI活用を拡大、NTTデータが提供するAIソリューションの利用継続を推進していただく人材を募集しています。
https://nttdata.jposting.net/u/job.phtml?job_code=804

4.DX/デジタルサクセスを推進するデータサイエンティスト《管理職/管理職候補》 データ分析プロジェクトのリーダとして、正確な課題の把握、適切な評価指標の設定、分析計画策定や適切な分析手法や技術の評価・選定といったデータ活用の具現化、高度化を行い分析結果の見える化・お客様の納得感醸成を行うことで、ビジネス成果・価値を出すアクションへとつなげることができるデータサイエンティスト人材を募集しています。

https://nttdata.jposting.net/u/job.phtml?job_code=898

ソリューション紹介

Trusted Data Foundationについて

~データ資産を分析活用するための環境をオールインワンで提供するソリューション~
https://enterprise-aiiot.nttdata.com/tdf/
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ(Datalake+DWH+AI/BI)を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。

TDFⓇ-AM(Trusted Data Foundation - Analytics Managed Service)について

~データ活用基盤の段階的な拡張支援(Quick Start) と保守運用のマネジメント(Analytics Managed)をご提供することでお客様のDXを成功に導く、データ活用プラットフォームサービス~
https://enterprise-aiiot.nttdata.com/service/tdf/tdf_am
TDFⓇ-AMは、データ活用をQuickに始めることができ、データ活用の成熟度に応じて段階的に環境を拡張します。プラットフォームの保守運用はNTTデータが一括で実施し、お客様は成果創出に専念することが可能です。また、日々最新のテクノロジーをキャッチアップし、常に活用しやすい環境を提供します。なお、ご要望に応じて上流のコンサルティングフェーズからAI/BIなどのデータ活用支援に至るまで、End to Endで課題解決に向けて伴走することも可能です。

NTTデータとInformaticaについて

データ連携や処理方式を専門領域として10年以上取り組んできたプロ集団であるNTTデータは、データマネジメント領域でグローバルでの高い評価を得ているInformatica社とパートナーシップを結び、サービス強化を推進しています。
https://enterprise-aiiot.nttdata.com/service/informatica

NTTデータとTableauについて

ビジュアル分析プラットフォームのTableauと2014年にパートナー契約を締結し、自社の経営ダッシュボード基盤への採用や独自のコンピテンシーセンターの設置などの取り組みを進めてきました。さらに2019年度にはSalesforceとワンストップでのサービスを提供開始するなど、積極的にビジネスを展開しています。

これまでPartner of the Year, Japanを4年連続で受賞しており、2021年にはアジア太平洋地域で最もビジネスに貢献したパートナーとして表彰されました。
また、2020年度からは、Tableauを活用したデータ活用促進のコンサルティングや導入サービスの他、AI活用やデータマネジメント整備など、お客さまの企業全体のデータ活用民主化を成功させるためのノウハウ・方法論を体系化した「デジタルサクセス」プログラムを提供開始しています。
https://enterprise-aiiot.nttdata.com/service/tableau

NTTデータとAlteryxについて
Alteryxは、業務ユーザーからIT部門まで誰でも使えるセルフサービス分析プラットフォームです。

Alteryx導入の豊富な実績を持つNTTデータは、最高位にあたるAlteryx Premiumパートナーとしてお客さまをご支援します。

導入時のプロフェッショナル支援など独自メニューを整備し、特定の業種によらない多くのお客さまに、Alteryxを活用したサービスの強化・拡充を提供します。

https://enterprise-aiiot.nttdata.com/service/alteryx

NTTデータとDataRobotについて
DataRobotは、包括的なAIライフサイクルプラットフォームです。

NTTデータはDataRobot社と戦略的資本業務提携を行い、経験豊富なデータサイエンティストがAI・データ活用を起点にお客様のビジネスにおける価値創出をご支援します。

https://enterprise-aiiot.nttdata.com/service/datarobot

NTTデータとSnowflakeについて
NTTデータでは、Snowflake Inc.とソリューションパートナー契約を締結し、クラウド・データプラットフォーム「Snowflake」の導入・構築、および活用支援を開始しています。

NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。
Snowflakeは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。

https://enterprise-aiiot.nttdata.com/service/snowflake

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