サーバなしマルチゾーン設定(lambda@Edge region)


関数は、1つのライブラリで異なるバージョンで配布する必要があります.以前ソウルに配備されていた関数があったので、最初はSeverlessでした.ymlで2つのバージョンを設定する方法が見つかりました.Severless自体が提供するマルチゾーンプラグインを見つけて試した結果、CloudFormationを別途設定する必要があることがわかりました.しかしcloudFormationのない予め作成されたcloudFrontを使うので、別の方法を探しました.しかし、2~3日で適切な方法が見つからず、導入にはsls deployが必要であり、事前に登録された関数に影響を及ぼしています.(CloudFrontでステータスをupdate failedに変更...)そこで,以下に示すように,指定関数のみを配布する方法を見つけた.sls deploy -f functionname
しかし、これを行うにはsls deployを先に行わなければなりません.では.
Error: Unable to setup base domain mappings for 'serverless-api.thedatahunt.com':
Unable to create base path mapping for 'serverless-api.thedatahunt.com':
ApiMapping key already exists for this domain name
似たようなエラーが発生したり、上記のようなcloudFront状態が変更されたりしたため、適切ではありません.そこで、このエラーを解決するために、グーグル検索をしている間に...
How to deploy a single function without deploying other functions on the api using serverless framework
関連書類を見つけて、ここで答えを見つけました.

各関数に対して個別です.yamlファイルを作成して使用すると、既存の関数に影響を及ぼさずに配置できます.
ここで注意したいのは、sls deployはデバッガであり、serverless.ymlファイルを参照して配置するため、sls deploy --config <yml파일 경로>を指定して配置することです.
私.lambda@Edge新しいymlファイルが作成されたため、ファイル名はserverless-edgeです.ymlとして指定します.
したがってsls create_domain --config serverless-edge.yml sls deploy --config serverless-edge.yml先に作ってください.sls deploy -f 함수이름 --config serverless-edge.ymlこのようにすれば、問題なく配布することができます.
配備期間
Error:
Error: Unable to create domain 'serverless-api.thedatahunt.com':
Failed to create custom domain 'serverless-api.thedatahunt.com':
Invalid certificate ARN: arn:aws:acm:ap-northeast-... Certificate must be in 'us-east-1'.
...
これらのエラーが発生し、検索するとus-east-1とap-東北-2は別の証明書Arn、すなわち地域のarnを使用する必要があるため、us-east-1のarnキーに変更されました.
son-yeonju@MacBook-Pro-4 datahunt-serverless-api %  sls deploy --config serverless-edge.yml      
Deploying ...-resize-thumbnail to stage prod (us-east-1)
SERVERLESS-IGNORE: Loaded .slsignore
         - *.log
         - .env
         - .git/*
         - __tests__/*
Compiling with Typescript...
Using local tsconfig.json - tsconfig.json
Typescript compiled.

✔ Service deployed to stack datahunt-resize-thumbnail-prod (158s)

endpoint: GET - https://...
functions:
  resizingThumbnail: ... (21 MB)
Serverless Domain Manager:
  Domain Name: s...
  Target Domain: ...us-east-1.amazonaws.com
  Hosted Zone Id: Z...
最終的にap-東北-2領域に正常に配置され、配置された関数はServer lessです.ymlでは、us-east-1はserverless-edgeです.yml管理に設定します.

注意点

  • us-east-1(米国バージニア州)とap-東北-2(ソウル)arnkieは異なる必要があります
  • lambda@Edge環境変数は使用できません.
  • lambda Edgeはus-east-1に配備する必要があります.