有一 ec2 instance 僅需要在每天工作時間開機就好,其他時間則是關機的狀態
Lambda 設好後就一直在找如何開機自動去更新 Route 53 的 A record,但不知道是不是這個太過於基礎,所以沒什麼人寫(但還是被我找到了~haha)
需要一個 shellscript,一個 json 以及 IAM 權限
shellscript 如下:
#!/bin/sh
if [ -z "$1" ]; then
echo "IP not given...trying EC2 metadata...";
IP=$( curl http://169.254.169.254/latest/meta-data/public-ipv4 )
else
IP="$1"
fi
echo "IP to update: $IP"
INPUT_JSON=$( cat /home/ubuntu/update-route53-A.json | sed "s/127\.0\.0\.1/$IP/" )
# http://docs.aws.amazon.com/cli/latest/reference/route53/change-resource-record-sets.html
# We want to use the string variable command so put the file contents (batch-changes file) in the following JSON
INPUT_JSON="{ \"ChangeBatch\": $INPUT_JSON }"
/path/aws route53 change-resource-record-sets --hosted-zone-id "HOSTED_ZONE_ID" --cli-input-json "$INPUT_JSON" --profile profilename
這邊的 "/path/aws" 要注意一下,要改成你的環境中的所在路徑
可以執行 which aws 去看
json 如下:
{
"Comment": "Update the A record set",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "dev.explame.com",
"Type": "A",
"TTL": 30,
"ResourceRecords": [
{
"Value": "127.0.0.1"
}
]
}
}
]
}
Lambda 設好後就一直在找如何開機自動去更新 Route 53 的 A record,但不知道是不是這個太過於基礎,所以沒什麼人寫(但還是被我找到了~haha)
需要一個 shellscript,一個 json 以及 IAM 權限
shellscript 如下:
#!/bin/sh
if [ -z "$1" ]; then
echo "IP not given...trying EC2 metadata...";
IP=$( curl http://169.254.169.254/latest/meta-data/public-ipv4 )
else
IP="$1"
fi
echo "IP to update: $IP"
INPUT_JSON=$( cat /home/ubuntu/update-route53-A.json | sed "s/127\.0\.0\.1/$IP/" )
# http://docs.aws.amazon.com/cli/latest/reference/route53/change-resource-record-sets.html
# We want to use the string variable command so put the file contents (batch-changes file) in the following JSON
INPUT_JSON="{ \"ChangeBatch\": $INPUT_JSON }"
/path/aws route53 change-resource-record-sets --hosted-zone-id "HOSTED_ZONE_ID" --cli-input-json "$INPUT_JSON" --profile profilename
這邊的 "/path/aws" 要注意一下,要改成你的環境中的所在路徑
可以執行 which aws 去看
json 如下:
{
"Comment": "Update the A record set",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "dev.explame.com",
"Type": "A",
"TTL": 30,
"ResourceRecords": [
{
"Value": "127.0.0.1"
}
]
}
}
]
}
基本做法是參考以下這篇
https://www.lambrospetrou.com/articles/aws-update-route53-recordset-diy-load-balancer/
但他做的取得 HOSTED_ZONE_ID 這部份我這邊有問題,看起來應該是輸出格式個問題(我的輸出是 json)
所以我直接把 HOSTED_ZONE_ID 填入,之後把它放到 crontab 去
crontab 新增下列那行
@reboot /path/shellscript.sh
這樣就會在reboot之後執行
crontab 新增下列那行
@reboot /path/shellscript.sh
這樣就會在reboot之後執行
留言
張貼留言