amazon-web-services - 在 Lambda 代码中使用 boto3 调用 getMetricsData cloudwatch API 返回访问被拒绝错误
问题描述
我在 Lambda 代码中使用 boto 3 Python 调用 GetMetricData cloudwatch API,但出现访问被拒绝错误。
"errorMessage": "调用GetMetricData操作时发生错误(AccessDenied):用户:arn:aws:sts::xxxxxxxxxxxxx:assumed-role/lambda_test15mins-role-88yy778/lambda_test15mins is not authorized to perform: cloudwatch:GetMetricData",
任何帮助,将不胜感激!
这是使用的代码
import json
import logging
import os
import boto3
import datetime
from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
def lambda_handler(event, context):
client = boto3.client(service_name='cloudwatch', region_name='us-east-2')
response = client.get_metric_data(
MetricDataQueries=[
{
'Id': 'XXXXXXXXXXXXXX',
'MetricStat': {
'Metric': {
'Namespace': 'CMS_API',
'MetricName': 'API_Endpoint_Errors_Metrics',
'Dimensions': [
]
},
'Period': 2000,
'Stat': 'Sum',
'Unit': 'Count'
}
},
],
StartTime= datetime.datetime.now(),
EndTime= datetime.datetime.now() - datetime.timedelta(minutes=15),
NextToken='string',
ScanBy='TimestampDescending',
MaxDatapoints=123,
LabelOptions={
'Timezone': 'string'
}
)
解决方案
您可以将内联策略添加到您的lambda execution role
:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "cloudwatch:GetMetricData",
"Resource": "*"
}
]
}
推荐阅读
- r - 从频率表到观测
- android - Kotlin codelab:没有返回值,那为什么返回泛型类型?
- sql - 如何使用 SQL/Access 基于公共分组在表中重新排序序列号(不是 id)?
- python - 在 Python 中使用辛欧拉模拟地球轨道
- php - 如果在 WooCommerce 中自动添加包装,则在选择产品重量时不计算最终成本
- powershell - PowerShell - 在模式之后匹配字符
- ansible - 使用 with_items 时错误项未定义
- flutter - Flutter 下拉菜单无法使用提供者更改文本
- javascript - 如何存储 JSON 对象或其特定值以供进一步使用(Angular)?我唯一能做的就是记录它们
- javascript - 如何递归地深入嵌套的打字稿模型?并将这些深层路径映射为对象 [key: value]