

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

# セットアップ AWS CloudFormation Guard
<a name="setting-up"></a>

AWS CloudFormation Guard はオープンソースのコマンドラインインターフェイス (CLI) です。これは、ポリシールールを記述し、それらのルールに対して構造化された階層 JSON および YAML データを検証するためのシンプルなドメイン固有の言語を提供します。ルールは、セキュリティ、コンプライアンスなどに関連する会社のポリシーガイドラインを表すことができます。構造化階層データは、コードとして記述されたクラウドインフラストラクチャを表すことができます。たとえば、CloudFormation テンプレートで暗号化された Amazon Simple Storage Service (Amazon S3) バケットを常にモデル化するためのルールを作成できます。

以下のトピックでは、選択したオペレーティングシステムまたは AWS Lambda 関数を使用して Guard をインストールする方法について説明します。

**Topics**
+ [Linux および macOS 用の Guard のインストール](setting-up-linux.md)
+ [Windows 用 Guard のインストール](setting-up-windows.md)
+ [AWS Lambda 関数としての Guard のインストール](setting-up-lambda.md)

# Linux および macOS 用の Guard のインストール
<a name="setting-up-linux"></a>

Linux および macOS AWS CloudFormation Guard 用の をインストールするには、構築済みのリリースバイナリ、Cargo、または Homebrew を使用します。

## ビルド済みリリースバイナリから Guard をインストールする
<a name="install-pre-built-binaries"></a>

ビルド済みのバイナリから Guard をインストールするには、次の手順に従います。

1. ターミナルを開き、次のコマンドを実行します。

   ```
   curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/aws-cloudformation/cloudformation-guard/main/install-guard.sh | sh
   ```

1. 次のコマンドを実行して、`PATH`変数を設定します。

   ```
   export PATH=~/.guard/bin:$PATH
   ```

   *結果:* Guard が正常にインストールされ、 `PATH`変数が設定されました。

   1. (オプション) Guard のインストールを確認するには、次のコマンドを実行します。

     ```
     cfn-guard --version
     ```

     このコマンドは、以下の出力を返します。

     ```
     cfn-guard 3.1.2
     ```

## Cargo から Guard をインストールする
<a name="install-guard-from-cargo"></a>

貨物は Rust パッケージマネージャーです。Cargo を含む Rust をインストールするには、次の手順を実行します。次に、Cargo から Guard をインストールします。

1. ターミナルから次のコマンドを実行し、画面の指示に従って Rust をインストールします。

   ```
   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
   ```

   1. (オプション) Ubuntu 環境の場合は、次のコマンドを実行します。

     ```
     sudo apt-get update; sudo apt install build-essential
     ```

1. `PATH` 環境変数を設定し、次のコマンドを実行します。

   ```
   source $HOME/.cargo/env
   ```

1. Cargo がインストールされたら、次のコマンドを実行して Guard をインストールします。

   ```
   cargo install cfn-guard
   ```

   *結果*: Guard が正常にインストールされました。

   1. (オプション) Guard のインストールを確認するには、次のコマンドを実行します。

     ```
     cfn-guard --version
     ```

     このコマンドは、以下の出力を返します。

     ```
     cfn-guard 3.1.2
     ```

## Homebrew から Guard をインストールする
<a name="install-guard-from-homebrew"></a>

Homebrew は、macOS および Linux 用のパッケージマネージャーです。Homebrew をインストールするには、次の手順を実行します。次に、Homebrew から Guard をインストールします。

1. ターミナルから次のコマンドを実行し、画面の指示に従って Homebrew をインストールします。

   ```
   /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
   ```

1. Homebrew がインストールされたら、次のコマンドを実行して Guard をインストールします。

   ```
   brew install cloudformation-guard
   ```

   *結果*: Guard が正常にインストールされました。

   1. (オプション) Guard のインストールを確認するには、次のコマンドを実行します。

     ```
     cfn-guard --version
     ```

     このコマンドは、以下の出力を返します。

     ```
     cfn-guard 3.1.2
     ```

# Windows 用 Guard のインストール
<a name="setting-up-windows"></a>

Windows AWS CloudFormation Guard 用 は、Cargo または Chocolatey を通じてインストールできます。

## 前提条件
<a name="w2aab8c16b5"></a>

コマンドラインインターフェイスから Guard をビルドするには、Build Tools for Visual Studio 2019 をインストールする必要があります。

1. Build Tools [for Visual Studio 2019 ウェブサイトから Microsoft Visual C\$1\$1 ビルドツール](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019)をダウンロードします。

1. インストーラを実行し、デフォルトを選択します。

## Cargo から Guard をインストールする
<a name="install-guard-from-cargo"></a>

Cargo は Rust パッケージマネージャーです。Cargo を含む Rust をインストールするには、次の手順を実行します。次に、Cargo から Guard をインストールします。

