LoginSignup
0
0

More than 1 year has passed since last update.

EC2に自動でEIPを割り当ててくれるシェルスクリプト

Posted at

概要

普段、Terraformを使用している私にとって、EC2を起動した際などに使用するEIPは
ドメインを割り振る関係上、簡単に変更できないように
Terraformのライフサイクルに含めたくないケースが多い。
そんなときに便利な
EIPを作成し、EC2へそのEIPを自動で割り当ててくれるシェルスクリプトを紹介する。

動作環境

  • Linux
    • Debian [v10.8]
  • Windows
    • WSL の Ubuntu [v20.04]
    • WSLの構築については以下を参照

シェルスクリプト

#!/bin/bash
set -eu

create_and_set_eip () {
    # サーバ用Elastic IP作成 and EC2連携
    aws ec2 allocate-address --domain vpc --tag-specifications "ResourceType=elastic-ip,Tags=[{Key=Name,Value=${AWS_PROFILE}}]"
    aws ec2 associate-address \
    --allocation-id `aws ec2 describe-addresses --filter "Name=tag:Name,Values=${AWS_PROFILE}" --query 'Addresses[*].AllocationId[]' --output text` \
    --instance `aws ec2 describe-instances --filter "Name=tag:Name,Values=${AWS_PROFILE}" "Name=instance-state-name,Values=running" --query 'Reservations[*].Instances[*].InstanceId[]' --output text`
}

# [source set_aws_profile.sh] を実行し、デプロイ先を指定しているか確認
if [ ${AWS_PROFILE} = '******(アプリ名など)' ]; then
    create_and_set_eip
    echo '----- Elastic IP作成 and EC2連携完了 -----'
else
    echo '[source set_aws_profile.sh] を実行し、デプロイ先を指定して下さい。'
fi

説明

1. 事前準備

  • AWS CLI のインストール
  • AWSのクレデンシャル情報などを保存する、名前付きプロファイルの名前を
    EC2のNAMEタグと一致させるようにする。(以下コマンドで設定するやつ)
aws configure --profile ******(アプリ名など)
  • 上記の名前付きプロファイルの名前を環境変数(AWS_PROFILE)に設定しておく
export AWS_PROFILE=******(アプリ名など)

2. ポイント解説

  • 1. 事前準備 で設定したように、名前付きプロファイルの名前を
    EC2のNAMEタグと一致させるようにする
    ことで、デプロイ先が変わっても
    上記シェルスクリプトをそのまま流用することができる
  • 間違って操作するとヤバいことになるEIPの操作を自動化できる
  • 以前紹介した、私のTerraform運用オペレーションに組み込むことができる

参考

AWS CLIのフィルターとクエリーの使い方についてまとめてみた

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