You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Boto3 SDK调用AWS Auto Scaling时遇TypeError问题求助

问题解决:Boto3 AutoScaling Wrapper TypeError

错误根源

你的代码存在两处关键问题:

  • 类初始化参数错误:AutoScalingWrapper的__init__方法要求传入Boto3的AutoScaling客户端实例,而非Auto Scaling组名称。你直接把"ASGName"传给构造函数,导致后续describe_group内部使用的self.autoscaling_client是字符串而非合法客户端,同时遗漏了客户端初始化步骤。
  • 方法调用参数缺失:describe_group方法定义时明确要求传入group_name参数,但调用时未传参,触发TypeError。

修正后的完整代码

主模块代码(保持不变)

import logging
from botocore.exceptions import ClientError
logger = logging.getLogger(__name__)

class AutoScalingWrapper:
    def __init__(self, autoscaling_client):
        self.autoscaling_client = autoscaling_client

    def describe_group(self, group_name):
        try:
            response = self.autoscaling_client.describe_auto_scaling_groups(
                AutoScalingGroupNames=[group_name])
        except ClientError as err:
            logger.error(
                "Couldn't describe group %s. Here's why: %s: %s", group_name,
                err.response['Error']['Code'], err.response['Error']['Message'])
            raise
        else:
            groups = response.get('AutoScalingGroups', [])
            return groups[0] if len(groups) > 0 else None

修正后的调用代码

import boto3
from main import AutoScalingWrapper

# 1. 初始化Boto3 AutoScaling客户端
autoscaling_client = boto3.client('autoscaling')

# 2. 将客户端实例传给Wrapper类
asg_wrapper = AutoScalingWrapper(autoscaling_client)

# 3. 调用describe_group时传入Auto Scaling组名称
asg_details = asg_wrapper.describe_group("ASGName")
print(asg_details)

额外说明

  • 确保AWS凭据已正确配置(可通过~/.aws/credentials文件、环境变量或IAM角色),否则客户端初始化会失败。
  • 如需指定AWS区域,可在创建客户端时添加region_name参数,例如:boto3.client('autoscaling', region_name='us-east-1')

内容的提问来源于stack exchange,提问作者Cube_Cube_Cube_Cube

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 20:04:56