Share

Xでシェア
LINEでシェア

Lambda@Edge の関数をアップデートしたときに CloudFront に指定されている関数のバージョンを自動更新する

CloudFront では、ビューワーリクエストなどのイベントが発火したときに Lambda 関数を実行する機能 “Lambda@Edge” があります。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-edge.html

ところがこれ意外とめんどくさくて、Lambda 関数を CloudFront で設定するときに、どのバージョンの関数を使用するかを数字で指定する必要があります。

The function ARN must reference a specific function version. (The ARN must end with the version number.)

なので、Lambda 関数の新バージョンをリリースするたびにぽちぽちバージョン番号を変えないといけないんですよね。め、めんどくさい。。。w

バージョン番号を自動的にアップデートするシェルスクリプトを作った

そんなわけで、AWS CLI を連打して Lambda の最新バージョンを取得して、CloudFront の設定を更新するシェルスクリプトをつくりました。

#!/usr/bin/env bash

# set -ex

CF_DIST=E20XXXXXXXXX
LAMBDA_EDGE_FUNCTION="arn:aws:lambda:us-east-1:xxxx:function:xxxx"

CONFIG=`aws cloudfront get-distribution-config --id $CF_DIST | jq '.DistributionConfig'`

ETAG=`aws cloudfront get-distribution-config --id $CF_DIST | jq -r '.ETag'`
VERSION=`aws lambda list-versions-by-function --function-name $LAMBDA_EDGE_FUNCTION --region us-east-1 | jq -r '.Versions[-1].Version'`

echo $CONFIG | jq ".DefaultCacheBehavior.LambdaFunctionAssociations.Items[0].LambdaFunctionARN = \"$LAMBDA_EDGE_FUNCTION:$VERSION\"" > update.json

aws cloudfront update-distribution --id $CF_DIST --distribution-config file://update.json --if-match $ETAG

aws cloudfront create-invalidation --distribution-id $CF_DIST --paths "/*"

`CF_DIST` に CloudFront のディストリビューション ID を、`LAMBDA_EDGE_FUNCTION` に Lambda の ARN を指定してコマンドを実行すると、最新版のバージョンを取得して自動的にセットします。

私たちのサービス

100万人の顧客一人ひとりと向き合えるAIマーケティング。

WordPressを、もっと快適に。もっと安全に。

採用の痛みからの解放。採用戦略から運用まで伴走します。

困ってることの正体、一緒に探します。

30分無料相談

オンライン

お気軽にオンラインでご相談ください。Webサイトやマーケティングのお悩みに対応します。

吉川 敦文

吉川 敦文

代表

高橋 文樹

高橋 文樹

CTO

ギブス

ギブス

Wizard 責任者

池田 秀貴

池田 秀貴

Webディレクター

お問い合わせ

ご質問やお見積もりのご依頼など、お気軽にお問い合わせください。