레이어 준비
먼저, 레이어의 폴더 구조를 설정해야합니다. 나는 레이어라는 폴더를 만들고 싶고 각 레이어마다 자체 폴더를 만듭니다. AWS Lambda는 레이어에 대한 특정 폴더 구조가 필요하며 각 계층의 코드는 파이썬/ 폴더에 있습니다. 자세한 내용은 다음 링크를 참조하십시오. https://docs.aws.amazon.com/lambda/latest/dg/packaging-layers.html
우리의 계층은 layer_utils라고합니다. 그런 다음 Python 폴더 내부에 폴더 Layer_utils를 넣고 내부에 Code와 함께 request_handler.py 및 processor.py 파일을 만듭니다. 또한 Python이 패키지로 인식하는 데 필요한 init 처럼 보이는 방식입니다
request_handler.py는 URL로 요청을 받고 라이브러리 요청을 사용하여 데이터를 가져 와서 반환 할 프로세서를 호출합니다.
./ Layers/Layer_utils/Python/Layer_Utils/Processor.py
./ Layers/Layer_utils/Python/Layer_utils/request_handler.py
layers/
└── layer_utils/
└── python/
├── layer_utils/
│ ├── __init__.py
│ └── request_handler.py
│ └── processor.py
여기서, 프로세서 import process_data 만 대신 layer_utils.processor import process_data에서 호출하여 프로세서 함수를 가져 오는 방법에 유의해야합니다. 절대 경로를 사용하면 나중에 가져 오기 오류를 피할 수 있습니다
레이어 포장
좋아, 이제 우리는 계층 코드를 만들었습니다. 그러나 우리는 아직 끝나지 않았습니다. 우리는 이제 Lambda 코드에서 사용할 수 있도록 PIP로 편집 가능한 패키지를 만들어야합니다. 우리는 PEP 660 스타일을 따라야합니다. 요구 사항 .txt 및 pyproject.toml의 두 파일을 만들어야합니다. 첫 번째에는이 레이어에 필요한 모든 외부 라이브러리가 포함됩니다. 두 번째는 PIP를 사용하여 편집 가능한 패키지를 만들고 모든 종속성이 설치되도록 해야하는 파일입니다. 이렇게하면 끊임없이 다시 포장 할 필요없이 레이어 코드를 편집 할 수 있습니다 (디버그해야합니다).
이것은 나무가 처럼 보이는 방식입니다
pyproject.toml은 PIP에서 우리의 레이어와 함께 패키지를 만드는 데 사용됩니다.
./ Layers/Layer_utils/Python/pyproject.toml
이 파일에서는 패키지를 만들려면 SetUptools 패키지가 필요하며 휠 패키지는 코드를 분산 형식으로 포장하는 데 사용됩니다.
요구 사항 .txt는 계층에 필요한 모든 외부 모듈을 나타냅니다. 우리의 경우 우리는 요청 모듈 만 필요하지만 필요한만큼 추가 할 수 있습니다.
./ Layers/Layer_Utils/Python/reamustry.txt layers/
└── layer_utils/
└── python/
├── layer_utils/
│ ├── __init__.py
│ └── request_handler.py
│ └── processor.py
나는 AWS에서 직접 AWS Lambda 레이어 리소스를 호출하여 외부 패키지를 가져 오기 때문에 사용중인 패키지 버전을 추적하는 것이 중요하다고 생각합니다. SAM Local Invoke 또는 SAM Local Start-API를 사용하는 대신 Python 환경에서 직접 Lambda를 실행하여 시스템에서 직접 디버깅하는 경우 PIP에 설치된 로컬 패키지가 배포 된 것과 동일해야합니다. 레이어 패키지. 그에 대한 좋은 튜토리얼이 많기 때문에 외부 계층을 만드는 방법을 설명하지 않을 것입니다 (예 : https://www.keyq.cloud/en/blog/creating-an-aws lambda-layer-for- Python-Requests-Module
).
가상 환경 설정
이제 가상 환경을 만들어 봅시다. 이것은 필요하지 않지만 종속성을 분리하고 Python 환경이 Lambda가 사용할 환경과 일치하도록 권장합니다. 이렇게하려면 프로젝트의 콘솔에서 input
첫 번째는 Python이 -m venv와 함께 Venv 모듈을 실행하고 Venv라는 가상 환경을 만듭니다.
두 번째는 가상 환경 활성화 스크립트를 실행하는 내장 명령 소스를 호출하여 가상 환경을 활성화합니다. Visual Studio 코드를 사용하는 경우 가상 환경으로 전환하라는 메시지가 표시됩니다. 네 라고 말하다. import requests
def process_data(url):
"""
Fetches data from a URL.
Args:
url (str): The URL to fetch data from.
Returns:
str: The fetched content or an error message.
"""
try:
response = requests.get(url)
response.raise_for_status() # Raise an error for bad status codes
return response.text[:200] # Return the first 200 characters of the response
except requests.RequestException as e:
return f"Error fetching data: {str(e)}"
이 후에, 당신은 당신의 껍질에서 이런 것을 볼 수 있습니다. .
처음의 (VENV)는 가상 환경에 있음을 나타냅니다.
때때로 SAM 도구 대신 Python 파일을 직접 실행하는 것을 디버깅하는 것을 좋아합니다 (빠르기 때문에). 이렇게하려면 가상 환경에 모든 외부 패키지를 설치하여 개발 및 디버깅을 위해 로컬로 사용할 수 있습니다.
이것은 SAM 도구없이 로컬 및 직접 디버그하는 데만 필요 하므로이 작업을 수행하지 않으면이 단계를 건너 뛸 수 있습니다.
우리는 이제 레이어를 패키지해야하므로 Lambda는 레이어를 파이썬 패키지로 찾을 수 있습니다.
from layer_utils.processor import process_data
def handle_request(request):
"""
Handles an incoming request and processes it.
Args:
request (dict): The input request data.
Returns:
dict: The processed result.
"""
# Example: Extract 'url' from the request and process it
if "url" not in request:
return {"error": "Missing 'data' in request"}
data = request["url"]
processed_result = process_data(data)
return {"result": processed_result}
-e 플래그는 이것이 편집 가능한 패키지임을 나타냅니다. 경로는 pyproject.toml 파일의 위치를 가리 킵니다. 이것을 실행하면 새로운 폴더 layer_utils.egg-info가 생성됩니다. 거기서 할 일이없고 그냥 남겨 두십시오.
디버깅
좋아, 이제 우리가 이것을 어떻게 디버그 할 것인지 봅시다. 이것은 레이어와 람다를 갖춘 내 폴더 구조입니다.
이것은 내 람다의 코드 <pre class="brush:php;toolbar:false">layers/
└── layer_utils/
└── python/
├── layer_utils/
│ ├── __init__.py
│ └── request_handler.py
│ └── processor.py
</pre>입니다
<p>
<br>
<the> 파일을 실행할 수 있고 오류없이 유효한 결과를 얻을 수 있습니다.
<using> Pylance와 함께 Visual Studio Code를 사용하는 경우 코드가 작동하더라도 레이어 가져 오기가 해결되지 않을 수 있습니다. </using></the></p>
<pre class="brush:php;toolbar:false">import requests
def process_data(url):
"""
Fetches data from a URL.
Args:
url (str): The URL to fetch data from.
Returns:
str: The fetched content or an error message.
"""
try:
response = requests.get(url)
response.raise_for_status() # Raise an error for bad status codes
return response.text[:200] # Return the first 200 characters of the response
except requests.RequestException as e:
return f"Error fetching data: {str(e)}"
</pre> <p>
이를 해결하려면 작업 공간의 Settings.json을 편집 할 수 있습니다. Control/Command Shift P를 수행하고 환경 설정을 입력하십시오 : 작업 공간 설정 (JSON)을 열고 브래킷 내부에 다음을 추가하십시오 (더 많은 엑스트라 경로가있는 경우 경로를 추가하시면) </p>.
<p>
</p>
<ance> 이제 Pylance는 이것을 잘 해결해야합니다. <p>
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173816779174617.png?x-oss-process=image/resize,p_40" class="lazy" alt="Pylance complaining on VSCode" loading="lazy" style="max-width:90%" style="max-width:90%">
스택에 레이어를 추가합니다
</p>
<to> 이제 Lambdas Template.yml에 레이어를 설정해야합니다. 우리는 리소스 내부에 다음을 추가해야합니다. 섹션 (프로젝트에 따라 콘텐츠를 적응) <p>
./ lambdas/mylambda/template.yml <br>
</p>
<pre class="brush:php;toolbar:false">from layer_utils.processor import process_data
def handle_request(request):
"""
Handles an incoming request and processes it.
Args:
request (dict): The input request data.
Returns:
dict: The processed result.
"""
# Example: Extract 'url' from the request and process it
if "url" not in request:
return {"error": "Missing 'data' in request"}
data = request["url"]
processed_result = process_data(data)
return {"result": processed_result}
</pre>
<ur> condenturi에서는 레이어 코드가있는 상대 경로를 어떻게 지칭하는지 알 수 있습니다. AWS SAM 시스템이 Python 폴더를 찾을 것이기 때문에 Python 폴더를 가리키지 않는 방법을 확인하십시오. 런타임이 가상 환경과 LAMNBDA에서 사용하는 런타임과 일치하는지 확인하십시오. <p>
또한 파일의 람다 섹션의 레이어를 참조해야합니다.
</p>
<h2>
<the> 템플릿 파일의 레이어 섹션에 이미 AWS에있는 요청 계층도 있습니다. 이것은 레이어를 로컬로 생성하므로 Sam은 읽어야한다는 것을 알게 될 것입니다. 또한 AWS 배포를 호출 할 때 마다이 레이어를 AWS에 배포합니다.
</the>
</h2>
샘과의 디버깅
<p>
<this> 이것을 테스트합시다. 먼저 구축합시다. 템플릿에 소스 코드의 위치에 표시가 있기 때문에 템플릿을 다른 경로에서 구축하는 데 문제가있었습니다. 이를 피하려면 템플릿 파일의 경로에서 직접 빌드하는 것이 좋습니다.
</this></p>
<p>
<all> 이것은 필요한 모든 종속성을 구축합니다. <strong>
<inv> 이제 우리는 그것을 호출 할 수 있습니다. 람다를 테스트하기위한 이벤트 파일을 만들었습니다.
./ lambdas/mylambda/events/event.json
<br>
</inv></strong></all></p>
<inv> 이제 디버깅을 위해 파일을 호출 할 수 있습니다. 이를 위해 Docker를 설치하고 실행해야한다는 것을 기억하십시오. 다시 말하지만, 템플릿 파일이있는 곳에서 이것을 호출해야합니다. <pre class="brush:php;toolbar:false">└── layer_utils
└── python
├── layer_utils
│ ├── __init__.py
│ ├── processor.py
│ └── request_handler.py
├── pyproject.toml
└── requirements.txt
</pre>.
<p>
<br>
<oke> 이것은 template.yml에서 함수를 호출합니다. -D 플래그는 디버그 포트가 5678임을 나타냅니다. -E 플래그는 Lambda에 제출 될 이벤트 파일이 어디에 있는지 나타냅니다. <br><h2>
람다와 레이어를 AWS에 배포하십시오
</h2>
<final> 이제 코드를 AWS에 배치하여이를 마무리합시다. <p>
<br>
</p>
<u> -람다를 아직 배치하지 않은 경우 -유도 플래그는 프로세스에 도움이 될 수 있으므로 처음으로 사용할 수 있습니다. 이 작업을 마치면 AWS 콘솔로 가서 레이어를 찾을 수 있습니다. 이제 레이어의 ARN을 사용하여 다른 람다와 함께 레이어를 사용할 수 있습니다. <pre class="brush:php;toolbar:false">layers/
└── layer_utils/
└── python/
├── layer_utils/
│ ├── __init__.py
│ └── request_handler.py
│ └── processor.py
</pre>
</u><p> </p>
<p>
VSCODE 설정 디버그
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173816779293205.png?x-oss-process=image/resize,p_40" class="lazy" alt="The lambda layer on the AWS Console" loading="lazy" style="max-width:90%" style="max-width:90%">
<to> vscode를 사용하여 디버그, 브레이크 포인트 설정 등을 사용하려면 몇 가지 추가 단계를 수행해야합니다. </to></p>
<add> 디버그 구성을 추가해야합니다. 이렇게하려면 Control/Command Shift P 및 유형 디버그 : 구성 추가 .... 런치 .JSON 파일이 열립니다. 구성을 추가해야합니다. <h2>
</h2> ./. vscode/unker.json <p>
</p>
<p>
<deb> 우리는 Sam Local Invoke에 부착 할 디버시를 사용하고 있으며, 여기서 -D 플래그로 호출 할 때 본 포트 5678을 설정합니다. Lambda 코드가있는 디렉토리를 가리키는지 확인하십시오. 더 많은 구성이있는 경우 구성 내부의 부품을 목록에 추가하십시오. </deb></p>
<the> 우리는 디버시 라이브러리가 필요합니다. 먼저 요구 사항에 추가하겠습니다.
./ lambdas/mylambda/reimpings.txt <p>
<strong>
</strong>
<install> 이제 pip 로 설치합시다
<br>
</install></p>
<also also> 또는 요구 사항을 통해 설치할 수도 있습니다 .txt 파일
<pre class="brush:php;toolbar:false">import requests
def process_data(url):
"""
Fetches data from a URL.
Args:
url (str): The URL to fetch data from.
Returns:
str: The fetched content or an error message.
"""
try:
response = requests.get(url)
response.raise_for_status() # Raise an error for bad status codes
return response.text[:200] # Return the first 200 characters of the response
except requests.RequestException as e:
return f"Error fetching data: {str(e)}"
</pre>
<p>
<create> 우리는 AWS_SAM_LOCAL 환경 변수를 정의 할 수있는 환경 파일을 만들어야합니다. 작업 공간 폴더에서 파일 .env를 만듭니다. </create></p>
<p> ./
</p>
<p>
<ine> 여기서 우리는 AWS_SAM_LOCAL을 정의하여 Lambda는 AWS SAM을 통해 로컬로 실행되고 있음을 알게됩니다. <strong>
<to> 우리는 또한 파이썬 환경에 환경 파일의 환경 변수를 사용해야한다고 말해야합니다. 이것이 바로 </to></strong>처럼 보이는 방법입니다
./. vscode/settings.json
</ine></p>
<pre class="brush:php;toolbar:false">from layer_utils.processor import process_data
def handle_request(request):
"""
Handles an incoming request and processes it.
Args:
request (dict): The input request data.
Returns:
dict: The processed result.
"""
# Example: Extract 'url' from the request and process it
if "url" not in request:
return {"error": "Missing 'data' in request"}
data = request["url"]
processed_result = process_data(data)
return {"result": processed_result}
</pre>
<need> 마지막으로 Lambda 코드를 수정하여 로컬로 실행할 때 디버거에 첨부 해야하는 것을 알 수 있습니다. 파일의 시작 부분에서 다음 코드 <p>를 추가합니다.
./ lambdas/mylambda/src/lambda_function.py <br>
</p>
<pre class="brush:php;toolbar:false">└── layer_utils
└── python
├── layer_utils
│ ├── __init__.py
│ ├── processor.py
│ └── request_handler.py
├── pyproject.toml
└── requirements.txt
</pre>
<inv inv> 이제 우리는 함수를 호출합니다 (다시 함수가있는 경로에서) :
<p>
<br>
<ole> 콘솔이 디버거가 첨부 될 때까지 대기하는 것을 보여 주면 ... F5를 누르거나 Python Debugger : Debug를 선택하여 Debug를 선택하십시오.
</ole></p> <pre class="brush:php;toolbar:false">[project]
name = "layer_utils"
version = "0.1.0"
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
</pre>
<are> 그리고 이제 당신은 로컬 레이어와 람다를 디버깅 할 준비가되었습니다!
<p>
</p></are></inv></need></also></the></add></final></oke></p></inv></ur></to></ance>
./ Layers/Layer_utils/Python/Layer_utils/request_handler.py
layers/ └── layer_utils/ └── python/ ├── layer_utils/ │ ├── __init__.py │ └── request_handler.py │ └── processor.py
이 파일에서는 패키지를 만들려면 SetUptools 패키지가 필요하며 휠 패키지는 코드를 분산 형식으로 포장하는 데 사용됩니다.
첫 번째는 Python이 -m venv와 함께 Venv 모듈을 실행하고 Venv라는 가상 환경을 만듭니다. .
./ Layers/Layer_utils/Python/pyproject.toml
layers/
└── layer_utils/
└── python/
├── layer_utils/
│ ├── __init__.py
│ └── request_handler.py
│ └── processor.py
import requests
def process_data(url):
"""
Fetches data from a URL.
Args:
url (str): The URL to fetch data from.
Returns:
str: The fetched content or an error message.
"""
try:
response = requests.get(url)
response.raise_for_status() # Raise an error for bad status codes
return response.text[:200] # Return the first 200 characters of the response
except requests.RequestException as e:
return f"Error fetching data: {str(e)}"
from layer_utils.processor import process_data
def handle_request(request):
"""
Handles an incoming request and processes it.
Args:
request (dict): The input request data.
Returns:
dict: The processed result.
"""
# Example: Extract 'url' from the request and process it
if "url" not in request:
return {"error": "Missing 'data' in request"}
data = request["url"]
processed_result = process_data(data)
return {"result": processed_result}
디버깅
좋아, 이제 우리가 이것을 어떻게 디버그 할 것인지 봅시다. 이것은 레이어와 람다를 갖춘 내 폴더 구조입니다.
이것은 내 람다의 코드 <pre class="brush:php;toolbar:false">layers/
└── layer_utils/
└── python/
├── layer_utils/
│ ├── __init__.py
│ └── request_handler.py
│ └── processor.py
</pre>입니다
<p>
<br>
<the> 파일을 실행할 수 있고 오류없이 유효한 결과를 얻을 수 있습니다.
<using> Pylance와 함께 Visual Studio Code를 사용하는 경우 코드가 작동하더라도 레이어 가져 오기가 해결되지 않을 수 있습니다. </using></the></p>
<pre class="brush:php;toolbar:false">import requests
def process_data(url):
"""
Fetches data from a URL.
Args:
url (str): The URL to fetch data from.
Returns:
str: The fetched content or an error message.
"""
try:
response = requests.get(url)
response.raise_for_status() # Raise an error for bad status codes
return response.text[:200] # Return the first 200 characters of the response
except requests.RequestException as e:
return f"Error fetching data: {str(e)}"
</pre> <p>
이를 해결하려면 작업 공간의 Settings.json을 편집 할 수 있습니다. Control/Command Shift P를 수행하고 환경 설정을 입력하십시오 : 작업 공간 설정 (JSON)을 열고 브래킷 내부에 다음을 추가하십시오 (더 많은 엑스트라 경로가있는 경우 경로를 추가하시면) </p>.
<p>
</p>
<ance> 이제 Pylance는 이것을 잘 해결해야합니다. <p>
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173816779174617.png?x-oss-process=image/resize,p_40" class="lazy" alt="Pylance complaining on VSCode" loading="lazy" style="max-width:90%" style="max-width:90%">
스택에 레이어를 추가합니다
</p>
<to> 이제 Lambdas Template.yml에 레이어를 설정해야합니다. 우리는 리소스 내부에 다음을 추가해야합니다. 섹션 (프로젝트에 따라 콘텐츠를 적응) <p>
./ lambdas/mylambda/template.yml <br>
</p>
<pre class="brush:php;toolbar:false">from layer_utils.processor import process_data
def handle_request(request):
"""
Handles an incoming request and processes it.
Args:
request (dict): The input request data.
Returns:
dict: The processed result.
"""
# Example: Extract 'url' from the request and process it
if "url" not in request:
return {"error": "Missing 'data' in request"}
data = request["url"]
processed_result = process_data(data)
return {"result": processed_result}
</pre>
<ur> condenturi에서는 레이어 코드가있는 상대 경로를 어떻게 지칭하는지 알 수 있습니다. AWS SAM 시스템이 Python 폴더를 찾을 것이기 때문에 Python 폴더를 가리키지 않는 방법을 확인하십시오. 런타임이 가상 환경과 LAMNBDA에서 사용하는 런타임과 일치하는지 확인하십시오. <p>
또한 파일의 람다 섹션의 레이어를 참조해야합니다.
</p>
<h2>
<the> 템플릿 파일의 레이어 섹션에 이미 AWS에있는 요청 계층도 있습니다. 이것은 레이어를 로컬로 생성하므로 Sam은 읽어야한다는 것을 알게 될 것입니다. 또한 AWS 배포를 호출 할 때 마다이 레이어를 AWS에 배포합니다.
</the>
</h2>
샘과의 디버깅
<p>
<this> 이것을 테스트합시다. 먼저 구축합시다. 템플릿에 소스 코드의 위치에 표시가 있기 때문에 템플릿을 다른 경로에서 구축하는 데 문제가있었습니다. 이를 피하려면 템플릿 파일의 경로에서 직접 빌드하는 것이 좋습니다.
</this></p>
<p>
<all> 이것은 필요한 모든 종속성을 구축합니다. <strong>
<inv> 이제 우리는 그것을 호출 할 수 있습니다. 람다를 테스트하기위한 이벤트 파일을 만들었습니다.
./ lambdas/mylambda/events/event.json
<br>
</inv></strong></all></p>
<inv> 이제 디버깅을 위해 파일을 호출 할 수 있습니다. 이를 위해 Docker를 설치하고 실행해야한다는 것을 기억하십시오. 다시 말하지만, 템플릿 파일이있는 곳에서 이것을 호출해야합니다. <pre class="brush:php;toolbar:false">└── layer_utils
└── python
├── layer_utils
│ ├── __init__.py
│ ├── processor.py
│ └── request_handler.py
├── pyproject.toml
└── requirements.txt
</pre>.
<p>
<br>
<oke> 이것은 template.yml에서 함수를 호출합니다. -D 플래그는 디버그 포트가 5678임을 나타냅니다. -E 플래그는 Lambda에 제출 될 이벤트 파일이 어디에 있는지 나타냅니다. <br><h2>
람다와 레이어를 AWS에 배포하십시오
</h2>
<final> 이제 코드를 AWS에 배치하여이를 마무리합시다. <p>
<br>
</p>
<u> -람다를 아직 배치하지 않은 경우 -유도 플래그는 프로세스에 도움이 될 수 있으므로 처음으로 사용할 수 있습니다. 이 작업을 마치면 AWS 콘솔로 가서 레이어를 찾을 수 있습니다. 이제 레이어의 ARN을 사용하여 다른 람다와 함께 레이어를 사용할 수 있습니다. <pre class="brush:php;toolbar:false">layers/
└── layer_utils/
└── python/
├── layer_utils/
│ ├── __init__.py
│ └── request_handler.py
│ └── processor.py
</pre>
</u><p> </p>
<p>
VSCODE 설정 디버그
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173816779293205.png?x-oss-process=image/resize,p_40" class="lazy" alt="The lambda layer on the AWS Console" loading="lazy" style="max-width:90%" style="max-width:90%">
<to> vscode를 사용하여 디버그, 브레이크 포인트 설정 등을 사용하려면 몇 가지 추가 단계를 수행해야합니다. </to></p>
<add> 디버그 구성을 추가해야합니다. 이렇게하려면 Control/Command Shift P 및 유형 디버그 : 구성 추가 .... 런치 .JSON 파일이 열립니다. 구성을 추가해야합니다. <h2>
</h2> ./. vscode/unker.json <p>
</p>
<p>
<deb> 우리는 Sam Local Invoke에 부착 할 디버시를 사용하고 있으며, 여기서 -D 플래그로 호출 할 때 본 포트 5678을 설정합니다. Lambda 코드가있는 디렉토리를 가리키는지 확인하십시오. 더 많은 구성이있는 경우 구성 내부의 부품을 목록에 추가하십시오. </deb></p>
<the> 우리는 디버시 라이브러리가 필요합니다. 먼저 요구 사항에 추가하겠습니다.
./ lambdas/mylambda/reimpings.txt <p>
<strong>
</strong>
<install> 이제 pip 로 설치합시다
<br>
</install></p>
<also also> 또는 요구 사항을 통해 설치할 수도 있습니다 .txt 파일
<pre class="brush:php;toolbar:false">import requests
def process_data(url):
"""
Fetches data from a URL.
Args:
url (str): The URL to fetch data from.
Returns:
str: The fetched content or an error message.
"""
try:
response = requests.get(url)
response.raise_for_status() # Raise an error for bad status codes
return response.text[:200] # Return the first 200 characters of the response
except requests.RequestException as e:
return f"Error fetching data: {str(e)}"
</pre>
<p>
<create> 우리는 AWS_SAM_LOCAL 환경 변수를 정의 할 수있는 환경 파일을 만들어야합니다. 작업 공간 폴더에서 파일 .env를 만듭니다. </create></p>
<p> ./
</p>
<p>
<ine> 여기서 우리는 AWS_SAM_LOCAL을 정의하여 Lambda는 AWS SAM을 통해 로컬로 실행되고 있음을 알게됩니다. <strong>
<to> 우리는 또한 파이썬 환경에 환경 파일의 환경 변수를 사용해야한다고 말해야합니다. 이것이 바로 </to></strong>처럼 보이는 방법입니다
./. vscode/settings.json
</ine></p>
<pre class="brush:php;toolbar:false">from layer_utils.processor import process_data
def handle_request(request):
"""
Handles an incoming request and processes it.
Args:
request (dict): The input request data.
Returns:
dict: The processed result.
"""
# Example: Extract 'url' from the request and process it
if "url" not in request:
return {"error": "Missing 'data' in request"}
data = request["url"]
processed_result = process_data(data)
return {"result": processed_result}
</pre>
<need> 마지막으로 Lambda 코드를 수정하여 로컬로 실행할 때 디버거에 첨부 해야하는 것을 알 수 있습니다. 파일의 시작 부분에서 다음 코드 <p>를 추가합니다.
./ lambdas/mylambda/src/lambda_function.py <br>
</p>
<pre class="brush:php;toolbar:false">└── layer_utils
└── python
├── layer_utils
│ ├── __init__.py
│ ├── processor.py
│ └── request_handler.py
├── pyproject.toml
└── requirements.txt
</pre>
<inv inv> 이제 우리는 함수를 호출합니다 (다시 함수가있는 경로에서) :
<p>
<br>
<ole> 콘솔이 디버거가 첨부 될 때까지 대기하는 것을 보여 주면 ... F5를 누르거나 Python Debugger : Debug를 선택하여 Debug를 선택하십시오.
</ole></p> <pre class="brush:php;toolbar:false">[project]
name = "layer_utils"
version = "0.1.0"
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
</pre>
<are> 그리고 이제 당신은 로컬 레이어와 람다를 디버깅 할 준비가되었습니다!
<p>
</p></are></inv></need></also></the></add></final></oke></p></inv></ur></to></ance>
위 내용은 코드를 재사용 가능한 AWS Lambda 레이어로 작성, 디버그 및 배포하십시오.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

PythonuseSahybrideactroach, combingingcompytobytecodeandingretation.1) codeiscompiledToplatform-IndependentBecode.2) bytecodeistredbythepythonvirtonmachine, enterancingefficiency andportability.

"for"and "while"loopsare : 1) "에 대한"loopsareIdealforitertatingOverSorkNowniterations, whide2) "weekepindiTeRations.Un

Python에서는 다양한 방법을 통해 목록을 연결하고 중복 요소를 관리 할 수 있습니다. 1) 연산자를 사용하거나 ()을 사용하여 모든 중복 요소를 유지합니다. 2) 세트로 변환 한 다음 모든 중복 요소를 제거하기 위해 목록으로 돌아가지 만 원래 순서는 손실됩니다. 3) 루프 또는 목록 이해를 사용하여 세트를 결합하여 중복 요소를 제거하고 원래 순서를 유지하십시오.

fastestestestedforListCancatenationInpythondSpendsonListsize : 1) Forsmalllist, OperatoriseFficient.2) ForlargerLists, list.extend () OrlistComprehensionIsfaster, withextend () morememory-efficientBymodingListsin-splace.

toInsertElmentsIntoapyThonList, useAppend () toaddtotheend, insert () foraspecificposition, andextend () andextend () formultipleElements.1) useappend () foraddingsingleitemstotheend.2) useinsert () toaddatespecificindex, 그러나)

pythonlistsareimplementedesdynamicarrays, notlinkedlists.1) thearestoredIntIguousUousUousUousUousUousUousUousUousUousInSeripendExeDaccess, LeadingSpyTHOCESS, ImpactingEperformance

PythonoffersfourmainmethodstoremoveElementsfromalist : 1) 제거 (값) 제거 (값) removesthefirstoccurrencefavalue, 2) pop (index) 제거 elementatAspecifiedIndex, 3) delstatemeveselementsByindexorSlice, 4) RemovesAllestemsfromTheChmetho

Toresolvea "permissionDenied"오류가 발생할 때 오류가 발생합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.