👋
Azure Logic Apps から Azure 内のリソースにアクセスする
Logic Apps から Azure 内のリソースにアクセスする場合、"システム割り当てマネージドID" と言う仕組みが便利。
これを使えばシークレットを管理する必要がなく、各リソースに対するロールを付与することでアクセスが可能になる。リソース削除時には自動で削除されるので、管理面でもシンプルになって良い。
マネージドIDの種類
-
システム割り当て
リソースに紐づくID。リソースを削除すればIDも削除される。管理が楽。 -
ユーザー割り当て
独立したIDを作成し、複数のリソースで共有できる。こちらは自動削除されない。
使用例
今回は "システム割り当てID" を利用し、Azure の使用コストを取得する。
-
有効化
Logic Apps の ID を開き、システム割り当てを "オン" にする。
-
ロールを付与
Cost Management" を開き、"アクセス制御" で "ロールの割り当ての追加" を行う。役割は "閲覧者" とした。
-
Logic Apps 内での使用
コストを取得するのに HTTP アクションを追加。
URI は以下となる。
https://management.azure.com/subscriptions/[Subscription ID]/providers/Microsoft.CostManagement/query?api-version=2023-08-01
"Headers" は不要。
詳細パラメーター で "Authentication" を追加し、Type は "Managed identity"、マネージド ID は "システム割り当てマネージド ID" を選択、Audience は "https://management.azure.com/" を入力。
Body は例えば以下のようにする。
{
"type": "ActualCost",
"timeframe": "Custom",
"timePeriod": {
"from": "@{formatDateTime(addDays(utcNow(), -7), 'yyyy-MM-ddT00:00:00Z')}",
"to": "@{formatDateTime(utcNow(), 'yyyy-MM-ddT00:00:00Z')}"
},
"dataset": {
"granularity": "None",
"aggregation": {
"totalCost": {
"name": "PreTaxCost",
"function": "Sum"
}
},
"grouping": [
{
"type": "Dimension",
"name": "ServiceName"
}
],
"sorting": [
{
"direction": "descending",
"name": "PreTaxCost"
}
]
}
}
これで過去1週間のコストが取得できる。
Discussion