1. [Rust をダウンロード](https://forge.rust-lang.org/infra/other-installation-methods.html#other-ways-to-install-rustup)し、**rustup-init.exe** を実行します。

1. コマンドプロンプトから、デフォルトのオプションである **1** を選択します。

   このコマンドは、以下の出力を返します。

   ```
   Rust is installed now. Great!
       
       To get started you may need to restart your current shell.
       This would reload its PATH environment variable to include
       Cargo's bin directory (%USERPROFILE%\.cargo\bin).
       
       Press the Enter key to continue.
   ```

1. インストールを完了するには、**Enter **キーを押します。

1. Cargo がインストールされたら、次のコマンドを実行して Guard をインストールします。

   ```
   cargo install cfn-guard
   ```

   *結果*: Guard が正常にインストールされました。

   1. (オプション) Guard のインストールを確認するには、次のコマンドを実行します。

     ```
     cfn-guard --version
     ```

     このコマンドは、以下の出力を返します。

     ```
     cfn-guard 3.1.2
     ```

## Chocolatey から Guard をインストールする
<a name="install-guard-from-chocolatey"></a>

Chocolatey は Windows のパッケージマネージャーです。Chocolatey をインストールするには、次の手順を実行します。次に、Chocolatey から Guard をインストールします。

1. このガイドに従って [Chocolatey をインストール](https://chocolatey.org/install)します。

1. Chocolatey がインストールされたら、次のコマンドを実行して Guard をインストールします。

   ```
   choco install cloudformation-guard
   ```

   *結果*: Guard が正常にインストールされました。

   1. (オプション) Guard のインストールを確認するには、次のコマンドを実行します。

     ```
     cfn-guard --version
     ```

     このコマンドは、以下の出力を返します。

     ```
     cfn-guard 3.1.2
     ```

# AWS Lambda 関数としての Guard のインストール
<a name="setting-up-lambda"></a>

Rust パッケージマネージャーである Cargo AWS CloudFormation Guard を使用して をインストールできます。*Guard as an AWS Lambda* function (`cfn-guard-lambda`) は、Lambda 関数として使用できる Guard (`cfn-guard`) を囲む軽量ラッパーです。

## 前提条件
<a name="guard-as-lambda-prerequisites"></a>

Guard を Lambda 関数としてインストールする前に、次の前提条件を満たす必要があります。
+ AWS Command Line Interface (AWS CLI) Lambda 関数をデプロイして呼び出すためのアクセス許可で設定されています。詳細については、「[Configuring the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)」を参照してください。
+  AWS Identity and Access Management (IAM) AWS Lambda の実行ロール。詳細については、[AWS Lambda 「実行ロール](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)」を参照してください。
+ CentOS/RHEL 環境では、`musl-libc`パッケージリポジトリを yum 設定に追加します。詳細については、[「ngompa/musl-libc](https://copr.fedorainfracloud.org/coprs/ngompa/musl-libc/)」を参照してください。

## Rust パッケージマネージャーをインストールする
<a name="install-rust-and-cargo"></a>

Cargo は Rust パッケージマネージャーです。Cargo を含む Rust をインストールするには、次の手順を実行します。

1. ターミナルから次のコマンドを実行し、画面の指示に従って Rust をインストールします。

   ```
   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
   ```

   1. (オプション) Ubuntu 環境の場合は、次のコマンドを実行します。

     ```
     sudo apt-get update; sudo apt install build-essential
     ```

1. `PATH` 環境変数を設定し、次のコマンドを実行します。

   ```
   source $HOME/.cargo/env
   ```

## Lambda 関数として Guard をインストールする (Linux、macOS、または Unix)
<a name="to-isntall-guard-as-a-lambda"></a>

Guard を Lambda 関数としてインストールするには、次の手順を実行します。

1. コマンドターミナルから、次のコマンドを実行します。

   ```
   cargo install cfn-guard-lambda
   ```

   1. (オプション) Lambda 関数としての Guard のインストールを確認するには、次のコマンドを実行します。

     ```
     cfn-guard-lambda --version
     ```

     このコマンドは、以下の出力を返します。

     ```
     cfn-guard-lambda 3.1.2
     ```

1. `musl` サポートをインストールするには、次のコマンドを実行します。

   ```
   rustup target add x86_64-unknown-linux-musl
   ```

1. でビルドし`musl`、ターミナルで次のコマンドを実行します。

   ```
   cargo build --release --target x86_64-unknown-linux-musl
   ```

   [カスタムランタイム](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html)の場合、 にはデプロイパッケージ .zip ファイル`bootstrap`の名前の実行可能ファイル AWS Lambda が必要です。生成された`cfn-lambda`実行可能ファイルの名前を に変更し`bootstrap`、.zip アーカイブに追加します。

   1. macOS 環境の場合は、Rust プロジェクトのルートまたは に貨物設定ファイルを作成します`~/.cargo/config`。

     ```
     [target.x86_64-unknown-linux-musl]
     linker = "x86_64-linux-musl-gcc"
     ```

1. を`cfn-guard-lambda`ルートディレクトリに変更します。

   ```
   cd ~/.cargo/bin/cfn-guard-lambda
   ```

1. ターミナルで次のコマンドを実行します。

   ```
   cp ./../target/x86_64-unknown-linux-musl/release/cfn-guard-lambda ./bootstrap && zip lambda.zip bootstrap && rm bootstrap
   ```

1. 次のコマンドを実行して、Lambda 関数`cfn-guard`として をアカウントに送信します。

   ```
   aws lambda create-function --function-name cfnGuard \
    --handler guard.handler \
    --zip-file fileb://./lambda.zip \
    --runtime provided \
    --role arn:aws:iam::444455556666:role/your_lambda_execution_role \
    --environment Variables={RUST_BACKTRACE=1} \
    --tracing-config Mode=Active
   ```

## Lambda 関数として Guard を構築して実行するには
<a name="build-and-run-lambda"></a>

Lambda 関数`cfn-guard-lambda`として送信された を呼び出すには、次のコマンドを実行します。

```
aws lambda invoke --function-name cfnGuard \
  --payload '{"data":"input data","rules":["rule1","rule2"]}' \
  output.json
```

## Lambda 関数リクエスト構造を呼び出すには
<a name="calling-the-lambda-function"></a>

次のフィールド`cfn-guard-lambda`を要求するリクエスト:
+ `data` – YAML または JSON テンプレートの文字列バージョン
+ `rules` – ルールセットファイルの文字列バージョン