こんにちはsekitakaです。
AWSもデベロッパーコンソールで作業すると、履歴が残らないのでコード化してソース管理できるといいですね。
CloudFrontへのDNS設定は以下のようにAPIを実行することで設定可能です。
# coding:utf-8
#!/usr/bin/python
import boto3
client = boto3.client('route53')
response = client.change_resource_record_sets(
HostedZoneId='XXXXXXXXXXXX', # Route53のレコード設定したいドメイン(example.com)のゾーンID
ChangeBatch={
'Comment': u'任意のコメント',
'Changes': [
{
'Action': 'UPSERT',
'ResourceRecordSet': {
'Name': "xxxxxx.example.com" + ".", # 公開したいドメイン
'Type': 'A', # CloudFrontに向ける場合は、Aレコードにしろとドキュメントに書いてあった
'AliasTarget': {
'HostedZoneId': 'Z2FDTNDATAQYW2', # CloudFrontに向ける場合は、この値を指定しろとドキュメントに書いてあった
'DNSName': "xxxxxxxx..cloudfront.net" + ".", # CloudFrontのディストリビューションのドメイン
'EvaluateTargetHealth': False
}
}
},
]
}
)
print response
ハマりどころとしては、ResourceRecordSetの各種の設定値が、どのレコードタイプを使用するかやエイリアスのタイプによって、使用できる値と使用できない値がある点です。
今回はTTL
を設定していたところ、わかりにくいエラーが出力されハマってしまいました。
幸いboto3のドキュメントはかなり丁寧だったので、じっくり読めば間違いに気づけました。