

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

# 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` – ルールセットファイルの文字列バージョン