python 使用AWS执行Boto3代码时出错

6pp0gazn  于 2023-10-15  发布在  Python
关注(0)|答案(2)|浏览(111)

我正在编写一个Python代码,使用Boto3SDK与AWS对话,但我有一些错误,我是Python的新手。
这是代码:

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

这就是我尝试使用它的方式:

from main import AutoScalingWrapper

u = AutoScalingWrapper("ASGName")
print(u.describe_group())

但这导致了一个错误:

line 4, in <module>
    print(u.describe_group())
          ^^^^^^^^^^^^^^^^^^
TypeError: AutoScalingWrapper.describe_group() missing 1 required positional argument: 'group_name'

有人能帮我吗?
执行python代码以在AWS中使用Boto3SDK

llycmphe

llycmphe1#

你有两个问题。
首先,AutoScalingWrapper需要一个客户端作为参数,而您正在传递一个字符串。我强烈建议使用类型提示来防止这种情况。
其次,在describe_group中缺少组名,因此需要类似于

from main import AutoScalingWrapper

import boto3

client = boto3.client('autoscaling')

u = AutoScalingWrapper(client)
print(u.describe_group("my-auto-scaling-group"))

查看文档以了解更多详细信息:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/autoscaling/client/describe_auto_scaling_groups.html

mxg2im7a

mxg2im7a2#

我试着按你说的做了但是没有用。我已经在过去用你的例子做过了,对于两个:

import boto3
client = boto3.client('autoscaling')
clearesponse = client.describe_auto_scaling_groups(
    AutoScalingGroupNames=[
        'ASGName',
    ])

for reservation in clearesponse ['AutoScalingGroups']:
        for instance in reservation['Instances']:
            print(instance['InstanceId'])

这是作品,但我不想这样做,我想使用AWS的重复代码,但它没有工作,你能解释如何使用它吗?
这就是我所说的(与类和2def):https://docs.aws.amazon.com/code-library/latest/ug/python_3_auto-scaling_code_examples.html(获取群组信息)
我问它,因为我没有找到任何信息在互联网上如何:(

相关问题