

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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`ます。