

Amazon CodeCatalyst는 더 이상 신규 고객에게 공개되지 않습니다. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 [CodeCatalyst에서 마이그레이션하는 방법](migration.md) 단원을 참조하십시오.

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

# 워크플로를 사용하여 Lambda 함수 호출
<a name="lam-invoke-action"></a>

이 섹션에서는 CodeCatalyst 워크플로를 사용하여 AWS Lambda 함수를 호출하는 방법을 설명합니다. 이렇게 하려면 워크플로에 **AWS Lambda 간접 호출** 작업을 추가해야 합니다. **AWS Lambda 간접 호출** 작업은 지정한 Lambda 함수를 호출합니다.

함수를 간접적으로 호출하는 것 외에도 **AWS Lambda 간접 호출** 작업은 Lambda 함수에서 수신한 응답 페이로드의 각 최상위 키를 [워크플로 출력 변수](workflows-working-with-variables.md)로 변환합니다. 그런 다음 후속 워크플로 작업에서 이러한 변수를 참조할 수 있습니다. 모든 최상위 키를 변수로 변환하지 않으려면 필터를 사용하여 정확한 키를 지정할 수 있습니다. 자세한 내용은 ['AWS Lambda 간접 호출' 작업 YAML](lam-invoke-action-ref.md)의 [ResponseFilters](lam-invoke-action-ref.md#lam.invoke.response.filters) 속성 설명을 참조하세요.

**Topics**
+ [이 작업을 사용해야 하는 경우](#lam-invoke-action-when-to-use)
+ ['AWS Lambda 호출' 작업에서 사용하는 런타임 이미지](#lam-invoke-action-runtime)
+ [예시: Lambda 함수를 간접적으로 호출합니다.](lam-invoke-action-example-workflow.md)
+ ['AWS Lambda 호출' 작업 추가](lam-invoke-action-add.md)
+ ['AWS Lambda 간접 호출' 변수](lam-invoke-action-variables.md)
+ ['AWS Lambda 간접 호출' 작업 YAML](lam-invoke-action-ref.md)

## 이 작업을 사용해야 하는 경우
<a name="lam-invoke-action-when-to-use"></a>

Lambda 함수에 캡슐화되고 Lambda 함수에서 수행하는 워크플로에 기능을 추가하려면, 이 작업을 사용합니다.

예를 들어, 애플리케이션 빌드를 시작하기 전에 워크플로가 Slack 채널에 `Build started` 알림을 보내도록 할 수 있습니다. 이 경우, 워크플로에는 Lambda를 호출하여 Slack 알림을 보내는 **AWS Lambda 간접 호출** 작업과 애플리케이션을 빌드하는 [빌드 작업](build-add-action.md)이 포함됩니다.

또 다른 예로 워크플로가 배포되기 전에 워크플로에서 애플리케이션의 취약성 스캔을 수행하게 할 수 있습니다. 이 경우, 빌드 작업을 사용하여 애플리케이션을 빌드하고, **AWS Lambda 간접 호출** 작업을 사용하여 Lambda를 호출해 취약성을 스캔하고, 배포 작업을 사용하여 스캔한 애플리케이션을 배포합니다.

## 'AWS Lambda 호출' 작업에서 사용하는 런타임 이미지
<a name="lam-invoke-action-runtime"></a>

**AWS Lambda 간접 호출** 작업은 [2022년 11월 이미지](build-images.md#build.previous-image)에서 실행됩니다. 자세한 내용은 [활성 이미지](build-images.md#build-curated-images) 단원을 참조하십시오.

# 예시: Lambda 함수를 간접적으로 호출합니다.
<a name="lam-invoke-action-example-workflow"></a>

다음 워크플로 예시에는 **AWS Lambda 간접 호출** 작업과 배포 작업이 포함됩니다. 워크플로는 배포가 시작되었음을 나타내는 Slack 알림을 전송한 다음 CloudFormation 템플릿을 AWS 사용하여에 애플리케이션을 배포합니다. 워크플로는 순차적으로 실행되는 다음 구성 요소로 구성됩니다.
+ **트리거** - 이 트리거는 소스 리포지토리에 변경 사항을 푸시할 때 워크플로 실행을 자동으로 시작합니다. 트리거에 대한 자세한 내용은 [트리거를 사용하여 워크플로 실행 자동 시작](workflows-add-trigger.md) 주제를 참조하세요.
+ **AWS Lambda 호출** 작업(`LambdaNotify`) - 트리거 시 이 작업은 지정된 AWS 계정 및 리전(`my-aws-account` 및 `us-west-2`)에서 `Notify-Start` Lambda 함수를 간접적으로 호출합니다. 간접 호출 시 Lambda 함수는 배포가 시작되었음을 나타내는 Slack 알림을 보냅니다.
+ ** CloudFormation 스택 배포** 작업(`Deploy`) - **AWS Lambda 호출** 작업이 완료되면 **스택 배포 CloudFormation ** 작업은 템플릿(`cfn-template.yml`)을 실행하여 애플리케이션 스택을 배포합니다. ** CloudFormation 스택 배포** 작업에 대한 자세한 내용은 섹션을 참조하세요[CloudFormation 스택 배포](deploy-action-cfn.md).

**참고**  
다음 워크플로 예시는 설명을 돕기 위한 참고용이며 추가 구성 없이는 작동하지 않습니다.

**참고**  
다음 YAML 코드에서 원하는 경우 `Connections:` 섹션을 생략할 수 있습니다. 이러한 섹션을 생략하는 경우 환경의 **기본 IAM 역할** 필드에 지정된 역할에 **AWS Lambda 스택 호출** 및 **배포 CloudFormation ** 작업에 필요한 권한 및 신뢰 정책이 포함되어 있는지 확인해야 합니다. 기본 IAM 역할이 있는 환경 설정에 대한 자세한 내용은 [환경 생성](deploy-environments-creating-environment.md) 섹션을 참조하세요. 스택 **AWS Lambda 호출** 및 배포 작업에 필요한 권한 및 신뢰 정책에 대한 자세한 내용은 ['AWS Lambda 간접 호출' 작업 YAML](lam-invoke-action-ref.md) 및의 `Role` 속성 설명을 참조하세요['스 CloudFormation 택 배포' 작업 YAML](deploy-action-ref-cfn.md). ** CloudFormation ** 

```
Name: codecatalyst-lamda-invoke-workflow
SchemaVersion: 1.0

Triggers:
  - Type: PUSH
    Branches:
      - main
Actions:
  LambdaNotify:
    Identifier: aws/lambda-invoke@v1
    Environment:
      Name: my-production-environment
      Connections:
        - Name: my-aws-account
          Role: codecatalyst-lambda-invoke-role
    Inputs:
      Sources:
        - WorkflowSource
    Configuration:
      Function: Notify-Start
      AWSRegion: us-west-2
        
  Deploy:
    Identifier: aws/cfn-deploy@v1
    Environment:
      Name: my-production-environment
      Connections:
        - Name: my-aws-account
          Role: codecatalyst-deploy-role
    Inputs:
      Sources:
        - WorkflowSource
    Configuration:
      name: my-application-stack
      region: us-west-2
      role-arn: arn:aws:iam::111122223333:role/StackRole
      template: ./cfn-template.yml
      capabilities: CAPABILITY_IAM,CAPABILITY_AUTO_EXPAND
```

# 'AWS Lambda 호출' 작업 추가
<a name="lam-invoke-action-add"></a>

 다음 지침에 따라 워크플로에 **AWS Lambda 간접 호출** 작업을 추가합니다.

**사전 조건**  
시작하기 전에 AWS Lambda 함수 및 연결된 Lambda 실행 역할이에서 준비되고 사용 가능한지 확인합니다 AWS. 자세한 내용은 *AWS Lambda 개발자 안내서*의 [Lambda 실행 역할](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) 주제를 참조하세요.

------
#### [ Visual ]

**시각적 편집기를 사용하여 'AWS Lambda 호출' 작업을 추가하려면**

1. [https://codecatalyst.aws/](https://codecatalyst.aws/)에서 CodeCatalyst 콘솔을 엽니다.

1. 프로젝트를 선택합니다.

1. 탐색 창에서 **CI/CD**를 선택한 다음 **워크플로**를 선택합니다.

1. 워크플로의 이름을 선택합니다. 소스 리포지토리 또는 워크플로가 정의된 브랜치 이름을 기준으로 필터링하거나, 워크플로 이름 또는 상태를 기준으로 필터링할 수 있습니다.

1. **편집**을 선택합니다.

1. **비주얼**을 선택합니다.

1. 왼쪽 상단에서 **\$1 작업**을 선택하여 작업 카탈로그를 엽니다.

1. 드롭다운 목록에서 **Amazon CodeCatalyst**를 선택합니다.

1. **AWS Lambda 간접 호출** 작업을 검색하고 다음 중 하나를 수행합니다.
   + 더하기 기호(**\$1**)를 선택하여 워크플로 다이어그램에 작업을 추가하고 구성 창을 엽니다.

     또는
   + **AWS Lambda 간접 호출**을 선택합니다. 작업 세부 정보 대화 상자가 나타납니다. 이 대화 상자에서 다음을 수행합니다.
     + (선택 사항) **소스 보기**를 선택하여 [작업의 소스 코드를 봅니다](workflows-view-source.md#workflows-view-source.title).
     + **워크플로에 추가**를 선택하여 워크플로 다이어그램에 작업을 추가하고 구성 창을 엽니다.

1. **입력,** **구성** 및 **출력** 탭에서 필요에 따라 필드를 작성합니다. 각 필드의 설명은 ['AWS Lambda 간접 호출' 작업 YAML](lam-invoke-action-ref.md) 섹션을 참조하세요. 이 참조는 YAML 및 시각적 편집기 모두에 나타나는 각 필드(및 해당 YAML 속성 값)에 대한 자세한 정보를 제공합니다.

1. (선택 사항) 커밋하기 전에 워크플로의 YAML 코드를 검증하려면 **검증**을 선택합니다.

1. **커밋**을 선택하고 커밋 메시지를 입력한 다음 **커밋**을 다시 선택합니다.

------
#### [ YAML ]

**YAML 편집기를 사용하여 'AWS Lambda 호출' 작업을 추가하려면**

1. [https://codecatalyst.aws/](https://codecatalyst.aws/)에서 CodeCatalyst 콘솔을 엽니다.

1. 프로젝트를 선택합니다.

1. 탐색 창에서 **CI/CD**를 선택한 다음 **워크플로**를 선택합니다.

1. 워크플로의 이름을 선택합니다. 소스 리포지토리 또는 워크플로가 정의된 브랜치 이름을 기준으로 필터링하거나, 워크플로 이름 또는 상태를 기준으로 필터링할 수 있습니다.

1. **편집**을 선택합니다.

1. **YAML**을 선택합니다.

1. 왼쪽 상단에서 **\$1 작업**을 선택하여 작업 카탈로그를 엽니다.

1. 드롭다운 목록에서 **Amazon CodeCatalyst**를 선택합니다.

1. **AWS Lambda 간접 호출** 작업을 검색하고 다음 중 하나를 수행합니다.
   + 더하기 기호(**\$1**)를 선택하여 워크플로 다이어그램에 작업을 추가하고 구성 창을 엽니다.

     또는
   + **AWS Lambda 간접 호출**을 선택합니다. 작업 세부 정보 대화 상자가 나타납니다. 이 대화 상자에서 다음을 수행합니다.
     + (선택 사항) **소스 보기**를 선택하여 [작업의 소스 코드를 봅니다](workflows-view-source.md#workflows-view-source.title).
     + **워크플로에 추가**를 선택하여 워크플로 다이어그램에 작업을 추가하고 구성 창을 엽니다.

1. 필요에 따라 YAML 코드의 속성을 수정합니다. 사용 가능한 각 속성에 대한 설명은 ['AWS Lambda 간접 호출' 작업 YAML](lam-invoke-action-ref.md)에서 볼 수 있습니다.

1. (선택 사항) 커밋하기 전에 워크플로의 YAML 코드를 검증하려면 **검증**을 선택합니다.

1. **커밋**을 선택하고 커밋 메시지를 입력한 다음 **커밋**을 다시 선택합니다.

------

# 'AWS Lambda 간접 호출' 변수
<a name="lam-invoke-action-variables"></a>

기본적으로 **AWS Lambda 간접 호출** 작업은 Lambda 응답 페이로드의 최상위 키당 하나의 변수를 생성합니다.

예를 들어, 응답 페이로드가 다음과 같은 경우:

```
responsePayload = {
  "name": "Saanvi",
  "location": "Seattle",
  "department": {
    "company": "Amazon",
    "team": "AWS"
  }
}
```

...그런 다음 해당 작업은 다음과 같은 변수를 생성합니다.


| Key(키) | 값 | 
| --- | --- | 
|  이름  |  Saanvi  | 
|  location  |  시애틀  | 
|  department  |  \$1"company": "Amazon", "team": "AWS"\$1  | 

**참고**  
`ResponseFilters` YAML 속성을 사용하여 생성되는 변수를 변경할 수 있습니다. 자세한 내용은 ['AWS Lambda 간접 호출' 작업 YAML](lam-invoke-action-ref.md)의 [ResponseFilters](lam-invoke-action-ref.md#lam.invoke.response.filters)를 참조하세요.

실행 시간에 'AWS Lambda 호출' 작업에 의해 생성되고 설정된 변수를 *사전 정의된 변수*라고 합니다.

워크플로에서 이러한 변수를 참조하는 방법에 대한 자세한 내용은 [사전 정의된 변수 사용](workflows-using-predefined-variables.md) 섹션을 참조하세요.

# 'AWS Lambda 간접 호출' 작업 YAML
<a name="lam-invoke-action-ref"></a>

다음은 **AWS Lambda 간접 호출** 작업의 YAML 정의입니다. 이러한 작업 사용 방법을 배우려면 [워크플로를 사용하여 Lambda 함수 호출](lam-invoke-action.md) 섹션을 참조하세요.

이 작업 정의는 더 광범위한 워크플로 정의 파일 내의 섹션으로 존재합니다. 이 파일에 대한 자세한 내용은 [워크플로 YAML 정의](workflow-reference.md)을 참조합니다.

**참고**  
이어지는 대부분의 YAML 속성에는 시각적 편집기에 해당 UI 요소가 있습니다. UI 요소를 찾으려면 **Ctrl\$1F**를 사용합니다. 요소가 연결된 YAML 속성과 함께 나열됩니다.

```
# The workflow definition starts here.
# See 최상위 속성 for details.
        
Name: MyWorkflow
SchemaVersion: 1.0 
Actions:

# The action definition starts here.   
  LambdaInvoke\$1nn: 
    Identifier: aws/lambda-invoke@v1
    DependsOn:
      - dependent-action
    Compute:  
      Type: EC2 | Lambda
      Fleet: fleet-name
    Timeout: timeout-minutes
    Inputs:
      # Specify a source or an artifact, but not both.
      Sources:
        - source-name-1
      Artifacts:
        - request-payload
      Variables:
        - Name: variable-name-1
          Value: variable-value-1
        - Name: variable-name-2
          Value: variable-value-2
    Environment:
      Name: environment-name
      Connections:
        - Name: account-connection-name
          Role: iam-role-name
    Configuration:
      Function: my-function|function-arn
      AWSRegion: us-west-2
      # Specify RequestPayload or RequestPayloadFile, but not both.
      RequestPayload: '{"firstname": "Li", lastname: "Jean", "company": "ExampleCo", "team": "Development"}'
      RequestPayloadFile: my/request-payload.json
      ContinueOnError: true|false
      LogType: Tail|None
      ResponseFilters: '{"name": ".name", "company": ".department.company"}'
    Outputs:
      Artifacts:
        - Name: lambda_artifacts
          Files: 
            - "lambda-response.json"
```

## LambdaInvoke
<a name="lam.invoke.name"></a>

(필수)

작업 이름을 지정합니다. 워크플로 내의 모든 작업 이름은 고유해야 합니다. 작업 이름은 영숫자 문자(a-z, A-Z, 0-9), 하이픈(-) 및 밑줄(\$1)로 제한됩니다. 스페이스은 허용되지 않습니다. 작업 이름에서 특수 문자와 공백을 활성화하는 데 따옴표를 사용할 수 없습니다.

기본값: `Lambda_Invoke_Action_Workflow_nn`.

해당 UI: 구성 탭/**작업 이름**

## Identifier
<a name="lam.invoke.identifier"></a>

(*LambdaInvoke*/**Identifier**)

(필수)

작업을 식별합니다. 버전을 변경하려는 경우가 아니면 이 속성을 변경하지 마세요. 자세한 내용은 [사용할 작업 버전 지정](workflows-action-versions.md) 섹션을 참조하세요.

기본값: `aws/lambda-invoke@v1`.

해당 UI: 워크플로 다이어그램/LambdaInvoke\$1nn/**aws/lambda-invoke@v1** 레이블

## DependsOn
<a name="lam.invoke.dependson"></a>

(*LambdaInvoke*/**DependsOn**)

(선택 사항)

이 작업을 실행하기 위해 성공적으로 실행해야 하는 작업, 작업 그룹 또는 게이트를 지정합니다.

'depends on' 함수에 대한 자세한 내용은 [작업 순서 지정](workflows-depends-on.md) 섹션을 참조하세요.

해당 UI: 입력 탭/**의존 - 선택 사항**

## Compute
<a name="lam.invoke.computename"></a>

(*LambdaInvoke*/**Compute**)

(선택 사항)

워크플로 작업을 실행하는 데 사용되는 컴퓨팅 엔진입니다. 워크플로 수준 또는 작업 수준에서 컴퓨팅을 지정할 수 있지만 둘 다 지정할 수는 없습니다. 워크플로 수준에서 지정하면 컴퓨팅 구성이 워크플로에 정의된 모든 작업에 적용됩니다. 워크플로 수준에서는 동일한 인스턴스에서 여러 작업을 실행할 수도 있습니다. 자세한 내용은 [작업 간에 컴퓨팅 공유](compute-sharing.md) 섹션을 참조하세요.

해당 UI: *없음*

## Type
<a name="lam.invoke.computetype"></a>

(*LambdaInvoke*/Compute/**Type**)

([Compute](#lam.invoke.computename) 포함 시 필수)

컴퓨팅 엔진의 유형입니다. 다음 값 중 하나를 사용할 수 있습니다.
+ **EC2**(시각 편집기) 또는 `EC2`(YAML 편집기)

  작업 실행 중 유연성을 위해 최적화되었습니다.
+ **Lambda**(시각 편집기) 또는 `Lambda`(YAML 편집기)

  작업 시작 속도를 최적화했습니다.

컴퓨팅 유형에 대한 자세한 정보는 [컴퓨팅 유형](workflows-working-compute.md#compute.types)을 참고하세요.

해당 UI: 구성 탭/**컴퓨팅 유형**

## Fleet
<a name="lam.invoke.computefleet"></a>

(*LambdaInvoke*/Compute/**Fleet**)

(선택 사항)

워크플로 또는 워크플로 작업을 실행할 시스템 또는 플릿을 지정합니다. 온디맨드 플릿의 경우 작업이 시작되면 워크플로가 필요한 리소스를 프로비저닝하고 작업이 완료되면 시스템이 파괴됩니다. 온디맨드 플릿의 예시: `Linux.x86-64.Large`, `Linux.x86-64.XLarge`. 온디맨드 플릿에 대한 자세한 내용은 [온디맨드 플릿 속성](workflows-working-compute.md#compute.on-demand) 섹션을 참조하세요.

프로비저닝된 플릿을 사용하면 워크플로 작업을 실행하도록 전용 시스템 세트를 구성할 수 있습니다. 이러한 시스템은 유휴 상태로 유지되므로 작업을 즉시 처리할 수 있습니다. 프로비저닝된 플릿에 대한 자세한 내용은 [프로비저닝된 플릿 속성](workflows-working-compute.md#compute.provisioned-fleets) 섹션을 참조하세요.

`Fleet` 생략 시 기본값은 `Linux.x86-64.Large`입니다.

해당 UI: 구성 탭/**컴퓨팅 플릿**

## Timeout
<a name="lam.invoke.timeout"></a>

(*LambdaInvoke*/**Timeout**)

(필수)

CodeCatalyst가 작업을 종료하기 전에 작업을 실행할 수 있는 시간을 분(YAML 편집기) 또는 시간 및 분(시각적 편집기) 단위로 지정합니다. 최소값은 5분이고 최대값은 [CodeCatalyst의 워크플로 할당량](workflows-quotas.md)에 설명되어 있습니다. 기본 제한 시간은 최대 제한 시간과 동일합니다.

해당 UI: 구성 탭/**제한 시간 - 선택 사항 **

## Inputs
<a name="lam.invoke.inputs"></a>

(*LambdaInvoke*/**Inputs**)

(필수)

이 `Inputs` 섹션에서는 워크플로 실행 중에 **AWS Lambda 간접 호출** 작업에 필요한 데이터를 정의합니다.

**참고**  
**AWS Lambda 간접 호출** 작업당 하나의 입력(소스 또는 아티팩트)만 허용됩니다. 변수는 이 합계에 포함되지 않습니다.

해당 UI: **입력** 탭

## Sources
<a name="lam.invoke.inputs.sources"></a>

(*LambdaInvoke*/Inputs/**Sources**)

([RequestPayloadFile](#lam.invoke.request.payload.file)이 제공된 경우 필수)

요청 페이로드 JSON 파일을 **AWS Lambda 간접 호출** 작업에 전달하고자 하며 이 페이로드 파일이 소스 리포지토리에 저장되는 경우, 해당 소스 리포지토리의 레이블을 지정합니다. 현재, `WorkflowSource` 레이블만 지원됩니다.

요청 페이로드 파일이 소스 리포지토리에 포함되어 있지 않은 경우, 다른 작업에서 생성된 아티팩트에 있어야 합니다.

페이로드 파일에 대한 자세한 내용은 [RequestPayloadFile](#lam.invoke.request.payload.file)을 참조하세요.

**참고**  
페이로드 파일을 지정하는 대신 `RequestPayload` 속성을 사용하여 페이로드의 JSON 코드를 작업에 직접 추가할 수 있습니다. 자세한 내용은 [RequestPayload](#lam.invoke.request.payload) 단원을 참조하십시오.

소스에 대한 자세한 내용은 [워크플로에 소스 리포지토리 연결](workflows-sources.md) 섹션을 참조하세요.

해당 UI: 입력 탭/**소스 - 선택 사항**

## Artifacts - input
<a name="lam.invoke.inputs.artifacts"></a>

(*LambdaInvoke*/Inputs/**Artifacts**)

([RequestPayloadFile](#lam.invoke.request.payload.file)이 제공된 경우 필수)

요청 페이로드 JSON 파일을 **AWS Lambda 간접 호출** 작업에 전달하고자 하며 이 페이로드 파일이 이전 작업의 [출력 아티팩트](build-action-ref.md#build.outputs.artifacts)에 포함된 경우, 여기에 해당 아티팩트를 지정합니다.

페이로드 파일에 대한 자세한 내용은 [RequestPayloadFile](#lam.invoke.request.payload.file)을 참조하세요.

**참고**  
페이로드 파일을 지정하는 대신 `RequestPayload` 속성을 사용하여 페이로드의 JSON 코드를 작업에 직접 추가할 수 있습니다. 자세한 내용은 [RequestPayload](#lam.invoke.request.payload) 단원을 참조하십시오.

예시를 포함해 아티팩트에 대한 자세한 내용은 [작업 간 아티팩트 및 파일 공유](workflows-working-artifacts.md) 섹션을 참조하세요.

해당 UI: 구성 탭/**아티팩트 - 선택 사항**

## Variables - input
<a name="lam.invoke.inputs.variables"></a>

(*LambdaInvoke*/Inputs/**Variables**)

(선택 사항)

작업에 사용할 수 있도록 하려는 입력 변수를 정의하는 이름/값 페어의 시퀀스를 지정합니다. 변수 이름은 영숫자 문자(a-z, A-Z, 0-9), 하이픈(-) 및 밑줄(\$1)로 제한됩니다. 스페이스은 허용되지 않습니다. 변수 이름에서 특수 문자와 공백을 활성화하는 데 따옴표를 사용할 수 없습니다.

예시를 비롯한 변수에 대한 자세한 내용은 [워크플로에서 변수 사용](workflows-working-with-variables.md) 섹션을 참조하세요.

해당 UI: 입력 탭/**변수 - 선택 사항**

## Environment
<a name="lam.invoke.environment"></a>

(*LambdaInvoke*/**Environment**)

(필수)

작업에 사용할 CodeCatalyst 환경을 지정합니다. 작업은 선택한 환경에 지정된 AWS 계정 및 선택적 Amazon VPC에 연결됩니다. 작업은 환경에 지정된 기본 IAM 역할을 사용하여에 연결하고 [Amazon VPC 연결](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-vpcs.add.html)에 지정된 IAM 역할을 AWS 계정사용하여 Amazon VPC에 연결합니다.

**참고**  
기본 IAM 역할에 작업에 필요한 권한이 없는 경우 다른 역할을 사용하도록 작업을 구성할 수 있습니다. 자세한 내용은 [작업의 IAM 역할 변경](deploy-environments-switch-role.md) 섹션을 참조하세요.

환경에 대한 자세한 내용은 [AWS 계정 및 VPCs에 배포](deploy-environments.md) 및 [환경 생성](deploy-environments-creating-environment.md) 섹션을 참조하세요.

해당 UI: 구성 탭/**환경**

## Name
<a name="lam.invoke.environment.name"></a>

(*LambdaInvoke*/Environment/**Name**)

([Environment](#lam.invoke.environment) 포함 시 필수)

작업과 연결하려는 기존 환경의 이름을 지정합니다.

해당 UI: 구성 탭/**환경**

## Connections
<a name="lam.invoke.environment.connections"></a>

(*LambdaInvoke*/Environment/**Connections**)

(최신 버전의 작업에서는 선택 사항, 이전 버전에서는 필수)

작업과 연결할 계정 연결을 지정합니다. `Environment`에서 계정 연결을 최대 1개까지 지정할 수 있습니다.

계정 연결을 지정하지 않는 경우:
+ 작업은 CodeCatalyst 콘솔의 환경에 지정된 AWS 계정 연결 및 기본 IAM 역할을 사용합니다. 환경에 계정 연결 및 기본 IAM 역할을 추가하는 방법에 대한 자세한 내용은 [환경 생성](deploy-environments-creating-environment.md) 섹션을 참조하세요.
+ 기본 IAM 역할에는 작업에 필요한 정책 및 권한이 포함되어야 합니다. 이러한 정책 및 권한이 무엇인지 확인하려면 작업의 YAML 정의 설명서에서 **역할** 속성에 대한 설명을 참조하세요.

계정 연결에 대한 자세한 정보는 [연결된를 사용하여 AWS 리소스에 대한 액세스 허용 AWS 계정](ipa-connect-account.md) 섹션을 참조하세요. 환경에 계정 연결을 추가하는 방법에 대한 자세한 내용은 [환경 생성](deploy-environments-creating-environment.md) 섹션을 참조하세요.

해당 UI: 작업 버전에 따라 다음 중 하나:
+ (최신 버전) 구성 탭/환경/*내 환경*의 내용/점 3개 메뉴/**역할 전환**
+ (이전 버전) 구성 탭/'환경/계정/역할'/**AWS 계정 연결**

## Name
<a name="lam.invoke.environment.connections.name"></a>

(*LambdaInvoke*/Environment/Connections/**Name**)

([Connections](#lam.invoke.environment.connections) 포함 시 필수)

계정 연결의 이름을 지정합니다.

해당 UI: 작업 버전에 따라 다음 중 하나:
+ (최신 버전) 구성 탭/환경/*내 환경*의 내용/점 3개 메뉴/**역할 전환**
+ (이전 버전) 구성 탭/'환경/계정/역할'/**AWS 계정 연결**

## Role
<a name="lam.invoke.environment.connections.role"></a>

(*LambdaInvoke*/Environment/Connections/**Role**)

([Connections](#lam.invoke.environment.connections) 포함 시 필수)

**AWS Lambda 간접 호출** 작업이 Lambda 함수에 액세스 AWS 하고 간접 호출하는 데 사용하는 IAM 역할의 이름을 지정합니다. [CodeCatalyst 스페이스에 역할을 추가](ipa-connect-account-addroles.md)했고 역할에 다음 정책이 포함되어 있는지 확인합니다.

IAM 역할을 지정하지 않으면 작업은 CodeCatalyst 콘솔의 [환경](deploy-environments.md)에 나열된 기본 IAM 역할을 사용합니다. 환경에서 기본 역할을 사용하는 경우 다음 정책이 있는지 확인합니다.
+ 다음 권한 정책:
**주의**  
다음 정책에 표시된 대로 권한을 제한합니다. 더 광범위한 권한을 가진 역할을 사용하면 보안 위험이 발생할 수 있습니다.
+ 다음 사용자 지정 신뢰 정책:

**참고**  
원하는 경우 이 작업에서 `CodeCatalystWorkflowDevelopmentRole-spaceName` 역할을 사용할 수 있습니다. 이에 대한 자세한 내용은 [계정 및 스페이스의 **CodeCatalystWorkflowDevelopmentRole-*spaceName*** 역할 생성](ipa-iam-roles.md#ipa-iam-roles-service-create) 섹션을 참조하세요. `CodeCatalystWorkflowDevelopmentRole-spaceName` 역할에 보안 위험을 초래할 수 있는 전체 액세스 권한이 있음을 이해합니다. 보안에 대한 우려가 적은 자습서 및 시나리오에서만 이 역할을 사용하는 것이 좋습니다.

해당 UI: 작업 버전에 따라 다음 중 하나:
+ (최신 버전) 구성 탭/환경/*내 환경*의 내용/점 3개 메뉴/**역할 전환**
+ (이전 버전) 구성 탭/'환경/계정/역할'/**역할**

## Configuration
<a name="lam.invoke.configuration"></a>

(*LambdaInvoke*/**Configuration**)

(필수)

작업의 구성 속성을 정의할 수 있는 섹션입니다.

해당 UI: **구성** 탭

## Function
<a name="lam.invoke.function"></a>

(*LambdaInvoke*/Configuration/**Function**)

(필수)

이 작업이 호출할 AWS Lambda 함수를 지정합니다. 이 함수의 이름 또는 Amazon 리소스 이름(ARN)을 지정합니다. Lambda 콘솔에서 해당 이름 또는 ARN을 찾을 수 있습니다.

**참고**  
Lambda 함수가 있는 AWS 계정은 아래에 지정된 계정과 다를 수 있습니다`Connections:`.

해당 UI: 구성 탭/**기능**

## AWSRegion
<a name="lam.invoke.region"></a>

(*LambdaInvoke*/Configuration/**AWSRegion**)

(필수)

 AWS Lambda 함수가 있는 AWS 리전을 지정합니다. 리전 코드 목록은 *AWS 일반 참조*의 [리전 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)를 참조하세요.

해당 UI: 구성 탭/**대상 버킷 - 선택 사항**

## RequestPayload
<a name="lam.invoke.request.payload"></a>

(*LambdaInvoke*/Configuration/**RequestPayload**)

(선택 사항)

**AWS Lambda 간접 호출** 작업에 요청 페이로드를 전달하려면, JSON 형식으로 여기에 요청 페이로드를 지정합니다.

요청 페이로드 예시:

```
'{ "key": "value" }'
```

Lambda 함수에 요청 페이로드를 전달하지 않으려면 이 속성을 생략합니다.

**참고**  
`RequestPayload` 또는 `RequestPayloadFile`을 지정할 수 있지만 둘 다 함께 지정할 수는 없습니다.

요청 페이로드에 대한 자세한 내용은 *AWS Lambda API 참조* 의 [Invoke](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html) 주제를 참조하세요.

해당 UI: 구성 탭/**요청 페이로드 - 선택 사항**

## RequestPayloadFile
<a name="lam.invoke.request.payload.file"></a>

(*LambdaInvoke*/Configuration/**RequestPayloadFile**)

(선택 사항)

**AWS Lambda 간접 호출** 작업에 요청 페이로드를 전달하려면, 여기에 이 요청 페이로드 파일의 경로를 지정합니다. 파일은 JSON 형식이어야 합니다.

요청 페이로드 파일은 소스 리포지토리 또는 이전 작업의 아티팩트에 상주할 수 있습니다. 파일 경로는 소스 리포지토리 또는 아티팩트 루트를 기준으로 합니다.

Lambda 함수에 요청 페이로드를 전달하지 않으려면 이 속성을 생략합니다.

**참고**  
`RequestPayload` 또는 `RequestPayloadFile`을 지정할 수 있지만 둘 다 함께 지정할 수는 없습니다.

요청 페이로드 파일에 대한 자세한 내용은 *AWS Lambda API 참조*의 [Invoke](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html) 주제를 참조하세요.

해당 UI: 구성 탭/**요청 페이로드 파일 - 선택 사항**

## ContinueOnError
<a name="lam.invoke.continue"></a>

(*LambdaInvoke*/Configuration/**RequestPayloadFile**)

(선택 사항)

간접적으로 호출된 AWS Lambda 함수가 실패하더라도 **AWS Lambda 간접 호출** 작업을 성공으로 표시할지 여부를 지정합니다. Lambda 실패에도 불구하고 워크플로의 후속 작업이 시작되도록 하려면 이 속성을 `true`로 설정하는 것을 고려하세요.

기본적으로 Lambda 함수가 실패하면(시각 편집기에서 ‘off’ 또는 YAML 편집기에서 `false`) 작업에 실패합니다.

해당 UI: 구성 탭/**오류 발생 시 계속 진행**

## LogType
<a name="lam.invoke.log.type"></a>

(*LambdaInvoke*/Configuration/**LogType**)

(선택 사항)

간접 호출된 후 Lambda 함수의 응답에 오류 로그를 포함할지 여부를 지정합니다. 이러한 로그는 CodeCatalyst 콘솔의 **Lambda 간접 호출** 작업의 **로그** 탭에서 볼 수 있습니다. 가능한 값은 다음과 같습니다.
+ `Tail` – 로그를 반환함
+ `None` - 로그를 반환하지 않음

기본값은 **Tail**입니다.

로그 유형에 대한 자세한 내용은 *AWS Lambda API 참조*의 [Invoke](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html) 주제를 참조하세요.

로그 보기에 대한 자세한 내용은 [워크플로 실행 상태 및 세부 정보 보기](workflows-view-run.md) 섹션을 참조하세요.

해당 UI: 구성 탭/**로그 유형**

## ResponseFilters
<a name="lam.invoke.response.filters"></a>

(*LambdaInvoke*/Configuration/**ResponseFilters**)

(선택 사항)

Lambda 응답 페이로드에서 출력 변수로 변환할 키를 지정합니다. 그런 다음 워크플로의 후속 작업에서 출력 변수를 참조할 수 있습니다. CodeCatalyst의 변수에 대한 자세한 내용은 [워크플로에서 변수 사용](workflows-working-with-variables.md) 섹션을 참조하세요.

예를 들어, 응답 페이로드가 다음과 같은 경우:

```
responsePayload = {
  "name": "Saanvi",
  "location": "Seattle",
  "department": {
    "company": "Amazon",
    "team": "AWS"
  }
}
```

...응답 필터는 다음과 같습니다.

```
Configuration:
  ...
  ResponseFilters: '{"name": ".name", "company": ".department.company"}'
```

...그런 다음 해당 작업은 다음과 같은 출력 변수를 생성합니다.


| Key(키) | 값 | 
| --- | --- | 
|  이름  |  Saanvi  | 
|  company  |  Amazon  | 

그런 다음 후속 작업에서 `name` 및 `company` 변수를 참조할 수 있습니다.

`ResponseFilters`에서 키를 지정하지 않으면, 해당 작업은 Lambda 응답의 각 최상위 키를 출력 변수로 변환합니다. 자세한 내용은 ['AWS Lambda 간접 호출' 변수](lam-invoke-action-variables.md) 단원을 참조하십시오.

응답 필터를 사용하여 생성된 출력 변수를 실제로 사용하려는 변수로 제한하는 것이 좋습니다.

해당 UI: 구성 탭/**응답 필터 - 선택 사항**

## Outputs
<a name="lam.invoke.outputs"></a>

(*LambdaInvoke*/**Outputs**)

(선택 사항)

워크플로 실행 중에 작업에 의해 출력되는 데이터를 정의합니다.

해당 UI: **출력** 탭

## Artifacts
<a name="lam.invoke.outputs.artifacts"></a>

(*LambdaInvoke*/Outputs/**Artifacts**)

(선택 사항)

작업에서 생성된 아티팩트를 지정합니다. 이러한 아티팩트를 다른 작업의 입력으로 참조할 수 있습니다.

예시를 포함해 아티팩트에 대한 자세한 내용은 [작업 간 아티팩트 및 파일 공유](workflows-working-artifacts.md) 섹션을 참조하세요.

해당 UI: 출력 탭/아티팩트/**빌드 아티팩트 이름**

## Name
<a name="lam.invoke.outputs.artifacts.name"></a>

(*LambdaInvoke*/Outputs/Artifacts/**Name**)

(선택 사항)

Lambda 함수에서 반환되는 Lambda 응답 페이로드를 포함할 아티팩트의 이름을 지정합니다. 기본값은 `lambda_artifacts`입니다. 아티팩트를 지정하지 않으면, 작업의 로그에서 Lambda 응답 페이로드를 볼 수 있습니다. 이 로그는 CodeCatalyst 콘솔의 작업에 대한 **로그** 탭에서 사용할 수 있습니다. 로그 보기에 대한 자세한 내용은 [워크플로 실행 상태 및 세부 정보 보기](workflows-view-run.md) 섹션을 참조하세요.

해당 UI: 출력 탭/아티팩트/**빌드 아티팩트 이름**

## Files
<a name="lam.invoke.outputs.artifacts.files"></a>

(*LambdaInvoke*/Outputs/Artifacts/**Files**)

(선택 사항)

아티팩트에 포함할 파일을 지정합니다. Lambda 응답 페이로드 파일이 포함`lambda-response.json`되도록 을 지정해야 합니다.

해당 UI: 출력 탭/아티팩트/**빌드에서 생성된 파일**