やってみること
- AzureでLogicAppsの構築。
- RSSでニュースデータを集める。
- データベースにフィード情報を登録。
まえがき
とりあえずAzureでなんかやってみたい。
ニュースのテキスト処理とかできたらいいな。
- 前提条件
- AzureにSQL Databaseを構築済み(前回記事を参考)
- 実行環境
- Windows10
- Microsoft Edge 17
- SSMS v17.3
DBオブジェクトの作成
Logic AppsのRSSフィード項目を参考に作成しました。
ちなみに2018年時点でLogic AppsはAtom形式のフィードには対応していないようです。
CREATE TABLE [dbo].[T_JP_RSS_FEEDITEM](
[id] [bigint] IDENTITY(1,1) NOT NULL,
[feed_id] [nvarchar](64) NULL,
[feed_categories] [nvarchar](512) NULL,
[feed_copyright_information] [nvarchar](128) NULL,
[feed_links] [nvarchar](256) NULL,
[feed_published_on] [nvarchar](128) NULL,
[feed_summary] [nvarchar](1024) NULL,
[feed_title] [nvarchar](256) NULL,
[feed_updated_on] [nvarchar](64) NULL,
[primary_feed_link] [nvarchar](256) NULL
) ON [PRIMARY]
GO
Logic Apps のフロー作成
設定が終わるとRSSとSQLの接続オブジェクトがAzure上に自動で追加されます。
実行確認
select top 20
feed_title
,feed_summary
,feed_published_on
,feed_links
from [T_JP_RSS_FEEDITEM]
order by feed_published_on desc
おまけ:RSSのマルチトリガー
Logic Appsのトリガーはデザイナービューですと1つしか指定できませんが、コードビューであれば複数指定(マルチトリガー)することができます。
なお、コードビューでマルチトリガーにした場合、デザイナービューでは編集できません。
編集前 : コードビューはjson形式です。triggersの箇所をコピペして増やします。
"triggers": {
"When_a_feed_item_is_published": {
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['rss']['connectionId']"
}
},
"method": "get",
"path": "/OnNewFeed",
"queries": {
"feedUrl": "https://rss.itmedia.co.jp/rss/2.0/itmedia_all.xml"
}
},
"recurrence": {
"frequency": "Minute",
"interval": 3
},
"splitOn": "@triggerBody()?['value']",
"type": "ApiConnection"
}
}
編集後
"triggers": {
"RSS_Feed_CNETjapan": {
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['rss']['connectionId']"
}
},
"method": "get",
"path": "/OnNewFeed",
"queries": {
"feedUrl": "http://feed.japan.cnet.com/rss/index.rdf"
}
},
"recurrence": {
"frequency": "Minute",
"interval": 5
},
"splitOn": "@triggerBody()?['value']",
"type": "ApiConnection"
},
"RSS_Feed_ITmedia": {
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['rss']['connectionId']"
}
},
"method": "get",
"path": "/OnNewFeed",
"queries": {
"feedUrl": "https://rss.itmedia.co.jp/rss/2.0/itmedia_all.xml"
}
},
"recurrence": {
"frequency": "Minute",
"interval": 6
},
"splitOn": "@triggerBody()?['value']",
"type": "ApiConnection"
},
"RSS_Feed_LifeHacker": {
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['rss']['connectionId']"
}
},
"method": "get",
"path": "/OnNewFeed",
"queries": {
"feedUrl": "http://feeds.lifehacker.jp/rss/lifehacker/index.xml"
}
},
"recurrence": {
"frequency": "Minute",
"interval": 7
},
"splitOn": "@triggerBody()?['value']",
"type": "ApiConnection"
}
}
どうやら上限は10個までらしい。