python - 列表索引必须是整数,而不是 str -Python
问题描述
我正在尝试修改这个 python 函数来监控 Zabbix 中的 Lambda 函数(自动为每个 lambda 函数创建项目/触发器)
https://github.com/omni-lchen/zabbix-cloudwatch/blob/master/awsLLD.py#L182
import re
import json
from optparse import OptionParser
from awsAccount import awsAccount
from awsConnection import awsConnection
def config_parser():
parser = OptionParser(usage="usage: %prog [options]", version="%prog 1.0")
parser.add_option("-a", "--account", dest="accountname", help="account name", metavar="ACCOUNT")
parser.add_option("-r", "--region", dest="region", help="region", metavar="REGION")
parser.add_option("-q", "--query", dest="query", help="specify a query", metavar="QUERY")
parser.add_option("-c", "--component", dest="component", help="component name", metavar="COMPONENT")
return parser
def get(a, r):
account = a
aws_account = awsAccount(account)
aws_access_key_id = aws_account._aws_access_key_id
aws_secret_access_key = aws_account._aws_secret_access_key
aws_region = r
#component = c
# Init LLD Data
lldlist = []
llddata = {"data":lldlist}
# Connect to Lambda service
conn = awsConnection()
conn.lambdaConnect(aws_region, aws_access_key_id, aws_secret_access_key)
lambdaConn = conn._aws_connection
# Save Lambda function results in a list
functionResultsList = []
# Save topic names in a list
tdata = []
# Get a list of Lambda Functions
functionResults = lambdaConn.list_functions()
functionResultsList.append(functionResults)
print functionResults
nextmarker = functionResults['Functions']['NextMarker']
if __name__ == '__main__':
parser = config_parser()
(options, args) = parser.parse_args()
account = options.accountname
region = options.region
query = options.query
get(account,region)
print functionResults 给出这些结果(2 个函数)
{u'Functions': [{u'Description': u'',
u'LastModified': u'2018-08-01T18:50:04.214+0000',
u'ConfigurationId': u'e97b805a-c947-4c56-9a2e-5bef3c4cc6c5',
u'CodeSize': 222,
u'FunctionARN': u'arn:aws:lambda:eu-west-1:233135199200:function:test',
u'MemorySize': 128,
u'Handler': u'lambda_function.lambda_handler',
u'Role': u'arn:aws:iam::233135199200:role/lambda_basic_execution',
u'Mode': u'event',
u'Timeout': 3, u'Runtime': u'python2.7',
u'FunctionName': u'test'},
{u'Description': u'',
u'LastModified': u'2018-06-18T12:17:34.362+0000',
u'ConfigurationId': u'b3c59ce0-f028-43b2-8c34-a73d2bb41782',
u'CodeSize': 1436,
u'FunctionARN': u'arn:aws:lambda:eu-west-1:233135199200:function:email',
u'MemorySize': 128,
u'Handler': u'lambda_function.lambda_handler',
u'Role': u'arn:aws:iam::233135199200:role/lambda_basic_execution',
u'Mode': u'event',
u'Timeout': 183,
u'Runtime': u'python2.7',
u'FunctionName': u'email'}],
u'NextMarker': None}
下一行给我带来了一个问题:
从当前结果中获取下一个Marker,用于获取下一个
nextmarker = functionResults['Functions']['NextMarker']
File "./sns.py", line 51, in get
nextmarker = functionResults['Functions']['Description']['NextMarker']
TypeError: list indices must be integers, not str
期望的结果应该是:无
functionResults
输出变量中的最后一个字
解决方案
问题是它functionResults['Functions']
是一个列表,而不是字典,所以你需要传入整数索引。但'NextMarker'
键看起来也在functionResults
适当的范围内。
我想你想要的是:
nextmarker = functionResults['NextMarker']
推荐阅读
- c# - [失败]:OmniSharp.MSBuild.ProjectManager 尝试更新未在 Unity、VSCode 中加载的项目
- javascript - 如何使用 Graph API 将 Facebook 发布到页面公开
- python - 通过 Selenium Python 进行关键字抓取工具
- python - 堆积面积图有问题,一直显示百分比堆积面积图?
- jquery - 向 qualtrics 问题添加按钮,该问题(随机)将文本附加到问题
- flatpickr - Flatpickr min/maxTime 选项设置不正确
- sql - 查询与传统 SQL 语言有何不同?
- java - 我正在尝试在 Heroku 上部署我的应用程序,但我的基于 python 的 .exe 不起作用
- azure - xunit 集成测试在 devops 管道中失败
- rust - 为什么 futures::lock::Mutex 没有实现 RefUnwindSafe