メインコンテンツまでスキップ

独自ドメインの追加

注記

作成日:2022/05/04

構成図

ドメイン作成

独自ドメインを設定します。

私はFreenomwordpress-cdk.tkというドメインを取得しました。
(ドメインの取得は済んでいるものとして進めます。)

ドメインのRoute 53への登録

ドメインの登録はCDKではなくAWS CLIで行います。

注記

--caller-referenceは毎回ランダムな文字列を指定する必要があります。

ターミナル
aws route53 create-hosted-zone \
--name wordpress-cdk.tk \
--caller-reference `date +%s`
{
"Location": ".....",
"HostedZone": {
"Id": ".....",
"Name": "wordpress-cdk.tk.",
"CallerReference": "1651588600",
"Config": {
"PrivateZone": false
},
"ResourceRecordSetCount": 2
},
"ChangeInfo": {
"Id": ".....",
"Status": ".....",
"SubmittedAt": "....."
},
"DelegationSet": {
"NameServers": [
"ns-1111.awsdns-66.net",
"ns-2222.awsdns-77.org",
"ns-3333.awsdns-88.com",
"ns-4444.awsdns-99.co.uk"
]
}
}

NameServersの値をFreenomに登録し、ドメインの管理をRoute 53で行うようにします。

ELB用のサブドメインの作成

CDKで作成します。

wordpress-cdk/lib/wordpress-cdk-stack.ts
import { aws_autoscaling, aws_ec2, aws_efs, aws_elasticloadbalancingv2, aws_elasticloadbalancingv2_targets, aws_iam, aws_rds, aws_route53, aws_route53_targets, CfnOutput, RemovalPolicy, Stack, StackProps } from 'aws-cdk-lib';
    // *****
// Route 53
// *****

const hostedzone = aws_route53.HostedZone.fromHostedZoneAttributes(this, 'hostedzone', {
hostedZoneId: 'Z0364500207RRL1KGDBUZ',
zoneName: 'wordpress-cdk.tk'
})
    // *****
// Route 53
// *****

new aws_route53.ARecord(this, 'elb-domain', {
zone: hostedzone,
recordName: 'elb',
target: aws_route53.RecordTarget.fromAlias(new aws_route53_targets.LoadBalancerTarget(elb)),
});
  • 169-172行目
    • Route 53ホストゾーンの取得
      リソースの新規作成ではなく既存のリソースからオブジェクトを取得します。(newが不要です)
  • 209-213行目
    • ELBへのエイリアスのAレコードを作成

CDK Deploy

デプロイしましょう。

ターミナル
cdk deploy

AWS生成ドメインへのアクセスを防ぐ

ここまでの設定で、独自ドメインでのアクセスができるようになりましたが、AWSが生成するELBのドメインでも引き続きアクセスできる状態となります。
ELBのドメインへのアクセスの場合に、elb.wordpress-cdk.tkにリダイレクトする設定を追加します。

wordpress-cdk/lib/wordpress-cdk-stack.ts
    new aws_elasticloadbalancingv2.ApplicationListenerRule(this, 'listener_http_rule', {
listener: listener_http,
priority: 10,
conditions: [
aws_elasticloadbalancingv2.ListenerCondition.hostHeaders([elb.loadBalancerDnsName])
],
action: aws_elasticloadbalancingv2.ListenerAction.redirect({
host: 'elb.wordpress-cdk.tk',
permanent: true,
})
})

HTTPヘッダーのhostがELB発行のドメインの場合にelb.wordpress-cdk.tkへリダイレクトする設定です。

注記

permanenttrueの場合はステータスコードが301に、falseの場合は302になります。

CDK Deploy

デプロイしましょう。

ターミナル
cdk deploy