dnspython aws lambda 函数返回 "dns.resolver.Answer object at 0x7fb830c2a450"

dnspython aws lambda function returning "dns.resolver.Answer object at 0x7fb830c2a450"

我最初让这个脚本使用套接字模块工作,这就是为什么 x 是这样定义的。但是,我最终需要指定正在使用的 DNS 服务器。

该脚本目前在 AWS Lambda 中 运行 成功,但是我收到的不是 FQDN/IP 地址作为输出,而是底部定义的输出(它也在SNS 主题)。

我似乎找不到任何关于这里可能发生的事情的信息。我希望有人能阐明我如何解决这个问题。

import boto3
import dns.resolver
import dns.query

my_resolver = dns.resolver.Resolver()
my_resolver.nameservers = ['0.0.0.0'] #IP omitted, but internal DNS server is being used
sns = boto3.client('sns')

a = my_resolver.query('crl.godaddy.com')
x = ('gdcrl.godaddy.com.akadns.net', ['crl.godaddy.com'], ['72.167.18.237'])

def cb_crl_check(event=None, context=None):
    crlgodaddy(a, x)

def crlgodaddy(a, x):
    if a == x:
        pass
    else:
        response = sns.publish(
        TopicArn='arn:aws:sns:xxxxxxxxxxxxxx',
        Message=('crl.godaddy.com IP address has changed! \n \nThe old 
        information was: \n {0} \n \nThe new information is: \n {1}').format(x,a),
        Subject = '"crl.godaddy.com IP change"')

if '__name__' == '__main__':
    cb_crl_check()



AWS Lambda output:
START RequestId: b637c14d-38f0-46cf-83bf-fd1279aff9d8 Version: $LATEST
***<dns.resolver.Answer object at 0x7fb830c2a450>***
END RequestId: b637c14d-38f0-46cf-83bf-fd1279aff9d8

答案:我需要使用 dnspython 模块中的 rrset[0] 才能让它工作。以下是如何更改代码以使其工作:

a = str(my_resolver.query('crl.godaddy.com').rrset[0])
x = '72.167.18.237'