👋

Azure Logic Apps から Azure 内のリソースにアクセスする

に公開

Logic Apps から Azure 内のリソースにアクセスする場合、"システム割り当てマネージドID" と言う仕組みが便利。
これを使えばシークレットを管理する必要がなく、各リソースに対するロールを付与することでアクセスが可能になる。リソース削除時には自動で削除されるので、管理面でもシンプルになって良い。

マネージドIDの種類

  • システム割り当て
    リソースに紐づくID。リソースを削除すればIDも削除される。管理が楽。

  • ユーザー割り当て
    独立したIDを作成し、複数のリソースで共有できる。こちらは自動削除されない。

使用例

今回は "システム割り当てID" を利用し、Azure の使用コストを取得する。

  1. 有効化
    Logic Apps の ID を開き、システム割り当てを "オン" にする。

  2. ロールを付与
    Cost Management" を開き、"アクセス制御" で "ロールの割り当ての追加" を行う。役割は "閲覧者" とした。

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