【AWS】手動設定されたNACLエントリーをスタック管理下にする

# はじめに
仕事でstackからNACL作成しているが、エントリーの一部が手動作成されている場面に遭遇。
手動作成されたエントリーをstack管理と出来るのかを確認したく、検証したもの。
備忘の意味も込めて検証結果を記載する。

### ◼️検証シナリオ
スタックで作成したNACLエントリーと手動作成したNACLエントリーが混在している状態。
この手動作成されたエントリーをスタック管理化とする。

#### ・検証説明図
以下エントリー2をスタック管理に変更する。
![状況.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852164/b6d378d0-f4a2-ea86-6c1e-8e8fb8a2bd4f.png)


#### ・Stackテンプレート(抜粋)
スタックで作成したNACLエントリー　
```YAML:SET_NACL
  InboundNetworkAclEntry10001:
    Type: 'AWS::EC2::NetworkAclEntry'
    Properties:
      NetworkAclId: !Ref NetworkAcl
      RuleNumber: '10001'
      Protocol: '6'
      RuleAction: allow
      Egress: 'false'
      CidrBlock: 0.0.0.0/0
      PortRange:
        From: '80'
        To: '80'
  OutBoundNetworkAclEntry10001:
    Type: 'AWS::EC2::NetworkAclEntry'
    Properties:
      NetworkAclId: !Ref NetworkAcl
      RuleNumber: '10001'
      Protocol: '6'
      RuleAction: allow
      Egress: 'true'
      CidrBlock: 0.0.0.0/0
      PortRange:
        From: '80'
        To: '80'
```
#### ・MCから現状設定を確認
10001がスタックで作成されたエントリー
10002が手動作成されたエントリー
　※デフォルトのエントリーは、画像からは割愛
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852164/ba88fb1e-4461-0b80-1fe1-16a659192135.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852164/62163927-0db8-b7b4-2df9-9f2be6ddd780.png)

### ◼️検証
#### 1.Stackテンプレート修正
　手動作成したエントリーと同じ情報をStackテンプレートと同じになるように10002を追加
以下修正後のStackテンプレート(抜粋)
```YAML:SET_NACL　
  InboundNetworkAclEntry10001:
    Type: 'AWS::EC2::NetworkAclEntry'
    Properties:
      NetworkAclId: !Ref NetworkAcl
      RuleNumber: '10001'
      Protocol: '6'
      RuleAction: allow
      Egress: 'false'
      CidrBlock: 0.0.0.0/0
      PortRange:
        From: '80'
        To: '80'
  InboundNetworkAclEntry10002:
    Type: 'AWS::EC2::NetworkAclEntry'
    Properties:
      NetworkAclId: !Ref NetworkAcl
      RuleNumber: '10002'
      Protocol: '6'
      RuleAction: allow
      Egress: 'false'
      CidrBlock: 0.0.0.0/0
      PortRange:
        From: '22'
        To: '22'
  OutBoundNetworkAclEntry10001:
    Type: 'AWS::EC2::NetworkAclEntry'
    Properties:
      NetworkAclId: !Ref NetworkAcl
      RuleNumber: '10001'
      Protocol: '6'
      RuleAction: allow
      Egress: 'true'
      CidrBlock: 0.0.0.0/0
      PortRange:
        From: '80'
        To: '80'
  OutBoundNetworkAclEntry10002:
    Type: 'AWS::EC2::NetworkAclEntry'
    Properties:
      NetworkAclId: !Ref NetworkAcl
      RuleNumber: '10002'
      Protocol: '6'
      RuleAction: allow
      Egress: 'true'
      CidrBlock: 0.0.0.0/0
      PortRange:
        From: '443'
        To: '443'
```
#### 2.スタック更新
　作成したテンプレートを使ってStack更新すると、スタック上は新規追加となる為、add扱いとなった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852164/526aaf5f-cbd5-a044-a787-6e9dcff81d1d.png)
Stack更新のイベント上は既存設定が削除されたり、エラーは表示されない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852164/c63b730c-e4ba-c50a-599e-7f23813e30ba.png)



#### 3.マネージメントコンソールから設定確認
手動作成したエントリーが残っていることを確認。
　※デフォルトのエントリーは、画像からは割愛
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852164/44018c0b-0f87-17a5-99d0-660a45ba5ccb.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852164/79506b3f-e520-91c4-1639-375df5a5dbb9.png)

### ■検証結果
手動作成したエントリーをStackから上書きするように更新しても、一時的に既存設定が削除されたり、エラーで更新できないとはならず、更新可能であることが分かった。
自身の検証だけでは不安であった為、AWSサポートにも聞いてみると、処理としては手動設定したエントリーとStackが紐づくのみと回答あり。

# さいごに
サービスによってStackの挙動は変わる為、都度検証は必要だと思う。
また検証する機会があれば、検証結果を記載したいと思う。