AWS Lambda DDNS 函数项目教程
1. 项目的目录结构及介绍
aws-lambda-ddns-function/
├── README.md
├── lambda_function.py
├── requirements.txt
├── config.json
└── tests/
└── test_lambda_function.py
- README.md: 项目说明文件,包含项目的概述、安装步骤和使用说明。
- lambda_function.py: 项目的启动文件,包含Lambda函数的代码。
- requirements.txt: 项目的依赖文件,列出了项目运行所需的Python库。
- config.json: 项目的配置文件,包含Lambda函数运行所需的配置参数。
- tests/: 测试目录,包含项目的单元测试文件。
2. 项目的启动文件介绍
lambda_function.py
lambda_function.py
是项目的启动文件,包含了Lambda函数的代码。以下是文件的主要内容:
import json
import boto3
import requests
def lambda_handler(event, context):
# 读取配置文件
with open('config.json', 'r') as config_file:
config = json.load(config_file)
# 获取当前IP地址
current_ip = requests.get('https://api.ipify.org').text
# 更新DNS记录
route53 = boto3.client('route53')
response = route53.change_resource_record_sets(
HostedZoneId=config['hosted_zone_id'],
ChangeBatch={
'Changes': [
{
'Action': 'UPSERT',
'ResourceRecordSet': {
'Name': config['record_name'],
'Type': 'A',
'TTL': 300,
'ResourceRecords': [
{
'Value': current_ip
},
],
}
},
]
}
)
return {
'statusCode': 200,
'body': json.dumps('DNS record updated successfully')
}
功能介绍
- 读取配置文件: 从
config.json
文件中读取配置参数。 - 获取当前IP地址: 通过调用外部API获取当前的公网IP地址。
- 更新DNS记录: 使用AWS Route 53服务更新DNS记录。
3. 项目的配置文件介绍
config.json
config.json
是项目的配置文件,包含了Lambda函数运行所需的配置参数。以下是文件的内容示例:
{
"hosted_zone_id": "Z1234567890ABCDEFGHIJ",
"record_name": "example.com"
}
配置参数说明
- hosted_zone_id: AWS Route 53托管区域的ID,用于指定要更新的DNS记录所在的区域。
- record_name: 要更新的DNS记录的名称,例如
example.com
。
通过以上配置,Lambda函数可以正确地更新指定的DNS记录。