

# Lambda 함수 버전 관리
<a name="configuration-versions"></a>

버전을 사용하여 함수 배포를 관리할 수 있습니다. 예를 들어, 안정적인 프로덕션 버전 사용에 영향을 주지 않고 베타 테스트를 위한 새 버전의 함수를 게시할 수 있습니다. 함수를 게시할 때마다 Lambda는 함수의 새 버전을 생성합니다. 새 버전은 함수의 게시 되지 않은 버전입니다. 게시되지 않은 버전의 이름은 `$LATEST`입니다.

중요한 것은 함수 코드를 배포할 때마다 `$LATEST`에서 현재 코드를 덮어쓴다는 것입니다. `$LATEST`의 현재 반복을 저장하려면 새 함수 버전을 생성합니다. `$LATEST`가 이전에 게시된 버전과 동일한 경우 `$LATEST`에 변경 내용을 배포할 때까지 새 버전을 생성할 수 없습니다. 이러한 변경에는 코드 업데이트 또는 함수 구성 설정 수정이 포함될 수 있습니다.

함수 버전을 게시한 후에는 해당 코드, 런타임, 아키텍처, 메모리, 계층 및 대부분의 기타 구성 설정을 변경할 수 없습니다. 즉, `$LATEST`에서 새 버전을 게시하지 않으면 이러한 설정을 변경할 수 없습니다. 게시된 함수 버전에 대해 다음 항목을 구성할 수 있습니다.
+ [트리거](lambda-services.md#lambda-invocation-trigger)
+ [대상](invocation-async-retain-records.md#create-destination)
+ [프로비저닝된 동시성](provisioned-concurrency.md)
+ [비동기식 호출](invocation-async.md)
+ [데이터베이스 연결 및 프록시](services-rds.md#rds-configuration)

**참고**  
**자동** 모드에서 [런타임 관리 제어](runtimes-update.md#runtime-management-controls)를 사용하는 경우 함수 버전에서 사용하는 런타임 버전이 자동으로 업데이트됩니다. **함수 업데이트** 또는 **수동** 모드를 사용하는 경우 런타임 버전이 업데이트되지 않습니다. 자세한 내용은 [Lambda가 런타임 버전 업데이트를 관리하는 방법 이해](runtimes-update.md) 섹션을 참조하세요.

**Topics**
+ [함수 버전 생성](#configuration-versions-config)
+ [버전 사용](#versioning-versions-using)
+ [권한 부여](#versioning-permissions)

## 함수 버전 생성
<a name="configuration-versions-config"></a>

함수의 게시 되지 않은 버전에서만 함수 코드와 설정을 변경할 수 있습니다. 버전을 게시하면 Lambda는 해당 버전의 사용자에게 일관된 경험을 유지하기 위해 코드와 대부분의 설정을 잠급니다.

Lambda 콘솔을 사용하여 함수 버전을 생성할 수 있습니다.

**새 함수 버전을 생성하려면**

1. Lambda 콘솔의 [함수 페이지](https://console.aws.amazon.com/lambda/home#/functions)를 엽니다.

1. 함수를 선택하고 **버전**을 선택하세요.

1. 버전 구성 페이지에서 **새 버전 발행(Publish new version)**을 선택합니다.

1. (선택 사항) 버전 설명을 입력합니다.

1. [**Publish**]를 선택합니다.

또는 [PublishVersion](https://docs.aws.amazon.com/lambda/latest/api/API_PublishVersion.html) API 작업을 사용하여 함수의 버전을 게시할 수 있습니다.

다음 AWS CLI 명령은 함수의 새 버전을 게시합니다. 응답으로 버전 번호, 버전 접미사가 포함된 함수 ARN과 같은 새 버전에 대한 구성 정보가 반환됩니다.

```
aws lambda publish-version --function-name my-function
```

다음 결과가 표시됩니다.

```
{
  "FunctionName": "my-function",
  "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function:1",
  "Version": "1",
  "Role": "arn:aws:iam::123456789012:role/lambda-role",
  "Handler": "function.handler",
  "Runtime": "nodejs24.x",
  ...
}
```

**참고**  
Lambda는 버전 관리를 위해 단조 증가하는 시퀀스 번호를 할당합니다. Lambda는 함수를 삭제하고 다시 생성한 후에도 버전 번호를 재사용하지 않습니다.

## 버전 사용
<a name="versioning-versions-using"></a>

정규화된 ARN 또는 정규화되지 않은 ARN을 사용하여 Lambda 함수를 참조할 수 있습니다.
+ **정규화된 ARN** – 버전 접미사가 포함된 함수 ARN입니다. 다음 예에서는 `helloworld` 함수의 버전 42를 참조합니다.

  ```
  arn:aws:lambda:aws-region:acct-id:function:helloworld:42
  ```
+ **정규화되지 않은 ARN** – 버전 접미사가 포함되지 않은 함수 ARN입니다.

  ```
  arn:aws:lambda:aws-region:acct-id:function:helloworld
  ```

모든 관련 API 작업에서 정규화된 ARN 또는 정규화되지 않은 ARN을 사용할 수 있습니다. 그러나 정규화되지 않은 ARN을 사용하여 별칭을 생성할 수는 없습니다.

함수 버전을 게시하지 않기로 결정한 경우, [이벤트 소스 매핑](invocation-eventsourcemapping.md)에서 정규화된 ARN 또는 정규화되지 않은 ARN을 사용하여 함수를 간접 호출할 수 있습니다. 정규화되지 않은 ARN을 사용하여 함수를 간접 호출하면 Lambda가 `$LATEST`를 묵시적으로 간접 호출합니다.

각 Lambda 함수 버전에 대한 정규화된 ARN은 고유합니다. 버전을 게시한 후에는 ARN 또는 함수 코드를 변경할 수 없습니다.

Lambda는 코드가 게시된 적이 없거나 마지막으로 게시된 버전과 비교하여 코드가 변경된 경우에만 새 함수 버전을 게시합니다. 변경 사항이 없으면 함수 버전은 마지막으로 게시된 버전으로 유지됩니다.

버전을 게시하면 Lambda는 함수 코드 및 구성의 변경 불가능한 스냅샷을 생성합니다. 일부 구성 변경으로는 새 버전의 게시가 트리거되지 않습니다. 다음 구성 변경은 버전 게시를 위해 함수를 검증합니다.
+ 함수 코드
+ 환경 변수
+ 런타임
+ 핸들러
+ 계층
+ 메모리 크기
+ 제한 시간
+ VPC 구성
+ DLQ(Dead Letter Queue) 구성
+ IAM 역할
+ 설명
+ 아키텍처(x86\$164 또는 arm64)
+ 임시 스토리지 크기
+ 패키지 유형
+ 로깅 구성
+ 파일 시스템 구성
+ SnapStart
+ 추적 구성

[예약된 동시성](configuration-concurrency.md)과 같은 운영 설정은 변경 시 새 버전의 게시를 트리거하지 않습니다.

## 권한 부여
<a name="versioning-permissions"></a>

[리소스 기반 정책](access-control-resource-based.md) 또는 [자격 증명 기반 정책](access-control-identity-based.md)을 사용하여 함수에 대한 액세스 권한을 부여할 수 있습니다. 권한의 범위는 정책을 함수에 적용하는지 또는 함수의 한 버전에 적용하는지에 따라 다릅니다. 정책의 함수 리소스 이름에 대한 자세한 내용은 [정책의 리소스 및 조건 섹션 미세 조정](lambda-api-permissions-ref.md) 단원을 참조하세요.

함수 별칭을 사용하여 이벤트 소스 및 AWS Identity and Access Management(IAM) 정책의 관리를 간소화할 수 있습니다. 자세한 내용은 [Lambda 함수에 대한 별칭 생성](configuration-aliases.md) 섹션을 참조하세요.