Route53의 DNS 레코드를 GitHub의 JSON 파일에서 관리 할 수 있습니다.
그래서 커뮤니티 중심의 느낌으로 좋을 것 DNS 서버상의 서브 도메인의 관리를 자동화할 수 없을까라고 생각해, GitHub 상에 있는 JSON 에 근거해 DNS 레코드를 갱신하려고 해 보았습니다.
위의 리포지토리를 포크하고 다음과 같이 적절하게 사용자 정의하십시오.
메커니즘
GitHub에서 다음과 같은 JSON을 커밋합니다.
{
"records": [
{
"Name": "wacker.io",
"Type": "A",
"TTL": "300",
"ResourceRecords": [
{
"Value": "192.30.252.153"
},
{
"Value": "192.30.252.154"
}
]
},
{
"Name": "wmap.wacker.io",
"Type": "CNAME",
"TTL": "300",
"ResourceRecords": [
{
"Value": "wakayama-hacker.github.io"
}
]
},
{
"Name": "latlng.wacker.io",
"Type": "CNAME",
"TTL": "300",
"ResourceRecords": [
{
"Value": "wakayama-hacker.github.io"
}
]
},
{
"Name": "kushimap.wacker.io",
"Type": "CNAME",
"TTL": "300",
"ResourceRecords": [
{
"Value": "miya0001.github.io"
}
]
}
]
}
records
배열에 DNS 레코드를 저장한다는 것을 알 수 있습니다.그리고는, 이것을 node 로 만든 스크립트로 읽어들여, Route53 의 API 를 걷어차는 느낌.
$ npm install
$ npm run deploy
스크립트의 소스는 다음 URL에 있습니다.
Travis CI로 자동 발화
그리고는 Travis CI 로
master
에 병합될 때마다 발화하도록 합니다.IAM으로 사용자 만들기
Travis CI에서 Route53 API를 걷어차도록 정책을 만듭니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1490535720000",
"Effect": "Allow",
"Action": [
"route53:ChangeResourceRecordSets",
"route53:ListResourceRecordSets"
],
"Resource": [
"arn:aws:route53:::hostedzone/<Your Hosted Zone ID>"
]
}
]
}
만일의 때를 위해, 대상의 존을 한정하고 있습니다.
Travis CI에서 리포지토리 사용
Travis CI에서 대상 GitHub 리포지토리를 활성화하고 다음과 같이 IAM 용 액세스 키 등을 환경 변수로 등록합니다.
등록해야 할 환경 변수는 다음과 같습니다.
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
HOSTED_ZONE_ID
HOSTED_ZONE_ID
는 Route53의 DNS 영역에 할당된 ID입니다.AWS CLI를 설정한 경우 다음 명령으로 검색할 수 있습니다.
$ aws route53 list-hosted-zones
.travis.yaml
.travis.yml
에는 다음과 같이 기술합니다.language: node_js
node_js:
- '7.6'
branches:
only:
- master
before_script:
- npm install
script:
- npm run deploy
로컬로 시도
로컬 환경에서 사용하려면
direnv
가 유용합니다.$ brew install direnv
그리고 프로젝트의 디렉토리에 다음과 같은 내용의 파일을
.envrc
라는 파일명으로 설치해 주세요..envrc
는 절대로 GitHub에 올리면 안됩니다.export HOSTED_ZONE_ID=xxxx
export AWS_ACCESS_KEY_ID=xxxx
export AWS_SECRET_ACCESS_KEY=xxxx
Reference
이 문제에 관하여(Route53의 DNS 레코드를 GitHub의 JSON 파일에서 관리 할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/miya0001/items/7dce889432f38b466d35텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)