ハンズオン: CDP (website serverless https)¶
目的¶
S3 + Route53 + CloudFrontでサーバレスWebサイトを構築する。
前提¶
作業環境条件¶
本作業は、以下の作業環境で行います。
作業環境条件1: OSとバージョン
本手順は、Amazon Linux "Amazon Linux AMI release 2018.03"以降のOS環境での実施を前提としています。
コマンド:
cat /etc/issue | head -1
結果(例):
Amazon Linux AMI release 2018.03
作業環境条件2: シェルとバージョン
本手順は、bash "4.2.46(2)-release"以降のシェル環境での実施を前提としています。
コマンド:
bash --version -v | head -1
結果(例):
GNU bash, バージョン 4.2.46(2)-release (x86_64-redhat-linux-gnu)
作業環境条件3: AWS CLIのバージョン
本手順は、AWS CLIの最新バージョンでの実施を前提としています。
コマンド:
aws --version
結果(例):
aws-cli/1.16.2 Python/3.6.5 Linux/4.14.59-64.43.amzn1.x86_64 botocore/1.11.2
バージョンが古い場合は最新版に更新しましょう。
コマンド:
sudo -H pip install -U awscli
手順 (構築)¶
ローカル環境での作業¶
- 今回は"${HOME}/tmp/parameter-handson-cli-website-https"をパラメータファイル情報用ディレクトリとします。
ディレクトリが存在することを確認します。
コマンド:
ls -d ${HOME}/tmp/parameter-handson-cli-website-https
結果(例:存在する場合):
${HOME}/tmp/parameter-handson-cli-website-https
存在しない場合は作成します。
コマンド:
mkdir -p ${HOME}/tmp/parameter-handson-cli-website-https
ドメイン名のファイル保管
ドメイン名の変数設定をファイルに記述しておきます。
変数の設定:
DOMAIN_NAME='<ドメイン名>'
コマンド:
cat << EOF >> ${HOME}/q-domain.tmp DOMAIN_NAME='${DOMAIN_NAME}' ROUTE53_ZONE_NAME="\${DOMAIN_NAME}" EOF cat ${HOME}/q-domain.tmp
結果(例):
<ドメイン名>
注釈
手順書において、以下の変数を宣言する場合、
- DOMAIN_NAME
- ROUTE53_ZONE_NAME
以下のコマンドを実行することで、各変数にドメイン名が格納されます。
コマンド:
. ~/q-domain.tmp
変数にドメインが格納されているか確認する場合は、以下のコマンドを実行します。
コマンド:
echo ${DOMAIN_NAME}
結果(例):
<ドメイン名>
コマンド:
echo ${ROUTE53_ZONE_NAME}
結果(例):
<ドメイン名>
事前作業. Route53委任セットの作成¶
1. コンテンツ用S3バケットの構築 (S3権限での作業)¶
- 1.1. S3バケットの作成 (handson-cli-website-https-XXXXXXXXXXXX)
- 1.2. S3バケットの作成 (handson-cli-website-https-XXXXXXXXXXXX-log)
- 1.3. S3バケットACL更新 (LogDelivery: handson-cli-website-https-XXXXXXXXXXXX-log)
- 1.4. S3バケット ログ設定 (handson-cli-website-https-XXXXXXXXXXXX)
- 1.5. S3バケットポリシドキュメントの作成 (handson-cli-website-https-XXXXXXXXXXXX)
- 1.6. S3バケットポリシ作成 (handson-cli-website-https-XXXXXXXXXXXX)
- 1.7. S3バケット WebsiteHosting設定 (handson-cli-website-https-XXXXXXXXXXXX)
2. コンテンツ用S3バケットの構築 (IAM権限での作業)¶
3. コンテンツ保守用環境の構築 (IAM権限での作業)¶
- 3.1. IAMグループの作成 (handson-cli-website-https-webMaintGroup)
- 3.2. IAMグループのポリシー追加 (handson-cli-website-https-webMaintGroup: handson-cli-website-https-S3BucketWritePolicy)
- 3.3. IAMユーザの作成 (handson-cli-website-https-webMaintUser)
- 3.4. IAMユーザのIAMグループへの追加 (handson-cli-website-https-webMaintUser: handson-cli-website-https-webMaintGroup)
- 3.5. APIアクセスキーの作成 (handson-cli-website-https-webMaintUser)
- 3.6. AWS認証ファイルの作成
4. コンテンツのリリース¶
5. Route53ゾーンの作成 (Route53権限での作業)¶
6. SSL証明書の作成 (ACM & Route53権限での作業)¶
7. HTTPS環境の構築 (S3 & CloudFront権限での作業)¶
8. CloudFrontディストリビューションに対するポリシ作成 (IAM権限での作業)¶
9. DNSリソースレコードの作成 (Route53権限での作業)¶
注釈
ブラウザで以下のURLにアクセスしてみます。
https://handson-cli.<ドメイン名>/
コンテンツが表示されればOKです。
10. コンテンツの修正¶
注釈
以下のコンテンツファイルを修正してみます。
- ${HOME}/conf/handson-cli-website-https-contents/jawsug-cli-sample-web/index.html
(例):
修正前: sampleイメージです。 修正後: sampleイメージです!
手順 (破棄)¶
1. DNSリソースレコードの削除 (Route53権限での作業)¶
2. HTTPS環境の停止 (CloudFront権限での作業)¶
3. コンテンツ更新権限の剥奪 (IAM権限での作業)¶
4. コンテンツ保守用環境の破棄 (IAM権限での作業)¶
- 4.1. APIアクセスキーの全削除 (handson-cli-website-https-webMaintUser)
- 4.2. AWS認証ファイルの削除 (handson-cli-website-https-webMaintUser)
- 4.3. IAMユーザのIAMグループからの削除 (handson-cli-website-https-webMaintUser: handson-cli-website-https-webMaintGroup)
- 4.4. IAMユーザの削除 (handson-cli-website-https-webMaintUser)
- 4.5. IAMグループのポリシ削除 (handson-cli-website-https-webMaintGroup: handson-cli-website-https-S3BucketWritePolicy)
- 4.6. IAMグループの削除 (handson-cli-website-https-webMaintGroup)
5. CloudFrontディストリビューションに対するポリシ削除 (IAM権限での作業)¶
6. HTTPS環境の破棄 (CloudFront権限での作業)¶
7. SSL証明書の破棄 (Route53 & ACM権限での作業)¶
8. Route53ゾーンの破棄 (Route53権限での作業)¶
9. コンテンツ用S3バケットの破棄 (IAM権限での作業)¶
10. コンテンツ用S3バケットの破棄 (S3権限での作業)¶
事後作業. Route53委任セットの削除¶
注釈
WhoisDBからRoute53 委任セットのNSを削除し、代替のNSを登録します。
ドメイン名のファイル削除
ドメイン名の変数設定を削除しておきます。
コマンド:
if [ -e ~/q-domain.tmp ];then rm ~/q-domain.tmp; fi
結果(例):
(出力なし)
コンテンツの削除
コマンド:
rm -Rf ${HOME}/conf/handson-cli-website-https-contents
結果(例):
(出力なし)
設定ファイルの削除
コマンド:
rm -Rf ${HOME}/conf/handson-cli-website-https-conf