-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathpublish.sh
executable file
·127 lines (112 loc) · 3.96 KB
/
publish.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/bin/bash
set -x
artifact_dir=~/artifacts/linux
for arch in x86_64 arm64; do
if [ ! -f "${artifact_dir}/extension-${arch}.zip" ]; then
echo "${arch} extension does not exist, cannot publish."
exit 1;
fi
done
VERSION="${CIRCLE_TAG:-$(make version)}"
# lambda layer names must match a regex: [a-zA-Z0-9-_]+)|[a-zA-Z0-9-_]+
# turn periods into dashes and cry into your coffee
VERSION=$(echo ${VERSION} | tr '.' '-')
EXTENSION_NAME="honeycomb-lambda-extension"
# Region list update from AWS Lambda pricing page as of 2023/02/27
# Commented out lines are listed on available but require opt-in before we can publish to it.
#
# regions with x86_64 only support
REGIONS_NO_ARM=(
ap-southeast-4
eu-central-2
eu-south-2
me-central-1
)
# Regions with x86_64 & arm64
REGIONS_WITH_ARM=(
af-south-1
ap-east-1
ap-northeast-1
ap-northeast-2
ap-northeast-3
ap-south-1
ap-southeast-1
ap-southeast-2
ap-southeast-3
ca-central-1
eu-central-1
eu-north-1
eu-south-1
eu-west-1
eu-west-2
eu-west-3
me-south-1
sa-east-1
us-east-1
us-east-2
us-west-1
us-west-2
)
results_dir="publishing"
mkdir -p ${results_dir}
### x86_64 ###
layer_name_x86_64="${EXTENSION_NAME}-x86_64-${VERSION}"
for region in ${REGIONS_WITH_ARM[@]}; do
id="x86_64-${region}"
publish_results_json="${results_dir}/publish-${id}.json"
permit_results_json="${results_dir}/permit-${id}.json"
aws lambda publish-layer-version \
--layer-name $layer_name_x86_64 \
--compatible-architectures x86_64 \
--region $region \
--zip-file "fileb://${artifact_dir}/extension-x86_64.zip" \
--no-cli-pager \
> "${publish_results_json}"
layer_version=`jq -r '.Version' ${publish_results_json}`
aws --region $region lambda add-layer-version-permission --layer-name $layer_name_x86_64 \
--version-number $layer_version --statement-id "$EXTENSION_NAME-x86_64-$layer_version-$region" \
--principal "*" --action lambda:GetLayerVersion --no-cli-pager \
> "${permit_results_json}"
done
for region in ${REGIONS_NO_ARM[@]}; do
id="x86_64-${region}"
publish_results_json="${results_dir}/publish-${id}.json"
permit_results_json="${results_dir}/permit-${id}.json"
aws lambda publish-layer-version \
--layer-name $layer_name_x86_64 \
--region $region \
--zip-file "fileb://${artifact_dir}/extension-x86_64.zip" \
--no-cli-pager \
> "${publish_results_json}"
layer_version=`jq -r '.Version' ${publish_results_json}`
aws --region $region lambda add-layer-version-permission --layer-name $layer_name_x86_64 \
--version-number $layer_version --statement-id "$EXTENSION_NAME-x86_64-$layer_version-$region" \
--principal "*" --action lambda:GetLayerVersion --no-cli-pager \
> "${permit_results_json}"
done
### arm64 ###
layer_name_arm64="${EXTENSION_NAME}-arm64-${VERSION}"
for region in ${REGIONS_WITH_ARM[@]}; do
id="arm64-${region}"
publish_results_json="${results_dir}/publish-${id}.json"
permit_results_json="${results_dir}/permit-${id}.json"
aws lambda publish-layer-version \
--layer-name $layer_name_arm64 \
--compatible-architectures arm64 \
--region $region \
--zip-file "fileb://${artifact_dir}/extension-arm64.zip" \
--no-cli-pager \
> "${publish_results_json}"
layer_version=`jq -r '.Version' ${publish_results_json}`
aws --region $region lambda add-layer-version-permission --layer-name $layer_name_arm64 \
--version-number $layer_version --statement-id "$EXTENSION_NAME-arm64-$layer_version-$region" \
--principal "*" --action lambda:GetLayerVersion --no-cli-pager \
> "${permit_results_json}"
done
echo ""
echo "Published Layer Versions:"
echo ""
jq '{ region: (.LayerArn | split(":")[3]),
arch: (.LayerArn | split(":")[6] | split("-")[3]),
arn: .LayerVersionArn
}' publishing/publish-*.json