

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

# Guard를 AWS Lambda 함수로 설치
<a name="setting-up-lambda"></a>

Rust 패키지 관리자인 Cargo를 AWS CloudFormation Guard 통해를 설치할 수 있습니다. 함수(`cfn-guard-lambda`)*로서의 가드 AWS Lambda*는 Lambda 함수로 사용할 수 있는 Guard(`cfn-guard`) 주위의 경량 래퍼입니다.

## 사전 조건
<a name="guard-as-lambda-prerequisites"></a>

Guard를 Lambda 함수로 설치하려면 먼저 다음 사전 조건을 충족해야 합니다.
+ AWS Command Line Interface Lambda 함수를 배포하고 호출할 수 있는 권한으로 구성된 (AWS CLI)입니다. 자세한 내용은 [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 함수(Linux, macOS 또는 Unix)로 Guard 설치
<a name="to-isntall-guard-as-a-lambda"></a>

Guard를 Lambda 함수로 설치하려면 다음 단계를 완료합니다.

1. 명령 터미널에서 다음 명령을 실행합니다.

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

   1. (선택 사항) Guard를 Lambda 함수로 설치했는지 확인하려면 다음 명령을 실행합니다.

     ```
     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)의 경우 `bootstrap` 배포 패키지 .zip 파일에 이름이 인 실행 파일이 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` - 규칙 세트 파일의 문자열 버전