Amazon Managed Service for Prometheus のリソースベースポリシーに設定できる Action を検証してみた

Amazon Managed Service for Prometheus のリソースベースポリシーに設定できる Action を検証してみた

2026.01.16

こんにちは。オペレーション部のしいなです。

はじめに

Amazon Managed Service for Prometheus ではリソースベースポリシーをサポートしています。
詳細は下記ブログをご参照ください。
https://dev.classmethod.jp/articles/amp-resource-policy/

今回、リソースベースポリシーについて調べる機会があったので、設定時の注意点をまとめてみました。

結論

リソースベースポリシーの Action 要素には Prometheus 互換 API(aps:RemoteWriteaps:GetSeriesaps:GetLabelsaps:GetMetricMetadataaps:QueryMetricsなど)のみ指定が可能です。
検証した限りでは、非互換 API や ワイルドカード(*)を指定することはできません。

検証してみた

Amazon Managed Service for Prometheus のワークスペースに対して、次の3つのパターンの Action 要素でリソースベースポリシーの設定を検証してみました。

  • Prometheus 互換 API のみ
  • Prometheus 非互換 API を含む
  • ワイルドカード(*)を指定

前提

  • Amazon Managed Service for Prometheus ワークスペース作成済み
  • AWS CLI コマンドを利用してリソースベースポリシーの設定を実施

Prometheus 互換 API のみ

Prometheus 互換 API(aps:RemoteWriteaps:GetSeriesaps:GetLabelsaps:GetMetricMetadata)をリソースベースポリシーに設定してみます。
Prometheus 互換 API はドキュメント[1]を参考ください。

コマンド

aws amp put-resource-policy \
  --workspace-id ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX \
  --policy file://amp-resource-policy1.json

リソースベースポリシー

amp-resource-policy1.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::XXXXXXXXXXXX:root"
      },
      "Action": [
        "aps:RemoteWrite",
        "aps:GetSeries",
        "aps:GetLabels",
        "aps:GetMetricMetadata"
      ],
      "Resource": "arn:aws:aps:ap-northeast-1:XXXXXXXXXXXX:workspace/ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX"
    }
  ]
}

出力結果

{
    "policyStatus": "CREATING",
    "revisionId": "XXXXXXXXXXX"
}

リソースベースポリシーが作成中であるステータスが返されました。

しばらくしてからリソースベースポリシーを参照してみてみます。
コマンド

aws amp describe-resource-policy \
  --workspace-id ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX

出力

{
    "policyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::XXXXXXXXXXXX:root\"},\"Action\":[\"aps:RemoteWrite\",\"aps:GetSeries\",\"aps:GetLabels\",\"aps:GetMetricMetadata\"],\"Resource\":\"arn:aws:aps:ap-northeast-1:XXXXXXXXXXXX:workspace/ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX\"}]}",
    "policyStatus": "ACTIVE",
    "revisionId": "XXXXXXXXXXX"
}

問題なく、リソースベースポリシーを設定できることを確認できました。

Prometheus 非互換 API を含む

Prometheus 非互換 API(CreateWorkspace)をリソースベースポリシーに設定してみます。

コマンド

aws amp put-resource-policy \
  --workspace-id ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX \
  --policy file://amp-resource-policy2.json

リソースベースポリシー

amp-resource-policy2.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::XXXXXXXXXXXX:root"
      },
      "Action": "aps:CreateWorkspace",
      "Resource": "arn:aws:aps:ap-northeast-1:XXXXXXXXXXXX:workspace/ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX"
    }
  ]
}

出力結果

An error occurred (ValidationException) when calling the PutResourcePolicy operation: Resource policy contains actions that are not supported

アクションにサポートしていないアクションがリソースベースポリシーに含まれているため、バリデーションエラーが返されました。

ワイルドカード(*)を指定

ワイルドカード(*)をリソースベースポリシーに設定してみます。

コマンド

aws amp put-resource-policy \
  --workspace-id ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX \
  --policy file://amp-resource-policy3.json

リソースベースポリシー

amp-resource-policy3.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::XXXXXXXXXXXX:root"
        },
        "Action": "aps:*",
        "Resource": "arn:aws:aps:ap-northeast-1:XXXXXXXXXXXX:workspace/ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX"
    }
  ]
}

出力結果

An error occurred (ValidationException) when calling the PutResourcePolicy operation: Resource policy contains actions that are not supported

ワイルドカードでは Prometheus 非互換 API も包括するため、バリデーションエラーが返されました。

まとめ

リソースベースポリシーの Action 要素には Prometheus 互換 API のみ指定可能です。非互換 API やワイルドカード(*)を指定することはできませんでした。
IAM ポリシーの Action 要素に指定可能な API とは異なりますので、混同しないように注意が必要です。
クロスアカウントでメトリクスを収集する際などにリソースベースポリシーを設定する場合は、この点にご注意ください。

本記事が参考になれば幸いです。

参考

https://docs.aws.amazon.com/prometheus/latest/APIReference/API_PutResourcePolicy.html

脚注
  1. https://docs.aws.amazon.com/ja_jp/prometheus/latest/userguide/AMP-APIReference-Prometheus-Compatible-Apis.html ↩︎

この記事をシェアする

FacebookHatena blogX

関連記事