プロジェクト

全般

プロフィール

EC2起動と停止のタイマー設定手順 » 履歴 » バージョン 7

« 前 - バージョン 7/10 (差分) - 次 » - 最新版
田中 克典, 2026/08/04 06:31


EC2起動と停止のタイマー設定手順

EC2の起動と停止をタイマーで自動化する手順
すべてAWSコンソールで作業する

1.許可ポリシーの作成
 IAM→ポリシー→ポリシーの作成
 ポリシーエディタをJSONモードに変更し、下記の内容を貼り付け

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:StartInstances",
        "ec2:StopInstances" 
      ],
      "Resource": "arn:aws:ec2:*:*:instance/*" 
    }
  ]
}

 任意のポリシー名を入力し保存

2.ロールの作成
 IAM→ロールー→ロールを作成
 以下を入力し、次へ
  信頼されたエンティティタイプ:AWSのサービス
  ユースケース:EC2
 許可ポリシーに1で作成したポリシーを選択して、次へ
 任意のロール名を入力
 信頼ポリシーを下記に変更

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "scheduler.amazonaws.com" 
      },
      "Action": "sts:AssumeRole" 
    }
  ]
}

 ロールを作成を押下

3.スケジュールの作成
 Amazon EventBridge→スケジュール
 スケジュールを作成
 EC2起動で使用する任意のスケジュール名を入力
 スケジュールのパターンに以下を入力して、次へ
  頻度:定期的なスケジュール
  タイムゾーン:(UTC+09:00) Asia/Tokyo
  スケジュールの種類:cronベースのスケジュール
  cron式:cron式のフォーマットに従い任意の値
  フレックスタイムウィンドウ:任意の値
 

echo 'Acquire::Check-Valid-Until "false";' | sudo tee /etc/apt/apt.conf.d/99no-check-valid-until

更新
sudo apt clean
sudo apt update

インストールする
sudo apt install -y snapd
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

------
バージョンの確認
certbot --version

2.JPRS 用ディレクトリ作成(分離運用)
sudo mkdir -p /etc/letsencrypt-jprs
sudo mkdir -p /var/lib/letsencrypt-jprs
sudo mkdir -p /var/log/letsencrypt-jprs

3.JPRS ACME アカウント登録(EAB)
sudo certbot register \
  --config-dir /etc/letsencrypt-jprs \
  --work-dir /var/lib/letsencrypt-jprs \
  --logs-dir /var/log/letsencrypt-jprs \
  -m 'admin@example.jp' \
  --agree-tos \
  --eab-kid '<JPRS_EAB_KID>' \
  --eab-hmac-key '<JPRS_EAB_HMAC_KEY>' \
  --server 'https://acme.amecert.jprs.jp/DV/getDirectory'

4ー1.証明書の発行(Webroot 方式・通常ドメイン用)
sudo certbot certonly \
  --config-dir /etc/letsencrypt-jprs \
  --work-dir /var/lib/letsencrypt-jprs \
  --logs-dir /var/log/letsencrypt-jprs \
  --webroot -w /var/www/html \
  --key-type rsa \
  -d example.jp -d www.example.jp \
  --server 'https://acme.amecert.jprs.jp/DV/getDirectory'

4-2.証明書の発行(DNS-01 方式・ワイルドカード対応)
DNSテキストレコードを発行
sudo certbot certonly \
  --config-dir /etc/letsencrypt-jprs \
  --work-dir /var/lib/letsencrypt-jprs \
  --logs-dir /var/log/letsencrypt-jprs \
  --manual \
  --preferred-challenges dns \
  --key-type rsa \
  -d '*.example.jp' -d example.jp \
  --server 'https://acme.amecert.jprs.jp/DV/getDirectory'

発行されたTXTレコードをDNSに登録
DNSが設定されたら、
dig TXT _acme-challenge.example.jp +short

5.下記のようなファイルが生成される
/etc/letsencrypt-jprs/live/example.jp/fullchain.pem
/etc/letsencrypt-jprs/live/example.jp/privkey.pem

6.APACHEのConfigを設定する
<VirtualHost *:443>
  ServerName example.jp
  ServerAlias www.example.jp

  DocumentRoot /var/www/html

  SSLEngine on
  SSLCertificateFile /etc/letsencrypt-jprs/live/example.jp/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt-jprs/live/example.jp/privkey.pem
</VirtualHost>

7.定期的な更新方法
sudo certbot renew \
  --config-dir /etc/letsencrypt-jprs \
  --work-dir /var/lib/letsencrypt-jprs \
  --logs-dir /var/log/letsencrypt-jprs \
  --dry-run

このコマンドを入れた後にHTTPDを再起動する
service httpd restart

これをシェルスクリプトにして、月に1回事項する
10 1 1 * * root /home/bitnami/batchfiles/certbot-jprs.sh