어떻게 AWS CDK를 사용하여 APIgateway 단계의 변수와 배치를 제공합니까?
14949 단어 cloudskillsawspythonserverless
이제 CDK python을 사용하여 APIgateway를 구성합니다.
, 우리는 이미 Lambda와 Lambda층의 규정을 이해했기 때문에, 우리는 여기서 뒷코드를 사용할 것입니다. 만약에 새로 오신 분이라면 본문을 읽어 주십시오. 왜냐하면 저는 Lambda와 Lambda층에 관한 세부 사항을 많이 언급했기 때문입니다.
이제 MySampleAppStack 파일은 다음과 같습니다.
from aws_cdk.aws_lambda_python import PythonFunction, PythonLayerVersion
class MySampleStack(core.Stack):
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
# All the aws resources define here
# Here define a Lambda Layer
boto3_lambda_layer = PythonLayerVersion(
self, 'Boto3LambdaLayer',
entry='lambda/boto3Folder',
compatible_runtimes=[lambda_.Runtime.PYTHON_3_8],
description='Boto3 Library',
layer_version_name='Whatever name you want'
)
my_first_lambda_function=PythonFunction(
self, 'MyFirstLambda',
entry='lambda/MyFirstLambdaFunction',
index='app.py',
runtime=lambda_.Runtime.PYTHON_3_8,
layers=[boto3_lambda_layer],
handler='MyFirstLambdaHandler',
timeout=core.Duration.seconds(10)
)
알겠습니다. Lambda는 이미 완성되었습니다. 여기서 계속합니다. 우선 API를 제공합니다.포스터
pip install aws_cdk.aws_apigateway
필요한 모든 패키지가 설치됩니다.dev
와 prod
라는 API 단계 두 개가 필요합니다.dev
개발 및 테스트prod
프로덕션 사용자용그리고 모든 API 단계에 StageVariables를 설정해야 합니다.
dev
단계 변수는"lambdaAlias": "dev"
prod
단계 변수는"lambdaAlias": "prod"
보시다시피 두 API 단계에도 lambdaAlias
가 있지만 값은 다릅니다.따라서 우리는 이 값을 사용하여 API 호출과 전단이 개발자인지 생산 사용자인지 구분할 것이다.다시 한 번, 나는 많은 세부 사항을 말했는데, 나는 네가 읽는 것을 강력히 건의한다. 이것은 네가 전체 시리즈를 더욱 잘 이해하는 데 도움이 될 것이다.
이 점을 실현하기 위해서, 우리는 아래의 코드를 집행한 후에, 나는 한 걸음 한 걸음 설명한다.
from aws_cdk import (
aws_lambda as lambda_,
aws_apigateway as apigateway, #add this
core
)
class MySampleStack(core.Stack):
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
# ... all the lambda code above
# define a dev deployment
dev_deployment = apigateway.StageOptions(
stage_name="dev",
variables={
"lambdaAlias": "dev" # this is stage variable
})
# define an API
api = apigateway.LambdaRestApi(
self, "MyAPI", # give it a name
handler=my_first_lambda_function, # the lambda above
deploy_options=dev_deployment
)
#define a prod deployment
prod_deployment = apigateway.Deployment(
self, "ProdDeployment08052021", # change the date here
api=api,
retain_deployments=True,
# Change the description here as well for our reference
description="Production API deployment as 08-05-2021 Live version"
)
# Production stage
prod_stage = apigateway.Stage(
self, "ProdStage",
deployment=prod_deployment,
stage_name="prod",
variables={
"lambdaAlias": "prod"
})
상기 코드의 해석개발자 배치
dev_deployment
: 이것은 우리의 개발 배치입니다.우리는 dev
라는 스테이지와 스테이지 변수 키value"lambdaAlias": "dev"
를 정의했다.미국 석유 학회
api
: 이것은 우리의 주요 API 대상입니다. 이것은 my_first_lambda_function
을 사용할 것입니다. 우리는 위에서 handler
로 정의했습니다.즉, 이 API 끝점을 명중시키면 기본적으로 트리거my_first_lambda_function
(Lambda는 메소드로 특별히 설정되지 않음)가 발생합니다.우리는 deploy_options
를 dev_deployment
로 지정했는데 이것은 CDK를 배치할 때마다 dev
단계와 효과만 prod
단계로 업데이트하는 것을 의미한다. 이것은 우리가 원하는 것이다.다시 말하면 dev
단계는 우리 API의 기본 단계이다.제품 배포
prod_deployment
: 이것은 우리의 prod
단계 배치입니다.위 코드의 IDProdDeployment08052021
는 우리가 모든 정상을 확보한 후에 창고를 생산 사용자에게 넘겨주고 싶습니다. 날짜08052021
를 변경하면 CDK는 창고에 정의된 모든 코드에 새로운 배치를 만들 것입니다.기억해라. 우리는 업데이트
dev_deployment
만 하고 테스트를 한 다음에 모든 것이 정상적이고 생산으로만 미룰 수 있다.이것이 바로 우리가 해야 할 일이다. 만약 우리가 API에 세 가지 새로운 방법을 사용했다고 가정한다면, 동시에 우리는
dev_deployment
에서 테스트했을 뿐 prod_deployment
은 영향을 받지 않는다.2021년 5월 11일에 우리는 모든 테스트를 완성했고 모든 것이 정상적이며 제품을 출시할 때가 되었다. 우리는 ProdDeployment11052021
로 바꾸었다. 이것은 우리가 이전에 정의한 3가지 방법에 대해 새로운 deployment
를 만들 것이다.자극 단계
prod_stage
: 이것은 우리 API의 생산 단계입니다.모든 프로덕션 사용자가 이 API 단계에 진입합니다.항상 prod_deployment
사용하기 때문에 새 prod_deployment
을 만들 때마다 사용합니다.따라서 ID의 날짜를 변경하고 새 배포를 작성하는 데 사용됩니다prod_stage
.이것이 바로 우리가 생산 API 단계를 갱신하는 방식이다.자, 이제 API의 토대가 완성되었습니다.
이제 API에 API 메서드를 추가할 수 있습니다.우리는 이렇게 할 수 있다.
# ... continue with the code above
store = api.root.add_resource("store")
store.add_method("GET") # GET /store
store.add_method("POST") # POST /store
profile = api.root.add_resource("profile")
profile.add_method("GET") # GET /profile
profile.add_method("POST") # POST /profile
product = api.root.add_resource("product")
product.add_method("GET") # GET /product
product.add_method("DELETE") # DELETE /product
자, 이제 3개의 API 뿌리가 생겼습니다. 각각 store
,profile
와product
입니다. 모든 다른 CRUD 방법을 사용했습니다.현재, 정의된 모든 방법이 만족스럽다면,
ProdDeployment<Your date>
에서 날짜를 변경하고, prod_deployment
에서 설명을 변경해야 합니다.요약은 다음과 같습니다.
이 자습서에서는 다음과 같은 내용을 설명합니다.
1) CDK를 사용하여 다른 API 단계를 만드는 방법
2) CDK를 사용하여 다른 API 배포를 만드는 방법
3) CDK를 사용하여 각 API 단계에 대한 단계 변수를 정의하는 방법
4) CDK를 사용하여 API 방법을 정의하는 방법
나는 이 모든 것이 너에게 의미가 있기를 바란다.오늘 하루 즐겁게 보내세요.
이 시리즈의 다음 섹션:
현재 이 세 개의 API 뿌리(
store
,profile
,product
)는 어떤 CRUD 방법이든 우리가 정의한 my_first_lambda_function
만 촉발할 수 있다.다음 섹션에서는 다른 API 루트를 생성하여 다른 lambda 함수를 트리거합니다.이것은 람바다 포인트라고 한다.
CDK 구조를 구축하는 방법, 그것이 무엇인지, 그리고 왜 그것을 사용해야 하는지도 소개할 것이다.
네가 가기 전에, 만약 네가 이 시리즈를 좋아하거나 이것이 유용하다고 생각한다면, 나에게 커피 한 잔을 사주는 것을 고려해 봐라😊🤞 5달러 이상입니다.
전체 자습서 시리즈에 GitHub repo를 준비하고 각 섹션에 대해 별도로 제출할 예정입니다.
이것은 내 지지자들에게만 적용될 것이다. 왜냐하면 나는 이것을 준비하는 데 많은 시간을 들였기 때문이다.어쨌든 나는 네가 여기에 있다는 것에 매우 감격한다.오늘 하루 즐겁게 보내세요.
트위터에서 나를 향해 큰 소리로 외쳤다.
Reference
이 문제에 관하여(어떻게 AWS CDK를 사용하여 APIgateway 단계의 변수와 배치를 제공합니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/upupkenchoong/how-to-provision-apigateway-stagevarible-and-deployment-using-aws-cdk-2f8k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)