首页 > 解决方案 > 参数验证错误 Lambda 函数

问题描述

我想从实例 ID 运行 describe_instance_status,实例 ID 在类似的 lambda 函数中从 describe_instances 返回,但出现参数错误

代码是:

import boto3
import json
from collections import defaultdict

region = 'us-east-1'

def lambda_handler(event, context):
    
    
    client = boto3.client('ec2')

    running_instances = client.describe_instances(
      Filters=[
        {
            'Name': 'tag:orgid',
            'Values': [
                'demoxx',
            ]
        },
    ],
    )
    
    instance_ids = []    
    
    for reservation in running_instances['Reservations']:
        for instance in reservation['Instances']:
            instance_ids.append(instance['InstanceId'])
    
    response = client.describe_instance_status(
    InstanceIds=[
        instance_ids,
    ],
)

错误是:

Parameter validation failed:
Invalid type for parameter InstanceIds[0], value: ['i-0519ad34bbd9954d'], type: <class 'list'>, valid types: <class 'str'>: ParamValidationError
Traceback (most recent call last):
  File "/var/task/lambda_function.py", line 31, in lambda_handler
    instance_ids,

标签: aws-lambdaboto3

解决方案


InstanceIds排除一个列表并且instance_ids已经是一个列表。因此,您可以执行以下操作:

    response = client.describe_instance_status(
                 InstanceIds=instance_ids
    )

推荐阅读