

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

# Terraform 참조로AWS SAMCLI 사용
<a name="terraform-reference"></a>

이 섹션은 로컬 디버깅 및 테스트를 위해 AWS Serverless Application Model 명령줄 인터페이스(AWS SAM CLI)를와 함께 사용하기 Terraform 위한 참조입니다.

피드백을 제공하고 기능 요청을 제출하려면 [GitHub 문제](https://github.com/aws/aws-sam-cli/issues/new?labels=area%2Fterraform)를 생성하세요.

## AWS SAM 지원되는 기능 참조
<a name="terraform-reference-sam"></a>

Terraform 사용에 지원되는 AWS SAMCLI 기능에 대한 참조 설명서는 다음에서 찾을 수 있습니다.
+ [sam build](sam-cli-command-reference-sam-build.md)
+ [sam local invoke](sam-cli-command-reference-sam-local-invoke.md)
+ [sam local start-api](sam-cli-command-reference-sam-local-start-api.md)
+ [sam local start-lambda](sam-cli-command-reference-sam-local-start-lambda.md)

## Terraform 특정 참조
<a name="terraform-reference-specific"></a>

Terraform과 함께 AWS SAMCLI 사용과 관련된 참조 문서는 다음에서 찾을 수 있습니다.
+ [sam 메타데이터 리소스](terraform-sam-metadata.md)

# sam 메타데이터 리소스
<a name="terraform-sam-metadata"></a>

이 페이지에는 Terraform 프로젝트에 사용되는 **sam metadata resource** 리소스 유형에 대한 참조 정보를 포함합니다.
+ 에서 AWS Serverless Application Model 명령줄 인터페이스(AWS SAM CLI)를 사용하는 방법에 대한 소개는 섹션을 Terraform참조하세요[Terraform에 대한 AWS SAMCLI지원이란 무엇입니까?](terraform-support.md#what-is-terraform-support).
+ Terraform과 함께 AWS SAM CLI을 사용하려면 [로컬 디버깅 및 테스트에 Terraform과 함께 AWS SAMCLI 사용하기](using-samcli-terraform.md) 섹션을 참조하세요.

**Topics**
+ [인수](#terraform-sam-metadata-arguments)
+ [예제](#terraform-sam-metadata-examples)

## 인수
<a name="terraform-sam-metadata-arguments"></a>


****  

| 인수 | 설명 | 
| --- | --- | 
| built\$1output\$1path |  AWS Lambda 함수의 빌드된 아티팩트 경로입니다. | 
| docker\$1build\$1args | Docker 빌드 인수 JSON 객체의 디코딩된 문자열. 이 인수는 선택 사항입니다. | 
| docker\$1context | 도커 이미지 빌드 컨텍스트가 포함된 디렉터리의 경로. | 
| docker\$1file |  Docker 파일에 대한 경로입니다. 이 경로는 `docker_context` 경로와 상대적입니다. 이 인수는 선택 사항입니다. 기본값은 `Dockerfile`입니다.  | 
| docker\$1tag | 생성된 도커 이미지 태그의 값. 이 값은 선택 사항입니다. | 
| depends\$1on | Lambda 함수 또는 계층의 빌딩 리소스 경로. 자세히 알아보려면Terraform 레지스트리의 [**depends\$1on** 인수](https://developer.hashicorp.com/terraform/language/meta-arguments/depends_on)를 참조하세요. | 
| original\$1source\$1code |  Lambda 함수가 정의된 경로입니다. 이 값은 문자열, 문자열 배열 또는 문자열로 디코딩된 JSON 객체일 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/serverless-application-model/latest/developerguide/terraform-sam-metadata.html)  | 
| resource\$1name | Lambda 함수의 이름입니다. | 
| resource\$1type |  Lambda 함수 패키지 유형의 형식. 사용 가능한 값은 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/serverless-application-model/latest/developerguide/terraform-sam-metadata.html)  | 
| source\$1code\$1property | JSON 객체에 있는 Lambda 리소스 코드의 경로입니다. original\$1source\$1code가 JSON 객체인 경우 이 속성을 정의합니다. | 

## 예제
<a name="terraform-sam-metadata-examples"></a>

### ZIP 패키지 유형을 사용하는 Lambda 함수를 참조하는 sam metadata resource
<a name="terraform-sam-metadata-examples-example1"></a>

```
# Lambda function resource
resource "aws_lambda_function" "tf_lambda_func" {
  filename = "${path.module}/python/hello-world.zip"
  handler = "index.lambda_handler"
  runtime = "python3.8"
  function_name = "function_example"
  role = aws_iam_role.iam_for_lambda.arn
  depends_on = [
    null_resource.build_lambda_function # function build logic
  ]
}

# sam metadata resource
resource "null_resource" "sam_metadata_function_example" {
  triggers = {
    resource_name = "aws_lambda_function.function_example"
    resource_type = "ZIP_LAMBDA_FUNCTION"
    original_source_code = "${path.module}/python"
    built_output_path = "${path.module}/building/function_example"
  }
  depends_on = [
    null_resource.build_lambda_function # function build logic
  ]
}
```

### 이미지 패키지 유형을 사용하여 Lambda 함수를 참조하는 sam 메타데이터 리소스
<a name="terraform-sam-metadata-examples-example2"></a>

```
resource "null_resource" "sam_metadata_function {
  triggers = {
    resource_name = "aws_lambda_function.image_function"
    resource_type = "IMAGE_LAMBDA_FUNCTION"
    docker_context = local.lambda_src_path
    docker_file = "Dockerfile"
    docker_build_args = jsonencode(var.build_args)
    docker_tag = "latest"
  }
}
```

### Lambda 계층을 참조하는 sam 메타데이터 리소스
<a name="terraform-sam-metadata-examples-example3"></a>

```
resource "null_resource" "sam_metadata_layer1" {
  triggers = {
    resource_name = "aws_lambda_layer_version.layer"
    resource_type = "LAMBDA_LAYER"
    original_source_code = local.layer_src
    built_output_path = "${path.module}/${layer_build_path}"
  }
  depends_on = [null_resource.layer_build]
}
```