ハンズオン(簡易版): ACM入門

後始末2. ACM証明書の削除 (handson-cli-acm.<事前に用意した独自ドメイン>-certificate)

作業の目的 [why]

ホスト名"handson-cli-acm.<事前に用意した独自ドメイン>"のACM証明書"handson-cli-acm.<事前に用意した独自ドメイン>-certificate"を削除します。

完了条件 [after]

本手順の主処理は、以下の完了条件を満たしたときに成功したものとします。

完了条件1

ACM証明書名"handson-cli-acm.<事前に用意した独自ドメイン>-certificate"が存在しない。

事前条件 [before]

本手順の主処理は、以下の事前条件を満たしているときに実施します。

事前条件1

ACM証明書名"handson-cli-acm.<事前に用意した独自ドメイン>-certificate"が存在する。

手順の目的 [why]

ホスト名"handson-cli-acm.<事前に用意した独自ドメイン>"のACM証明書"handson-cli-acm.<事前に用意した独自ドメイン>-certificate"を削除します。

設定値の指定

設定値の指定

手順に必要な設定値を変数に格納をします。

0. ACM証明書が存在するリージョン

ACM証明書が存在するリージョンを指定します。

コマンド:

export AWS_DEFAULT_REGION='us-east-1'

2. ACM証明書タグ名

ドメイン名を指定します。

変数の設定:

DIR_TMP="${HOME}/environment/tmp-handson-cli-acm"

変数の設定:

FILE_TMP="${DIR_TMP}/handson-cli-acm-domain.tmp" \
  && echo ${FILE_TMP}

結果(例):

${HOME}/environment/tmp-handson-cli-acm/handson-cli-acm-domain.tmp

コマンド:

source ${FILE_TMP}

変数の設定:

HOST_NAME='handson-cli-acm'

変数の設定:

ACM_DOMAIN_NAME="${HOST_NAME}.${DOMAIN_NAME}" \
  && echo ${ACM_DOMAIN_NAME}

結果(例):

handson-cli-acm.<事前に用意した独自ドメイン>

ACM証明書タグ名を指定します。

変数の設定:

ACM_CERTIFICATE_TAG_NAME="${ACM_DOMAIN_NAME}-certificate" \
  && echo ${ACM_CERTIFICATE_TAG_NAME}

結果(例):

handson-cli-acm.<事前に用意した独自ドメイン>-certificate

設定値の確認

各変数に正しい設定値が格納されていることを確認しながら保存します。

変数の確認:

cat << END

  # 0. AWS_DEFAULT_REGION:"us-east-1"
       AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}"

  # 1. ACM_CERTIFICATE_TAG_NAME:"handson-cli-acm.<事前に用意した独自ドメイン>-certificate"
       ACM_CERTIFICATE_TAG_NAME="${ACM_CERTIFICATE_TAG_NAME}"

END

下段の変数が入っていない、もしくは上段と同等の値が入っていない場合は、それぞれの手順番号に戻って変数の設定を行います。

処理の実行

ACM証明書のARNを取得します。

コマンド:

for i in $( 
  aws acm list-certificates \
    --query "CertificateSummaryList[].CertificateArn" \
    --output text \
); do
  j=$( \
    aws acm list-tags-for-certificate \
      --certificate-arn ${i} \
      --query "Tags[?Key == \`Name\` && Value == \`${ACM_CERTIFICATE_TAG_NAME}\`].Value" \
      --output text \
  )
  if [ "${j}" == "${ACM_CERTIFICATE_TAG_NAME}" ]; then \
    ACM_CERTIFICATE_ARN=$( \
      aws acm list-certificates \
        --query "CertificateSummaryList[?CertificateArn == \`${i}\`].CertificateArn" \
        --output text \
    ) \
      && echo "${ACM_CERTIFICATE_ARN}"
  fi
done

結果(例):

arn:aws:acm:us-east-1:XXXXXXXXXXXX:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

課題

list-certificatesコマンドがタグ表示できないため、同名の証明書が複数ある場合、全ての証明書をlist-tags-for-certificateコマンドでタグの有無をチェックするしか方法がない。

ACM証明書を削除します。

変数の確認:

cat << END

  # ACM_CERTIFICATE_ARN:"arn:aws:acm:us-east-1:XXXXXXXXXXXX:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    ACM_CERTIFICATE_ARN="${ACM_CERTIFICATE_ARN}"

END

コマンド:

aws acm delete-certificate \
  --certificate-arn ${ACM_CERTIFICATE_ARN}

結果(例):

(戻り値なし)

完了確認

「ACM証明書名"handson-cli-acm.<事前に用意した独自ドメイン>-certificate"が存在しない。」ことを確認します。

コマンド:

for i in $( 
  aws acm list-certificates \
    --query "CertificateSummaryList[].CertificateArn" \
    --output text \
); do
  j=$( \
    aws acm list-tags-for-certificate \
      --certificate-arn ${i} \
      --query "Tags[?Key == \`Name\` && Value == \`${ACM_CERTIFICATE_TAG_NAME}\`].Value" \
      --output text \
  )
  if [ "${j}x" != 'x' ]; then echo "${j}"; fi
done

結果(例):

(出力なし)

課題

list-certificatesコマンドがタグ表示できないため、同名の証明書が複数ある場合、全ての証明書をlist-tags-for-certificateコマンドでタグの有無をチェックするしか方法がない。

完了

(参考) マネジメントコンソールの確認

  • ACMダッシュボード( https://console.aws.amazon.com/acm/home#/welcome )にアクセスします。

  • 右上のリージョンメニューから"バージニア北部"を選択します。

  • 左ペインの"証明書を一覧"をクリックします。

証明書一覧(画面)

  • 一覧にドメイン名"handson-cli-acm.<事前に用意した独自ドメイン>"の証明書が表示されていないことを確認します。