EC2が起動したら、route53 DNS Aレコード登録 Terminateしたら、route53 DNS Aレコード削除
- docker
- docker-compose
- aws account & credentials
- .envrc や
export
でaws credential の環境変数を通す - route53のHostedzoneは先づくりしておく
- serverless.yml 必須: 環境変数の
DOMAIN
とHOSTED_ZONE_ID
を弄る - 分かる人は serverless.yml の
iamRoleStatements:
特にroute53:*
はリソース名で絞ったほうがより安全 e.g. Resource をarn:aws:route53:::hostedzone/XXXXXX
へ docker-compose run --rm bld sls deploy
でデプロイ
Running状態になったら、上記で指定したHostedZoneに対して Tag:Name + DOMAIN
値は ローカルIPアドレスでレコード登録する。
Terminated状態になったら、上記で指定したHostedZoneに対して Tag:Name + DOMAIN
値は ローカルIPアドレスでレコード削除する。ただし、CFnやTerraformでre-createしたときに、先に作ってあとに(同じ名前で)
Terminateすると消しちゃうから、そこは制御している。
ec2-running.json をいじる
{
"version": "0",
"id": "xxxx-xxxxxx-xxxxx-xxxxx-xxxxx",
"detail-type": "EC2 Instance State-change Notification",
"source": "aws.ec2",
"account": "xxxxxxxxx",
"time": "2016-08-18T02:38:57Z",
"region": "ap-northeast-1",
"resources": [
"arn:aws:ec2:ap-northeast-1:xxxxxx:instance/i-xxxxxxxx"
],
"detail": {
"instance-id": "i-xxxxxxx",
"state": "running"
}
}
実際使うのは detail.instance-id だけ、機能的に実際に動いているインスタンスがないと、Tag:Nameをひらえないので、ここだけ合わせる必要あり。
docker-compose run --rm bld sls invoke -f register -p lambda-events/ec2-running.json