AWS Lambda:Boto3 "errorType":"KeyError"
AWS Lambda: Boto3 "errorType": "KeyError"
下面是我尝试从 describe_volumes 中提取 SnapshotId 的简单代码。但是,我得到一个 KeyError,其中没有太多信息可以解决。请让我知道我做错了什么,谢谢
import boto3
ec2 = boto3.client('ec2')
def lambda_handler(event, context):
snapshot_id = ec2.describe_volumes(VolumeIds=['vol-xxxx'])
print(snapshot_id['SnapshotId'])
在上面的代码中,出现以下错误:
{
"errorMessage": "'SnapshotId'",
"errorType": "KeyError",
"requestId": "6b99ce8b-092e-49b8-89b3-72381129e9cc",
"stackTrace": [
" File \"/var/task/lambda_function.py\", line 7, in lambda_handler\n print(snapshot_id['SnapshotId'])\n"
]
}
'describe_volumes' 方法的响应语法是:
{
'Volumes': [
{
'Attachments': [
.
.
,
],
'AvailabilityZone': 'string',
'SnapshotId': 'string',
.
.
.
},
],
'NextToken': 'string'
}
因此,当您尝试读取 SnapshotId 属性时,它不起作用,因为它不在根级别。考虑到它是一个卷列表,您可以对其进行迭代并实现您需要的逻辑。例如:
response_describe_volumes = ec2.describe_volumes(VolumeIds=['vol-xxxxxxxxxxx'])
for volume in response_describe_volumes['Volumes']:
print(volume['SnapshotId'])
#TODO
参考:
下面是我尝试从 describe_volumes 中提取 SnapshotId 的简单代码。但是,我得到一个 KeyError,其中没有太多信息可以解决。请让我知道我做错了什么,谢谢
import boto3
ec2 = boto3.client('ec2')
def lambda_handler(event, context):
snapshot_id = ec2.describe_volumes(VolumeIds=['vol-xxxx'])
print(snapshot_id['SnapshotId'])
在上面的代码中,出现以下错误:
{
"errorMessage": "'SnapshotId'",
"errorType": "KeyError",
"requestId": "6b99ce8b-092e-49b8-89b3-72381129e9cc",
"stackTrace": [
" File \"/var/task/lambda_function.py\", line 7, in lambda_handler\n print(snapshot_id['SnapshotId'])\n"
]
}
'describe_volumes' 方法的响应语法是:
{
'Volumes': [
{
'Attachments': [
.
.
,
],
'AvailabilityZone': 'string',
'SnapshotId': 'string',
.
.
.
},
],
'NextToken': 'string'
}
因此,当您尝试读取 SnapshotId 属性时,它不起作用,因为它不在根级别。考虑到它是一个卷列表,您可以对其进行迭代并实现您需要的逻辑。例如:
response_describe_volumes = ec2.describe_volumes(VolumeIds=['vol-xxxxxxxxxxx'])
for volume in response_describe_volumes['Volumes']:
print(volume['SnapshotId'])
#TODO
参考: