

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

# CodeBuild Lambda Python으로 Lambda 함수 구성 업데이트
<a name="sample-lambda-boto3-python"></a>

다음 Python 샘플은 [Boto3](https://aws.amazon.com/sdk-for-python/) 및 CodeBuild Lambda Python을 사용하여 Lambda 함수의 구성을 업데이트합니다. 이 샘플을 확장하여 다른 AWS 리소스를 프로그래밍 방식으로 관리할 수 있습니다. 자세한 내용은[Boto3 설명서](https://aws.amazon.com/sdk-for-python/)를 참조하십시오.

## 사전 조건
<a name="sample-lambda-boto3-python.prerequisites"></a>

계정에서 Lambda 함수를 생성하거나 찾습니다.

이 샘플에서는 계정에 Lambda 함수를 이미 생성했다고 가정하고 CodeBuild를 사용하여 Lambda 함수의 환경 변수를 업데이트합니다. CodeBuild를 통해 Lambda 함수를 설정하는 방법에 대한 자세한 내용은 [CodeBuild Lambda Java와 AWS SAM 함께를 사용하여 Lambda 함수 배포](sample-lambda-sam-gradle.md) 샘플을 참조하거나 [AWS Lambda](https://aws.amazon.com/lambda/)를 참조하세요

## 소스 리포지토리 설정
<a name="sample-lambda-boto3-python.set-up-repo"></a>

Boto3 python 스크립트를 저장할 소스 리포지토리를 생성합니다.

**소스 리포지토리를 설정하려면**

1. 다음 python 스크립트를 `update_lambda_environment_variables.py`라는 새 파일에 복사합니다.

   ```
   import boto3
   from os import environ
   
   
   def update_lambda_env_variable(lambda_client):
       lambda_function_name = environ['LAMBDA_FUNC_NAME']
       lambda_env_variable = environ['LAMBDA_ENV_VARIABLE']
       lambda_env_variable_value = environ['LAMBDA_ENV_VARIABLE_VALUE']
       print("Updating lambda function " + lambda_function_name + " environment variable "
             + lambda_env_variable + " to " + lambda_env_variable_value)
       lambda_client.update_function_configuration(
           FunctionName=lambda_function_name,
           Environment={
               'Variables': {
                   lambda_env_variable: lambda_env_variable_value
               }
           },
       )
   
   
   if __name__ == "__main__":
       region = environ['AWS_REGION']
       client = boto3.client('lambda', region)
       update_lambda_env_variable(client)
   ```

1. python 파일을 지원되는 소스 리포지토리에 업로드합니다. 지원되는 소스 유형 목록은 [ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html)를 참조하세요.

## CodeBuild Lambda Python 프로젝트 생성
<a name="sample-lambda-boto3-python.create-project"></a>

CodeBuild Lambda Python 프로젝트를 생성합니다.

**CodeBuild Lambda Java 프로젝트를 생성하려면**

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) AWS CodeBuild 콘솔을 엽니다.

1.  CodeBuild 정보 페이지가 나타나면 **빌드 프로젝트 생성**을 선택합니다. 그렇지 않을 경우, 탐색 창에서 **빌드**를 확장한 후 **빌드 프로젝트**를 선택하고 **빌드 프로젝트 생성**을 선택합니다.

1. **프로젝트 이름**에 이 빌드 프로젝트의 이름을 입력합니다. 빌드 프로젝트 이름은 각 AWS 계정에서 고유해야 합니다. 또한 선택에 따라 빌드 프로젝트에 대한 설명을 포함하여 다른 사용자가 이 프로젝트의 용도를 이해하도록 도울 수 있습니다.

1. **소스**에서 AWS SAM 프로젝트가 위치한 소스 리포지토리를 선택합니다.

1. **환경**에서 다음과 같이 합니다.
   + **컴퓨팅**에서 **Lambda**를 선택합니다.
   + **런타임**에서 **Python**을 선택합니다.
   + **이미지**에서 **aws/codebuild/amazonlinux-x86\$164-lambda-standard:python3.12**를 선택합니다.
   + **서비스 역할**의 경우 **새 서비스 역할**을 선택한 상태로 둡니다. **역할 이름**을 기록해 둡니다. 이는 이 샘플의 뒷부분에서 프로젝트의 IAM 권한을 업데이트할 때 필요합니다.

1. **빌드 프로젝트 생성**을 선택합니다.

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. 탐색 창에서 **역할**을 선택하고 프로젝트와 연결된 서비스 역할을 선택합니다. 빌드 프로젝트를 선택하고 **편집**, **환경**, **서비스 역할**을 선택하여 CodeBuild에서 프로젝트 역할을 찾을 수 있습니다.

1. **신뢰 관계** 탭을 선택한 후 **신뢰 정책 편집**을 선택합니다.

1. 다음 인라인 정책을 IAM 역할에 추가합니다. 이는 나중에 AWS SAM 인프라를 배포하는 데 사용됩니다. 자세한 내용은 * IAM 사용 설명서*의 [IAM 자격 증명 권한 추가 및 제거](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-attach-detach.html)를 참조하세요.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "UpdateLambdaPermissions",
               "Effect": "Allow",
               "Action": [
                   "lambda:UpdateFunctionConfiguration"
               ],
               "Resource": [
                   "*"
               ]
           }
       ]
   }
   ```

------

## 프로젝트 buildspec 설정
<a name="sample-lambda-boto3-python.set-up-buildspec"></a>

Lambda 함수를 업데이트하기 위해 스크립트는 buildspec에서 환경 변수를 읽고 Lambda 함수의 이름, 환경 변수 이름 및 환경 변수 값을 찾습니다.

**프로젝트 buildspec을 설정하려면**

1. CodeBuild 콘솔에서 빌드 프로젝트를 선택한 다음 **편집** 및 **Buildspec**을 선택합니다.

1. **Buildspec**에서 **빌드 명령 삽입**을 선택한 후 **편집기로 전환**을 선택합니다.

1. 사전 채워진 빌드 명령을 삭제하고 다음 buildspec에 붙여넣습니다.

   ```
   version: 0.2
   env:
     variables:
       LAMBDA_FUNC_NAME: "<lambda-function-name>"
       LAMBDA_ENV_VARIABLE: "FEATURE_ENABLED"
       LAMBDA_ENV_VARIABLE_VALUE: "true"
   phases:
     install:
       commands:
          - pip3 install boto3
     build:
       commands:
          - python3 update_lambda_environment_variables.py
   ```

1. **Update buildspec(buildspec 업데이트)**을 선택합니다.

## Lambda 구성 업데이트
<a name="sample-lambda-boto3-python.update"></a>

CodeBuild Lambda Python을 사용하여 Lambda 함수의 구성을 자동으로 업데이트합니다.

**Lambda 함수의 구성을 업데이트하려면**

1. **빌드 시작**를 선택합니다.

1. 빌드가 완료되면 Lambda 함수로 이동합니다.

1. **구성**을 선택한 후 **환경** 변수를 선택합니다. 키 `FEATURE_ENABLED` 및 값이 `true`인 새 환경 변수가 표시됩니다.

## 인프라 정리
<a name="sample-lambda-boto3-python.clean-up"></a>

이 자습서에서 사용한 리소스에 대한 추가 요금을 피하려면 CodeBuild 프로젝트에 대해 생성된 리소스를 삭제합니다.

**인프라를 정리하려면**

1. CloudWatch 콘솔로 이동하여 CodeBuild 프로젝트와 연결된 CloudWatch 로그 그룹을 삭제합니다.

1. CodeBuild 콘솔로 이동하여 **빌드 프로젝트 삭제**를 선택하여 CodeBuild 프로젝트를 삭제합니다.

1. 이 샘플을 위해 Lambda 함수를 생성한 경우 **작업** 및 **함수 삭제**를 선택하여 Lambda 함수를 정리합니다.

## 확장 프로그램
<a name="sample-lambda-boto3-python.extensions"></a>

 AWS CodeBuild Lambda Python을 사용하여 다른 AWS 리소스를 관리하도록이 샘플을 확장하려는 경우:
+ Python 스크립트를 업데이트하여 Boto3를 사용하여 새 리소스를 수정합니다.
+ 새 리소스에 대한 권한을 갖도록 CodeBuild 프로젝트와 연결된 IAM 역할을 업데이트합니다.
+ 새 리소스와 연결된 새 환경 변수를 buildspec에 추가합니다.