어떻게 AWS CDK를 사용하여 APIgateway 단계의 변수와 배치를 제공합니까?

에서 API Gateway, Lambda, Lambda 버전,alias와environment가 어떻게 협동하여 일을 하는지 모든 기본 개념을 이해합니다.
이제 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
필요한 모든 패키지가 설치됩니다.devprod라는 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_optionsdev_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,profileproduct입니다. 모든 다른 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를 준비하고 각 섹션에 대해 별도로 제출할 예정입니다.
이것은 내 지지자들에게만 적용될 것이다. 왜냐하면 나는 이것을 준비하는 데 많은 시간을 들였기 때문이다.어쨌든 나는 네가 여기에 있다는 것에 매우 감격한다.오늘 하루 즐겁게 보내세요.



트위터에서 나를 향해 큰 소리로 외쳤다.

좋은 웹페이지 즐겨찾기