aws - 调用 PutMetricData 操作时发生错误 (AccessDenied)

use*_*858 1 amazon-web-services terraform

当我尝试运行 Lambda 函数时收到以下错误。如何解决这个问题。

{
  "errorMessage": "An error occurred (AccessDenied) when calling the PutMetricData 
operation: User: arn:aws:sts::12345678:assumed-role/someRole/role is not authorized 
to perform: cloudwatch:PutMetricData",
Run Code Online (Sandbox Code Playgroud)

Tai*_*T's 5

您需要允许someRole(由 lambda 函数假定的)将指标写入 cloudwatch。该政策应如下所示:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["cloudwatch:PutMetricData"], # add more actions if needed
      "Resource": "*"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

编辑 关于OP评论关于你应该使用什么作为资源而不是“ ”*

PutMetricData没有资源级权限,因此必须为“*”。如果您使用命名空间,则可以使用条件键来限制对命名空间的访问。

例如:

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Resource": "*",
        "Action": "cloudwatch:PutMetricData",
        "Condition": {
            "StringEquals": {
                "cloudwatch:namespace": "MyNamespace"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)