はじめに

cloudpackサポートの林です。
AWS CLIにてALB(Application Load Balancer)にセキュリティグループを設定する際の仕様について書きます。

なぜ書いたのか

以前、AWS CLIのset-security-groups コマンドを使用してセキュリティグループを設定すると既に設定してあるセキュリティグループの設定はそのままで追加されるのか、もしくは既存のセキュリティグループは一度リセットされるのかという問い合わせを受けたことがあったためです。

結論

set-security-groups のコマンドでは、既存のセキュリティグループの設定は一度リセットされ、CLIで指定したセキュリティグループのみが適用されます。
そのため、設定したいセキュリティグループ IDを全て指定する必要があります。

実際の検証結果

※セキュリティグループ IDの記載があるため、一部記述を置き換えてます。

1. ALB(hayashi-ALB)の現在のセキュリティグループの設定を確認します。

[cloudshell-user ~]$ aws elbv2 describe-load-balancers --load-balancer-arns arn:aws:elasticloadbalancing:ap-northeast-1::loadbalancer/app/hayashi-ALB/abc1112223334445 --query "LoadBalancers[0].SecurityGroups" --output text
sg-a0000000000000000 sg-b1111111111111111
[cloudshell-user ~]$

セキュリティグループ ID:sg-a0000000000000000sg-b1111111111111111
が現在hayashi-ALBに登録されています。

2.hayashi-ALBにset-security-groups コマンドを使用してセキュリティグループを登録します。

[cloudshell-user ~]$ aws elbv2 set-security-groups --load-balancer-arn arn:aws:elasticloadbalancing:ap-northeast-1::loadbalancer/app/hayashi-ALB/abc1112223334445 --security-groups sg-c2222222222222222
{
"SecurityGroupIds": [
"sg-c2222222222222222"
]
}
[cloudshell-user ~]$

セキュリティグループ ID:sg-c2222222222222222
を指定して登録します。

3.再度ALB(hayashi-ALB)の現在のセキュリティグループの設定を確認します。

[cloudshell-user ~]$ aws elbv2 describe-load-balancers --load-balancer-arns arn:aws:elasticloadbalancing:ap-northeast-1::loadbalancer/app/hayashi-ALB/abc1112223334445 --query "LoadBalancers[0].SecurityGroups" --output text
sg-c2222222222222222
[cloudshell-user ~]$

セキュリティグループ ID:sg-c2222222222222222は登録されていますが、
セキュリティグループ ID:sg-a0000000000000000sg-b1111111111111111
はオーバーライドされる影響で設定されていない状態になっています。

まとめ

以上、AWS CLIにてALBにセキュリティグループを設定する際の仕様となります。
set-security-groups コマンドを使用した際には既存のセキュリティグループも指定しなければ既に設定されていたセキュリティグループの設定はリセットされ、オーバーライドされてしまうため注意が必要です。

その他

AWS CLIのコマンドリファレンス等は以下を参考にしています。