はじめに
こんにちは、クラウド事業部の中嶋です。
現場業務中にAWS環境内の別の環境にSGを移動させたい!といったことがありまして~
具体的には、A環境にあるSGをB環境にも同じモノを作成したいといった感じです。
その際、マネコン操作で同じ設定値をポチポチする方法もありましたが、数も多くてそんなに時間もかけられない状況・・・。
コマンド操作で何とかならないものかといったところで、いい方法があったのでその紹介になります!
作業の流れ
- A環境内のB環境に送りたい対象SGが紐づいたサーバAにアクセスしてエクスポートするコマンドを実行(json形式でサーバA内に抽出)
- ターミナルソフトのファイル転送機能で、local環境にjsonファイルを移動
- local環境からB環境サーバへ③同様にターミナルソフトのファイル転送機能を使用してファイルを移動
- AWSのマネコン上でB環境で使用するSGの箱(SGの外枠だけ作成して、インバウンド・アウトバウンドルール設定せず)を作成 ※コマンドで作成でもOK
- B環境サーバ内にてjsonファイルをインポートするコマンドを実行
作業の流れはざっくりこのような運びで実施しました!
①A環境内のB環境に送りたい対象SGが紐づいたサーバAにアクセスしてエクスポートするコマンドを実行
A環境の対象サーバにSSHした後に下記コマンドを実行する
aws ec2 describe-security-groups --group-ids YOUR_SECURITY_GROUP_ID --query 'SecurityGroups[0].IpPermissions' > /tmp/sg_rules.json
・YOUR_SECURITY_GROUP_ID:こちらはA環境からB環境に送りたい対象のSGのIDを記載 ・/tmp/sg_rules.json:任意のパス配下にjson形式で格納 ※sg_rules.json:sg_rulesはSGの名前に置き換え可
json形式でエクスポートできたか確認
[root@xx.xx.xx.xx ~]# ll /tmp 合計 xx -rw-r--r-- 1 root root xxxxx mm dd hh:mm sg_rules.json ★
②ターミナルソフトのファイル転送機能で、local環境にjsonファイルを移動
TeraTermでしたら、メニューバーの「ファイル」⇒「SSH SCP」を使用して【sg_rules.json】をlocal環境へ送る
from:/tmp/sg_rules.json to:localのデスクトップ上
③local環境からB環境サーバへ③同様にターミナルソフトのファイル転送機能を使用してファイルを移動
こちらに関しても、②と同様に実施
下記が入れ替わる点だけ注意
from:localのデスクトップ上に格納した【sg_rules.json】を指定 to:B環境の/tmp配下へ
④AWSのマネコン上でB環境で使用するSGの箱(SGの外枠だけ作成して、インバウンド・アウトバウンドルール設定せず)を作成
SG作成に関しては名前とVPCを指定し、インバウンド・アウトバウンドルールは未設定でOKです。
下記を参考に・・
タグはお好みで!
⑤B環境サーバ内にてjsonファイルをインポートするコマンドを実行
aws ec2 authorize-security-group-ingress --group-id YOUR_NEW_SG_ID --ip-permissions file://sg_rules.json
YOUR_NEW_SG_ID:④で作成したSGのIDを記載「このSGにA環境のSGの設定がインポートされる」 ※パスを指定したい場合は、file://sg_rules.json⇒file:///tmp/sg_rules.json 等で試してみてください。
最後にマネコン上でSGにインバウンド・アウトバウンドルールが追加されてるかを確認してみてください。
こちらの記事が作業負担の軽減に繋がれは幸いです!
APCはAWSセレクトティアサービスパートナー認定を受けております。
その中で私達クラウド事業部はAWSなどのクラウド技術を活用したSI/SESのご支援をしております。
https://www.ap-com.co.jp/service/utilize-aws/
また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。