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

参考:

Boto3 describe_volumes