

# .zip 파일 아카이브를 사용하여 Lambda 함수 배포
<a name="configuration-function-zip"></a>

Lambda 함수를 만들 때 배포 패키지에 함수 코드를 패키징합니다. Lambda는 컨테이너 이미지와 .zip 파일 아카이브라는 두 가지 배포 패키지를 지원합니다. 함수를 만드는 워크플로는 배포 패키지 유형에 따라 다릅니다. 컨테이너 이미지로 정의된 함수를 구성하려면 [컨테이너 이미지를 사용하여 Lambda 함수 생성](images-create.md) 섹션을 참조하세요.

Lambda 콘솔과 Lambda API를 사용하여 .zip 파일 아카이브로 정의된 함수를 만들 수 있습니다. 업데이트된 .zip 파일을 업로드하여 함수 코드를 변경할 수도 있습니다.

**참고**  
기존 함수의 [배포 패키지 유형](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html#lambda-CreateFunction-request-PackageType)(.zip 또는 컨테이너 이미지)은 변경할 수 없습니다. 예를 들어 .zip 파일 아카이브를 사용하도록 컨테이너 이미지 함수를 변환할 수는 없습니다. 새로운 함수를 생성해야 합니다.

**Topics**
+ [함수 생성](#configuration-function-create)
+ [콘솔 코드 편집기 사용](#configuration-functions-console-update)
+ [함수 코드 업데이트](#configuration-function-update)
+ [런타임 변경](#configuration-function-runtime)
+ [아키텍처 변경](#configuration-function-arch)
+ [Lambda API 사용](#configuration-function-api)
+ [함수 코드 다운로드](#configuration-function-download)
+ [CloudFormation](#configuration-function-cloudformation)
+ [Lambda .zip 배포 패키지 암호화](encrypt-zip-package.md)

## 함수 생성
<a name="configuration-function-create"></a>

.zip 파일 아카이브로 정의된 함수를 만들 때 코드 템플릿, 언어 버전, 함수의 실행 역할을 선택합니다. Lambda가 함수를 생성하면 함수 코드를 추가합니다.

**함수를 만들려면**

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

1. **함수 생성**을 선택합니다.

1. 함수 생성을 위해 **새로 작성** 또는 **블루프린트 사용**을 선택합니다.

1. **기본 정보**에서 다음과 같이 합니다.

   1. **함수 이름(Function name)**에 함수 이름을 입력합니다. 함수 이름은 64자로 제한됩니다.

   1. **런타임**에서 함수에 사용할 언어 버전을 선택합니다.

   1. (선택 사항) [**아키텍처(Architecture)**]에서 함수에 사용할 명령 세트 아키텍처를 선택합니다. 기본 아키텍처는 x86\$164입니다. 함수의 배포 패키지를 빌드할 때 해당 이미지가 이 [명령 세트 아키텍처](foundation-arch.md)와 호환되는지 확인합니다.

1. (선택 사항) **권한(Permissions)**에서 **기본 실행 역할 변경(Change default execution role)**을 확장합니다. 새로운 **실행 역할**을 생성하거나 기존 역할을 사용할 수 있습니다.

1. (선택 사항) **Advanced settings(고급 설정)**를 확장합니다. 함수에 대한 **코드 서명 구성**을 선택할 수 있습니다. 액세스할 함수에 대해 (Amazon VPC)를 구성할 수도 있습니다.

1. **함수 생성**을 선택합니다.

Lambda가 새 함수를 생성합니다. 이제 콘솔을 사용하여 함수 코드를 추가하고 다른 함수 파라미터와 기능을 구성할 수 있습니다. 코드 배포 지침은 함수에서 사용하는 런타임의 핸들러 페이지를 참조하세요.

------
#### [ Node.js ]

[.zip 파일 아카이브를 사용하여 Node.js Lambda 함수 배포](nodejs-package.md) 

------
#### [ Python ]

 [Python Lambda 함수에 대한 .zip 파일 아카이브 작업](python-package.md) 

------
#### [ Ruby ]

 [.zip 파일 아카이브를 사용하여 Ruby Lambda 함수 배포](ruby-package.md) 

------
#### [ Java ]

 [.zip 또는 JAR 파일 아카이브를 사용하여 Java Lambda 함수 배포](java-package.md) 

------
#### [ Go ]

 [.zip 파일 아카이브를 사용하여 Go Lambda 함수 배포](golang-package.md) 

------
#### [ C\$1 ]

 [.zip 파일 아카이브를 사용하여 C\$1 Lambda 함수를 빌드 및 배포](csharp-package.md) 

------
#### [ PowerShell ]

 [.zip 파일 아카이브를 사용하여 PowerShell Lambda 함수 배포](powershell-package.md) 

------

## 콘솔 코드 편집기 사용
<a name="configuration-functions-console-update"></a>

콘솔은 단일 소스 파일로 Lambda 함수를 생성합니다. 스크립트 언어에 맞게 기본 제공 코드 편집기에서 이 파일을 편집하고 더 많은 파일을 추가할 수 있습니다. 변경 사항을 저장하려면 [**Save**]를 선택합니다. 그런 다음 코드를 실행하려면 **테스트**를 선택합니다.

함수 코드를 저장하면 Lambda 콘솔에서 .zip 파일 아카이브 배포 패키지를 만듭니다. 콘솔 외부에서 (IDE를 사용해) 함수 코드를 개발하는 경우 Lambda 함수에 코드를 업로드하려면 [배포 패키지를 생성](nodejs-package.md)해야 합니다.

## 함수 코드 업데이트
<a name="configuration-function-update"></a>

스크립트 언어(Node.js, Python, Ruby)에 맞게 내장된 코드 편집기에서 함수 코드를 편집할 수 있습니다. 코드가 3MB보다 크거나 라이브러리를 추가해야 하는 경우 또는 편집기가 지원하지 않는 언어(Java, Go, C\$1)의 경우, 함수 코드를 .zip 아카이브로 업로드해야 합니다. .zip 파일 아카이브가 50MB보다 작은 경우, 로컬 시스템에서 .zip 파일 아카이브를 업로드할 수 있습니다. 파일이 50MB보다 큰 경우 Amazon S3 버킷에서 함수로 파일을 업로드합니다.

**함수 코드를 .zip 아카이브로 업로드하려면**

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

1. 업데이트할 함수를 선택하고 **코드** 탭을 선택합니다.

1. **코드 소스(Code source)**에서 **업로드(Upload from)**를 선택합니다.

1. **.zip 파일**을 선택한 후 [**업로드(Upload)**]를 선택합니다.

   1. 파일 선택기에서 새 이미지 버전을 선택하고 [**열기(Open)**]와 [**저장(Save)**]을 차례로 선택합니다.

1. (4단계의 대안) **Amazon S3 위치**를 선택합니다.

   1. 텍스트 상자에서 .zip 파일 아카이브의 S3 링크 URL을 입력한 후 **저장**을 선택합니다.

## 런타임 변경
<a name="configuration-function-runtime"></a>

새 런타임을 사용하도록 함수 구성을 업데이트하는 경우, 새 런타임과 호환되도록 함수 코드를 업데이트해야 할 수 있습니다. 다른 런타임을 사용하도록 함수 구성을 업데이트하는 경우, 런타임 및 아키텍처와 호환되는 새로운 함수 코드를 **제공해야 합니다**. 함수 코드의 배포 패키지를 만드는 방법에 대한 지침은 함수가 사용하는 런타임의 핸들러 페이지를 참조하세요.

Node.js 20, Python 3.12, Java 21, .NET 8, Ruby 3.3 이상의 기본 이미지는 Amazon Linux 2023 최소 컨테이너 이미지를 기반으로 합니다. 이전 기본 이미지는 Amazon Linux 2를 사용합니다. AL2023은 작은 배포 공간과 `glibc`와 같이 업데이트된 라이브러리 버전을 포함하여 Amazon Linux 2에 비해 여러 가지 이점을 제공합니다. 자세한 내용은 [AWS Lambda을 위한 Amazon Linux 2023 런타임 소개](https://aws.amazon.com/blogs/compute/introducing-the-amazon-linux-2023-runtime-for-aws-lambda/)를 AWS Compute 블로그에서 참조하세요.

**런타임을 변경하려면**

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

1. 업데이트할 함수를 선택하고 **코드** 탭을 선택합니다.

1. 코드 편집기 아래에 있는 **런타임 설정** 섹션까지 아래로 스크롤합니다.

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

   1. **Runtime**(런타임)에서 런타임 식별자를 선택합니다.

   1. **핸들러**에서 함수의 파일 이름과 핸들러를 지정합니다.

   1. [**아키텍처(Architecture)**]에서 함수에 사용할 명령 세트 아키텍처를 선택합니다.

1. **저장**을 선택합니다.

## 아키텍처 변경
<a name="configuration-function-arch"></a>

명령 세트 아키텍처를 변경하려면 먼저 함수의 코드가 대상 아키텍처와 호환되는지 확인해야 합니다.

Node.js, Python 또는 Ruby를 사용하고 내장된 편집기에서 함수 코드를 편집할 경우, 기존 코드는 수정 없이 실행될 수 있습니다.

그러나 .zip 파일 아카이브 배포 패키지를 사용하여 함수 코드를 제공하는 경우에는 대상 런타임 및 명령 세트 아키텍처에 맞게 올바르게 컴파일되고 빌드되는 새로운 .zip 파일 아카이브를 준비해야 합니다. 자세한 내용은 함수 런타임의 핸들러 페이지를 참조하세요.

**명령 세트 아키텍처를 변경하려면**

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

1. 업데이트할 함수를 선택하고 **코드** 탭을 선택합니다.

1. **런타임 설정**에서 **편집**을 선택합니다.

1. [**아키텍처(Architecture)**]에서 함수에 사용할 명령 세트 아키텍처를 선택합니다.

1. **저장**을 선택합니다.

## Lambda API 사용
<a name="configuration-function-api"></a>

.zip 파일 아카이브를 사용하는 함수를 만들고 구성하려면 다음 API 작업을 사용합니다.
+ [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html)
+ [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html)
+ [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)

## 함수 코드 다운로드
<a name="configuration-function-download"></a>

Lambda 콘솔을 통해 함수 코드 .zip의 현재 게시되지 않은(`$LATEST`) 버전을 다운로드할 수 있습니다. 이렇게 하려면 먼저 다음 IAM 권한이 있는지 확인합니다.
+ `iam:GetPolicy`
+ `iam:GetPolicyVersion`
+ `iam:GetRole`
+ `iam:GetRolePolicy`
+ `iam:ListAttachedRolePolicies`
+ `iam:ListRolePolicies`
+ `iam:ListRoles`

**함수 코드 .zip을 다운로드하려면**

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

1. 함수 코드 .zip을 다운로드할 함수를 선택합니다.

1. **함수 개요**에서 **다운로드** 버튼을 선택한 다음 **함수 코드 .zip 다운로드**를 선택합니다.

   1. 또는 **AWS SAM 파일 다운로드**를 선택하여 함수의 구성에 따라 SAM 템플릿을 생성하고 다운로드합니다. **둘 다 다운로드**를 선택하여 .zip 템플릿과 SAM 템플릿을 모두 다운로드할 수도 있습니다.

## CloudFormation
<a name="configuration-function-cloudformation"></a>

CloudFormation을 사용해 .zip 파일 아카이브를 사용하는 Lambda 함수를 생성할 수 있습니다. CloudFormation 템플릿에서 `AWS::Lambda::Function` 리소스는 Lambda 함수를 지정합니다. `AWS::Lambda::Function` 리소스의 속성에 대한 설명은 *AWS CloudFormation 사용 설명서*의 [AWS::Lambda::Function](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html)을 참조하세요.

`AWS::Lambda::Function` 리소스에서 다음 속성을 설정하여 .zip 파일 아카이브로 정의된 함수를 생성합니다.
+ AWS::Lambda::Function
  + PackageType - `Zip`(으)로 설정합니다.
  + 코드 - `S3Bucket` 및 `S3Key` 필드에 Amazon S3 버킷 이름과 .zip 파일 이름을 입력합니다. Node.js 또는 Python의 경우 Lambda 함수의 인라인 소스 코드를 제공할 수 있습니다.
  + 런타임 - 런타임 값을 설정합니다.
  + 아키텍처 - AWS Graviton2 프로세서를 사용하도록 아키텍처 값을 `arm64`로 설정합니다. 기본적으로, 아키텍처 값은 `x86_64`입니다.

# Lambda .zip 배포 패키지 암호화
<a name="encrypt-zip-package"></a>

Lambda에서는 AWS KMS key를 사용하여 .zip 배포 패키지 및 함수 구성 세부 정보에 대해 항상 저장 중 서버 측 암호화를 제공합니다. 기본적으로 Lambda는 [AWS 소유 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)를 사용합니다. 이 기본 동작이 워크플로에 적합한 경우 다른 작업을 설정하지 않아도 됩니다. AWS에서는 이 키의 사용에 대한 요금을 청구하지 않습니다.

원한다면 AWS KMS 고객 관리형 키를 대신 제공할 수 있습니다. KMS 키의 교체를 제어하거나 KMS 키를 관리하기 위한 조직의 요구 사항을 충족하기 위해 이 작업을 수행할 수 있습니다. 고객 관리형 키를 사용하면 KMS 키에 대한 액세스 권한이 있는 계정의 사용자만 함수의 코드 또는 구성을 보거나 관리할 수 있습니다.

고객 관리형 키에는 표준 AWS KMS 요금이 발생합니다. 자세한 내용은 [AWS Key Management Service 요금](https://aws.amazon.com/kms/pricing/)을 참조하십시오.

## 고객 관리형 키 만들기
<a name="create-key"></a>

 AWS Management Console 또는 AWS KMS API를 사용하여 대칭형 고객 관리형 키를 만들 수 있습니다.

**대칭 고객 관리형 키를 만들려면**

*AWS Key Management Service 개발자 안내서*의 [Creating symmetric encryption Creating symmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)에 나온 단계를 수행합니다.

### 권한
<a name="enable-zip-permissions"></a>

**키 정책**

[키 정책](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)에서는 고객 관리형 키에 대한 액세스를 제어합니다. 모든 고객 관리형 키에는 키를 사용할 수 있는 사람과 키를 사용하는 방법을 결정하는 문장이 포함된 정확히 하나의 키 정책이 있어야 합니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [How to change a key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-how-to)를 참조하세요.

고객 관리형 키를 사용하여 .zip 배포 패키지를 암호화하는 경우 Lambda는 키에 [권한 부여](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)를 추가하지 않습니다. 대신 AWS KMS 키 정책에서 Lambda가 사용자를 대신하여 다음 AWS KMS API 작업을 직접 호출하도록 허용해야 합니다.
+ [kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)

다음 예제 키 정책에서는 계정 111122223333의 모든 Lambda 함수가 지정된 고객 관리형 키에 필요한 AWS KMS 작업을 직접 호출하도록 허용합니다.

**Example AWS KMS 키 정책**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
            "Condition": {
                "StringLike": {
                "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:*"
                }
            }
        }
    ]
}
```

[키 액세스 문제 해결](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html#example-no-iam)에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*를 참조하세요.

**엔터티 권한**

고객 관리형 키를 사용하여 .zip 배포 패키지를 암호화하는 경우 해당 키에 대한 액세스 권한을 보유한 [위탁자](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html)만 .zip 배포 패키지에 액세스할 수 있습니다. 예를 들어 고객 관리형 키에 대한 액세스 권한이 없는 위탁자는 [GetFunction](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunction.html) 응답에 포함되어 있는 미리 서명된 S3 URL을 사용하여 .zip 패키지를 다운로드할 수 없습니다. `AccessDeniedException`이 응답의 `Code` 섹션에서 반환됩니다.

**Example AWS KMS AccessDeniedException**  

```
{
    "Code": {
        "RepositoryType": "S3",
        "Error": {
            "ErrorCode": "AccessDeniedException",
            "Message": "KMS access is denied. Check your KMS permissions. KMS Exception: AccessDeniedException KMS Message: User: arn:aws:sts::111122223333:assumed-role/LambdaTestRole/session is not authorized to perform: kms:Decrypt on resource: arn:aws:kms:us-east-1:111122223333:key/key-id with an explicit deny in a resource-based policy"
        },
        "SourceKMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/key-id"
    },
	...
```

AWS KMS 키 액세스 제어에 대한 자세한 내용은 [Authentication and access control for AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html)를 참조하세요.

## .zip 배포 패키지에 고객 관리형 키 사용
<a name="enable-zip-custom-encryption"></a>

다음 API 파라미터를 사용하여 .zip 배포 패키지에 대한 고객 관리형 키를 구성합니다.
+ [SourceKMSKeyArn](https://docs.aws.amazon.com/lambda/latest/api/API_FunctionCode.html#lambda-Type-FunctionCode-SourceKMSKeyArn): 소스 .zip 배포 패키지(업로드하는 파일)를 암호화합니다.
+ [KMSKeyArn](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html#lambda-CreateFunction-request-KMSKeyArn): [환경 변수](configuration-envvars-encryption.md) 및 [Lambda SnapStart](snapstart.md) 스냅샷을 암호화합니다.

`SourceKMSKeyArn` 및 `KMSKeyArn`이 모두 지정되면 Lambda는 `KMSKeyArn` 키를 사용하여 Lambda에서 함수를 간접 호출하는 데 사용하는 패키지의 압축 해제된 버전을 암호화합니다. `SourceKMSKeyArn`이 지정되었지만 `KMSKeyArn`이 지정되지 않은 경우 Lambda는 [AWS 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)를 사용하여 패키지의 압축 해제된 버전을 암호화합니다.

------
#### [ Lambda console ]

**함수를 생성하는 경우 고객 관리형 키 암호화를 추가하는 방법**

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

1. **함수 생성**을 선택합니다.

1. **새로 작성(Author from scratch)** 또는 **컨테이너 이미지(Container image)**를 선택합니다.

1. **기본 정보**에서 다음과 같이 합니다.

   1. **함수 이름(Function name)**에 함수 이름을 입력합니다.

   1. **런타임**에서 함수에 사용할 언어 버전을 선택합니다.

1. **고급 설정**을 확장하고 **AWS KMS 고객 관리형 키를 사용하여 암호화 활성화**를 선택하세요.

1. 고객 관리형 키를 선택합니다.

1. **함수 생성**을 선택합니다.

고객 관리형 키 암호화를 제거하거나 다른 키를 사용하려면 .zip 배포 패키지를 다시 업로드해야 합니다.

**기존 함수에 고객 관리형 키 암호화를 추가하는 방법**

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

1. 함수의 이름을 선택합니다.

1. **코드 소스** 창에서 **에서 업로드**를 선택합니다.

1. **.zip 파일** 또는 **Amazon S3 위치**를 선택하세요.  
![\[\]](http://docs.aws.amazon.com/ko_kr/lambda/latest/dg/images/upload-zip.png)

1. 파일을 업로드하거나 Amazon S3 위치를 입력하세요.

1. **AWS KMS 고객 관리형 키를 사용하여 암호화 활성화**를 선택하세요.

1. 고객 관리형 키를 선택합니다.

1. **저장**을 선택합니다.

------
#### [ AWS CLI ]

**함수를 생성하는 경우 고객 관리형 키 암호화를 추가하는 방법**

다음 [create-function](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html) 예제에서:
+ `--code`: .zip 배포 패키지(`ZipFile`)의 로컬 경로와 이를 암호화할 고객 관리형 키(`SourceKMSKeyArn`)를 지정합니다.
+ `--kms-key-arn`: 환경 변수 및 배포 패키지의 압축 해제된 버전을 암호화할 고객 관리형 키를 지정합니다.

```
aws lambda create-function \
  --function-name myFunction \
  --runtime nodejs24.x \
  --handler index.handler \
  --role arn:aws:iam::111122223333:role/service-role/my-lambda-role \
  --code ZipFile=fileb://myFunction.zip,SourceKMSKeyArn=arn:aws:kms:us-east-1:111122223333:key/key-id \
  --kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key2-id
```

다음 [create-function](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html) 예제에서:
+ `--code`: Amazon S3 버킷(`S3Bucket`, `S3Key`, `S3ObjectVersion`)의 .zip 파일 위치와 암호화할 고객 관리형 키(`SourceKMSKeyArn`)를 지정합니다.
+ `--kms-key-arn`: 환경 변수 및 배포 패키지의 압축 해제된 버전을 암호화할 고객 관리형 키를 지정합니다.

```
aws lambda create-function \
  --function-name myFunction \
  --runtime nodejs24.x --handler index.handler \
  --role arn:aws:iam::111122223333:role/service-role/my-lambda-role \
  --code S3Bucket=amzn-s3-demo-bucket,S3Key=myFileName.zip,S3ObjectVersion=myObjectVersion,SourceKMSKeyArn=arn:aws:kms:us-east-1:111122223333:key/key-id \
  --kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key2-id
```

**기존 함수에 고객 관리형 키 암호화를 추가하는 방법**

다음 [update-function-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-code.html) 예제에서:
+ `--zip-file`: .zip 배포 패키지에 대한 로컬 경로를 지정합니다.
+ `--source-kms-key-arn`: 배포 패키지의 압축된 버전을 암호화할 고객 관리형 키를 지정합니다. Lambda에서는 AWS 소유 키를 사용하여 함수 간접 호출을 위해 압축 해제된 패키지를 암호화합니다. 고객 관리형 키를 사용하여 패키지의 압축 해제된 버전을 암호화하려면 `--kms-key-arn` 옵션을 사용하여 [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html) 명령을 실행합니다.

```
aws lambda update-function-code \
  --function-name myFunction \
  --zip-file fileb://myFunction.zip \
  --source-kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key-id
```

다음 [update-function-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-code.html) 예제에서:
+ `--s3-bucket`: Amazon S3 버킷에서 .zip 파일의 위치를 지정합니다.
+ `--s3-key`: 배포 패키지의 Amazon S3 키를 지정합니다.
+ `--s3-object-version`: 버전이 지정된 객체의 경우 사용할 배포 패키지 객체의 버전.
+ `--source-kms-key-arn`: 배포 패키지의 압축된 버전을 암호화할 고객 관리형 키를 지정합니다. Lambda에서는 AWS 소유 키를 사용하여 함수 간접 호출을 위해 압축 해제된 패키지를 암호화합니다. 고객 관리형 키를 사용하여 패키지의 압축 해제된 버전을 암호화하려면 `--kms-key-arn` 옵션을 사용하여 [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html) 명령을 실행합니다.

```
aws lambda update-function-code \
  --function-name myFunction \
  --s3-bucket amzn-s3-demo-bucket \
  --s3-key myFileName.zip \
  --s3-object-version myObject Version
  --source-kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key-id
```

**기존 함수에서 고객 관리형 키 암호화를 제거하는 방법**

다음 [update-function-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-code.html) 예제에서는 `--zip-file`은 .zip 배포 패키지에 대한 로컬 경로를 지정합니다. `--source-kms-key-arn` 옵션 없이 이 명령을 실행하는 경우 Lambda는 AWS 소유 키를 사용하여 배포 패키지의 압축된 버전을 암호화합니다.

```
aws lambda update-function-code \
  --function-name myFunction \
  --zip-file fileb://myFunction.zip
```

------