

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS CloudFormation Guard 규칙과 함께 입력 파라미터 사용
<a name="using-input-parameters"></a>

AWS CloudFormation Guard 를 사용하면 검증 중에 동적 데이터 조회에 입력 파라미터를 사용할 수 있습니다. 이 기능은 규칙에서 외부 데이터를 참조해야 할 때 특히 유용합니다. 그러나 입력 파라미터 키를 지정할 때 Guard에서는 충돌하는 경로가 없어야 합니다.

## 사용 방법
<a name="how-to-use-input-parameters"></a>

1. `--input-parameters` 또는 `-i` 플래그를 사용하여 입력 파라미터가 포함된 파일을 지정합니다. 여러 입력 파라미터 파일을 지정할 수 있으며 결합되어 공통 컨텍스트를 형성합니다. 입력 파라미터 키에는 충돌하는 경로가 있을 수 없습니다.

1. `--data` 또는 `-d` 플래그를 사용하여 검증할 실제 템플릿 파일을 지정합니다.

## 사용 예시
<a name="input-parameters-example-usage"></a>

1. 입력 파라미터 파일(예: `network.yaml`)을 생성합니다.

   ```
   NETWORK:
     allowed_security_groups: ["sg-282850", "sg-292040"]
     allowed_prefix_lists: ["pl-63a5400a", "pl-02cd2c6b"]
   ```

1. 가드 규칙 파일에서 다음 파라미터를 참조합니다(예: `security_groups.guard`).

   ```
   let groups = Resources.*[ Type == 'AWS::EC2::SecurityGroup' ]
   
   let permitted_sgs = NETWORK.allowed_security_groups
   let permitted_pls = NETWORK.allowed_prefix_lists
   rule check_permitted_security_groups_or_prefix_lists(groups) {
       %groups {
           this in %permitted_sgs or
           this in %permitted_pls
       }
   }
   
   rule CHECK_PERMITTED_GROUPS when %groups !empty {
       check_permitted_security_groups_or_prefix_lists(
          %groups.Properties.GroupName
       )
   }
   ```

1. 실패한 데이터 템플릿(예: `security_groups_fail.yaml`)을 생성합니다.

   ```
   # ---
   # AWSTemplateFormatVersion: 2010-09-09
   # Description: CloudFormation - EC2 Security Group
   
   Resources:
     mySecurityGroup:
       Type: AWS::EC2::SecurityGroup
       Properties:
         GroupName: wrong
   ```

1. validate 명령을 실행합니다.

   ```
   cfn-guard validate -r security_groups.guard -i network.yaml -d security_groups_fail.yaml
   ```

   이 명령에서:
   + `-r`는 규칙 파일을 지정합니다.
   + `-i`는 입력 파라미터 파일을 지정합니다.
   + `-d`는 검증할 데이터 파일(템플릿)을 지정합니다.

## 다중 입력 파라미터
<a name="multiple-input-parameters"></a>

여러 입력 파라미터 파일을 지정할 수 있습니다.

```
cfn-guard validate -r rules.guard -i params1.yaml -i params2.yaml -d template.yaml
```

로 지정된 모든 파일이 결합되어 파라미터 조회를 위한 단일 컨텍스트를 형성`-i`합니다.