gpt4 book ai didi

amazon-web-services - 如何使用 cli 更新 cloudfront 发行版中的 lambda@edge arn

转载 作者:行者123 更新时间:2023-12-04 16:26:40 25 4
gpt4 key购买 nike

我想使用 CLI 使用最新的 lambda@edge 函数更新 cloudfront 发行版。
我看到了这个文档 https://docs.aws.amazon.com/cli/latest/reference/cloudfront/update-distribution.html
但无法弄清楚如何仅更新 lambda arn。
有人可以帮忙吗

最佳答案

这是脚本,正是这样做的。它是基于@cloudbud 答案实现的。没有参数检查。它会像这样执行:./script QF234ASD342FG my-lambda-at-edge-function us-east-1 .就我而言,执行时间不到 10 秒。见 update-distribution详情。

#!/bin/bash

set -xeuo pipefail
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

distribution_id="$1"
function_name="$2"
region="$3"

readonly lambda_arn=$(
aws lambda list-versions-by-function \
--function-name "$function_name" \
--region "$region" \
--query "max_by(Versions, &to_number(to_number(Version) || '0'))" \
| jq -r '.FunctionArn'
)

readonly tmp1=$(mktemp)
readonly tmp2=$(mktemp)

aws cloudfront get-distribution-config \
--id "$distribution_id" \
> "$tmp1"

readonly etag=$(jq -r '.ETag' < "$tmp1")

cat "$tmp1" \
| jq '(.DistributionConfig.CacheBehaviors.Items[] | select(.PathPattern=="dist/sxf/*") | .LambdaFunctionAssociations.Items[] | select(.EventType=="origin-request") | .LambdaFunctionARN ) |= "'"$lambda_arn"'"' \
| jq '.DistributionConfig' \
> "$tmp2"

# the dist config has to be in the file
# and be referred in specific way.
aws cloudfront update-distribution \
--id "$distribution_id" \
--distribution-config "file://$tmp2" \
--if-match "$etag"

rm -f "$tmp1" "$tmp2"

关于amazon-web-services - 如何使用 cli 更新 cloudfront 发行版中的 lambda@edge arn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62655805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com