boto3에서 route53의 모든 설정을 JSON 형식으로 백업
개요
route53의 모든 HostedZone 및 레코드 세트 설정을 Json 형식으로 검색하는 Python 스크립트입니다.
Hosted zones
Record Set
확인한 환경
품목
버전
OS
CentOS 7.5.1804
파이썬
2.7.5
boto3
1.9.33
준비
실행 중인 터미널에 AWS 프로파일($aws configure --profile your-profile-name으로 설정)이 설정되어 있어야 합니다.
이 사용자에게는 ListHostedZones, ListResourceRecordSets 권한이 부여되어 있어야 합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "route53:ListResourceRecordSets",
"Resource": "arn:aws:route53:::hostedzone/*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "route53:ListHostedZones",
"Resource": "*"
}
]
}
사용법
스크립트를 실행하면 후술하는 것처럼 콘솔 출력되므로 리디렉션하고 파일에 격납한다고 가정합니다.
$ python backup_route53_settings.py > route53_settings.txt
콘솔 출력 예
"hostedZones": [
{
"Id": "/hostedzone/xxxxxxxx"
"Name": "example.com.",
"Config": {
"Comment": "\u4f1a\u793e\u30db\u30fc\u30e0\u30da\u30fc\u30b8",
"PrivateZone": false
},
"CallerReference": "D00D4DCE-876F-CEBF-87C3-B698F213C668",
"ResourceRecordSetCount": 15,
"recordSets": [
{
"ResourceRecords": [
{
"Value": "158.199.141.166"
}
],
"Type": "A",
"Name": "example.com.",
"TTL": 300
},
{ ... }
]
},{
... 省略 ...
}
스크립트
backup_route53_settings.pyimport json
import boto3
from boto3.session import Session
profile = '<your profile name>'
session = Session(profile_name=profile)
route53Client = session.client('route53')
def convertToJson(dictSource):
return json.dumps(dictSource, indent=4, separators=(',', ': '))
def listHostedZones():
result = []
response = route53Client.list_hosted_zones()
for hostedZone in response["HostedZones"]:
result.append(hostedZone)
return result
def printInfo(hostedZone,recordSets):
hostedZone["recordSets"] = recordSets
print('{},'.format(convertToJson(hostedZone)))
def main():
hostedZones = listHostedZones()
if( not hostedZones ):
print("not found hosted zone.")
exit()
print('"hostedZones": [')
for hostedZone in hostedZones:
response = route53Client.list_resource_record_sets(
HostedZoneId=hostedZone["Id"]
)
recordSets = response["ResourceRecordSets"]
printInfo(hostedZone, recordSets)
print(']')
if __name__ == '__main__':
main()
boto3 API 문서
품목
버전
OS
CentOS 7.5.1804
파이썬
2.7.5
boto3
1.9.33
준비
실행 중인 터미널에 AWS 프로파일($aws configure --profile your-profile-name으로 설정)이 설정되어 있어야 합니다.
이 사용자에게는 ListHostedZones, ListResourceRecordSets 권한이 부여되어 있어야 합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "route53:ListResourceRecordSets",
"Resource": "arn:aws:route53:::hostedzone/*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "route53:ListHostedZones",
"Resource": "*"
}
]
}
사용법
스크립트를 실행하면 후술하는 것처럼 콘솔 출력되므로 리디렉션하고 파일에 격납한다고 가정합니다.
$ python backup_route53_settings.py > route53_settings.txt
콘솔 출력 예
"hostedZones": [
{
"Id": "/hostedzone/xxxxxxxx"
"Name": "example.com.",
"Config": {
"Comment": "\u4f1a\u793e\u30db\u30fc\u30e0\u30da\u30fc\u30b8",
"PrivateZone": false
},
"CallerReference": "D00D4DCE-876F-CEBF-87C3-B698F213C668",
"ResourceRecordSetCount": 15,
"recordSets": [
{
"ResourceRecords": [
{
"Value": "158.199.141.166"
}
],
"Type": "A",
"Name": "example.com.",
"TTL": 300
},
{ ... }
]
},{
... 省略 ...
}
스크립트
backup_route53_settings.pyimport json
import boto3
from boto3.session import Session
profile = '<your profile name>'
session = Session(profile_name=profile)
route53Client = session.client('route53')
def convertToJson(dictSource):
return json.dumps(dictSource, indent=4, separators=(',', ': '))
def listHostedZones():
result = []
response = route53Client.list_hosted_zones()
for hostedZone in response["HostedZones"]:
result.append(hostedZone)
return result
def printInfo(hostedZone,recordSets):
hostedZone["recordSets"] = recordSets
print('{},'.format(convertToJson(hostedZone)))
def main():
hostedZones = listHostedZones()
if( not hostedZones ):
print("not found hosted zone.")
exit()
print('"hostedZones": [')
for hostedZone in hostedZones:
response = route53Client.list_resource_record_sets(
HostedZoneId=hostedZone["Id"]
)
recordSets = response["ResourceRecordSets"]
printInfo(hostedZone, recordSets)
print(']')
if __name__ == '__main__':
main()
boto3 API 문서
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "route53:ListResourceRecordSets",
"Resource": "arn:aws:route53:::hostedzone/*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "route53:ListHostedZones",
"Resource": "*"
}
]
}
스크립트를 실행하면 후술하는 것처럼 콘솔 출력되므로 리디렉션하고 파일에 격납한다고 가정합니다.
$ python backup_route53_settings.py > route53_settings.txt
콘솔 출력 예
"hostedZones": [
{
"Id": "/hostedzone/xxxxxxxx"
"Name": "example.com.",
"Config": {
"Comment": "\u4f1a\u793e\u30db\u30fc\u30e0\u30da\u30fc\u30b8",
"PrivateZone": false
},
"CallerReference": "D00D4DCE-876F-CEBF-87C3-B698F213C668",
"ResourceRecordSetCount": 15,
"recordSets": [
{
"ResourceRecords": [
{
"Value": "158.199.141.166"
}
],
"Type": "A",
"Name": "example.com.",
"TTL": 300
},
{ ... }
]
},{
... 省略 ...
}
스크립트
backup_route53_settings.pyimport json
import boto3
from boto3.session import Session
profile = '<your profile name>'
session = Session(profile_name=profile)
route53Client = session.client('route53')
def convertToJson(dictSource):
return json.dumps(dictSource, indent=4, separators=(',', ': '))
def listHostedZones():
result = []
response = route53Client.list_hosted_zones()
for hostedZone in response["HostedZones"]:
result.append(hostedZone)
return result
def printInfo(hostedZone,recordSets):
hostedZone["recordSets"] = recordSets
print('{},'.format(convertToJson(hostedZone)))
def main():
hostedZones = listHostedZones()
if( not hostedZones ):
print("not found hosted zone.")
exit()
print('"hostedZones": [')
for hostedZone in hostedZones:
response = route53Client.list_resource_record_sets(
HostedZoneId=hostedZone["Id"]
)
recordSets = response["ResourceRecordSets"]
printInfo(hostedZone, recordSets)
print(']')
if __name__ == '__main__':
main()
boto3 API 문서
import json
import boto3
from boto3.session import Session
profile = '<your profile name>'
session = Session(profile_name=profile)
route53Client = session.client('route53')
def convertToJson(dictSource):
return json.dumps(dictSource, indent=4, separators=(',', ': '))
def listHostedZones():
result = []
response = route53Client.list_hosted_zones()
for hostedZone in response["HostedZones"]:
result.append(hostedZone)
return result
def printInfo(hostedZone,recordSets):
hostedZone["recordSets"] = recordSets
print('{},'.format(convertToJson(hostedZone)))
def main():
hostedZones = listHostedZones()
if( not hostedZones ):
print("not found hosted zone.")
exit()
print('"hostedZones": [')
for hostedZone in hostedZones:
response = route53Client.list_resource_record_sets(
HostedZoneId=hostedZone["Id"]
)
recordSets = response["ResourceRecordSets"]
printInfo(hostedZone, recordSets)
print(']')
if __name__ == '__main__':
main()
Reference
이 문제에 관하여(boto3에서 route53의 모든 설정을 JSON 형식으로 백업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/s-katsumata/items/a058ce8e28af9085700e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)