LoginSignup
9
4

More than 3 years have passed since last update.

CloudFormationでLambda@Edgeをデプロイする

Posted at

CloudFront + S3 + Jekyllで運用していたブログをHugoに載せ替えた際、ディレクトリインデックスを効かせないといけなかったのでCloudFormationの修正をした。

最大のつまずきポイントはCloudFrontからLambdaを指定方法。
LambdaのArnを指定すれば良いのかと思いきやバージョンも指定せよとのこと。

いちいちバージョンを手動で設定もしていられない…と思っていたらこちらの方法で解決。

AWS CloudFront Lambda@Edge の罠たち | d.sunnyone.org
serverless-application-model/examples/2016-10-31/lambda_edge at master · awslabs/serverless-application-model

まずLambdaをAWS::Lambda::FunctionではなくAWS::Serverless::Functionとして定義し、AutoPublishAliasを設定する。
そうすることでCloudFrontのLambdaFunctionARN!Ref (リソース名).VersionとしてLambdaを指定することができるようになる。

Lambda定義
  StgLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      AutoPublishAlias: stg
CloudFront定義
          LambdaFunctionAssociations:
            - EventType: origin-request
              LambdaFunctionARN: !Ref StgLambdaFunction.Version

またAWS::Serverless::Functionを使う場合はファイル先頭にTransform: 'AWS::Serverless-2016-10-31'が必要なことに注意。

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4