0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

クロスリージョン間のCloudFormationでACMを構築するためにRoute53のHostedZoneIdをAWS CLIでパラメータストアに登録しよう。

Last updated at Posted at 2023-06-24

はじめに

クロスリージョン間のCloudFormationでACMを構築するためにRoute53のHostedZoneIdをパラメータストアに登録する。

例えば、東京リージョンのCloudFormationでRoute53のHostedZoneを構築し、バージニアリージョンのCloudFormationでACMを構築する場合、AWS CLIを利用して、HostedZoneIdをパラメータストアに登録し、利用するようにする。

GitHub Actionsでも利用できるように、シェルスクリプトで作成する。

スクリプト

put_params.sh
#!/bin/bash

set -e

if [ $# != 4 ] || [ $1 = "" ] || [ $2 = "" ] || [ $3 = "" ] || [ $4 = "" ]; then
  echo -e "Two parameters are required

  1st - string: Hosted Domain Name on Route 53 (e.g. example.com)
  2nd - string: Target Region  (e.g. us-east-1)
  3rd - string: System Name  (e.g. akane)
  4th - string: EnvType  (e.g. dev)

  example command
  \t sh ./create_param.sh example.com us-east-1 akane dev"
  exit
fi

HOSTED_DOMAIN=$1
REGION=$2
SYSTEM_NAME=$3
EnvType=$4

RECORD_SET_ID_HOSTED_DOMAIN=$( \
  aws route53 list-hosted-zones \
  --query "HostedZones[?Name=='${HOSTED_DOMAIN}.'].Id" \
  --output text \
  | sed 's/\/hostedzone\///g'
  ) \
&& echo -e "\t RECORD_SET_ID_HOSTED_DOMAIN = ${RECORD_SET_ID_HOSTED_DOMAIN}"

aws ssm delete-parameter \
  --name ${SYSTEM_NAME}-${EnvType}-route53-hostzone-id \
  --region ${REGION}

aws ssm put-parameter \
  --name ${SYSTEM_NAME}-${EnvType}-route53-hostzone-id \
  --value ${RECORD_SET_ID_HOSTED_DOMAIN} \
  --type 'String' \
  --region ${REGION}

CloudFormationのテンプレート

acm.yml
Parameters:
  SystemName:
    Type: String
    Default: akane
  EnvType:
    Type: String
    Default: dev
  DomainName:
    Description: The domain to which validation
    Type: String
    Default: 'dev.akane.com'

Conditions:
  RegionTokyo: !Equals [!Ref Region, "ap-northeast-1"] ## 変数:Regionが東京であった場合
  RegionVirginia: !Equals [!Ref Region, "us-east-1"] ## 変数:Regionがバージニアであった場合

Resources:
  akaneVirginiaACM:
    Type: AWS::CertificateManager::Certificate
    Condition: RegionVirginia
    Properties:
      DomainName: !Sub "*.${DomainName}"
      DomainValidationOptions:
        - DomainName: !Sub "*.${DomainName}"
          HostedZoneId: !Sub '{{resolve:ssm:${SystemName}-${EnvType}-route53-hostzone-id}}'
      ValidationMethod: DNS
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?