【问题标题】:dnspython aws lambda function returning "dns.resolver.Answer object at 0x7fb830c2a450"dnspython aws lambda 函数返回“0x7fb830c2a450 处的 dns.resolver.Answer 对象”
【发布时间】:2019-09-17 00:04:47
【问题描述】:

我最初使用 socket 模块让这个脚本工作,这就是为什么 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

【问题讨论】:

    标签: python-3.x aws-lambda dnspython


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-03-12
      • 2020-04-24
      • 1970-01-01
      • 2022-10-14
      • 2020-09-03
      • 2021-08-24
      • 1970-01-01
      • 2017-10-14
      • 1970-01-01
      相关资源
      最近更新 更多