|
13 | 13 | function releaseToRegion { |
14 | 14 | version=$1 |
15 | 15 | region=$2 |
16 | | - layer=$3 |
17 | 16 | bucket="aws-lambda-r-runtime.$region" |
18 | | - resource="R-$version/$layer-$version.zip" |
19 | | - layer_name="r-$layer-$version" |
20 | | - layer_name="${layer_name//\./_}" |
21 | | - echo "publishing layer $layer_name to region $region" |
22 | | - aws s3 cp ${layer}/build/dist/${layer}-${version}.zip s3://${bucket}/${resource} --region ${region} |
23 | | - response=$(aws lambda publish-layer-version \ |
24 | | - --layer-name ${layer_name} \ |
25 | | - --content S3Bucket=${bucket},S3Key=${resource} \ |
26 | | - --license-info MIT \ |
27 | | - --region ${region}) |
28 | | - version_number=$(jq -r '.Version' <<< "$response") |
29 | | - aws lambda add-layer-version-permission \ |
30 | | - --layer-name ${layer_name} \ |
31 | | - --version-number ${version_number} \ |
32 | | - --principal "*" \ |
33 | | - --statement-id publish \ |
34 | | - --action lambda:GetLayerVersion \ |
| 17 | + echo "publishing layers to region $region" |
| 18 | + sam package \ |
| 19 | + --output-template-file packaged.yaml \ |
| 20 | + --s3-bucket ${bucket} \ |
35 | 21 | --region ${region} |
36 | | - layer_arn=$(jq -r '.LayerVersionArn' <<< "$response") |
37 | | - echo "published layer $layer_arn" |
| 22 | + version_="${version//\./_}" |
| 23 | + stack_name=r-${version//\./-} |
| 24 | + sam deploy \ |
| 25 | + --template-file packaged.yaml \ |
| 26 | + --stack-name ${stack_name} \ |
| 27 | + --parameter-overrides Version=${version_} \ |
| 28 | + --no-fail-on-empty-changeset \ |
| 29 | + --region ${region} |
| 30 | + layers=(runtime recommended awspack) |
| 31 | + for layer in "${layers[@]}" |
| 32 | + do |
| 33 | + layer_output=${layer}Layer |
| 34 | + layer_arn=$(aws cloudformation describe-stacks \ |
| 35 | + --stack-name ${stack_name} \ |
| 36 | + --query "Stacks[0].Outputs[?OutputKey=='$layer_output'].OutputValue" \ |
| 37 | + --output text \ |
| 38 | + --region ${region}) |
| 39 | + layer_name=${layer_arn%:*} |
| 40 | + version_number=${layer_arn##*:} |
| 41 | + aws lambda add-layer-version-permission \ |
| 42 | + --layer-name ${layer_name} \ |
| 43 | + --version-number ${version_number} \ |
| 44 | + --principal "*" \ |
| 45 | + --statement-id publish \ |
| 46 | + --action lambda:GetLayerVersion \ |
| 47 | + --region ${region} |
| 48 | + echo "published layer $layer_arn" |
| 49 | + done |
38 | 50 | } |
39 | 51 |
|
40 | | -regions=(us-east-1 us-east-2 |
41 | | - us-west-1 us-west-2 |
42 | | - ap-south-1 |
43 | | - ap-northeast-1 ap-northeast-2 |
44 | | - ap-southeast-1 ap-southeast-2 |
45 | | - ca-central-1 |
46 | | - eu-central-1 |
47 | | - eu-north-1 |
48 | | - eu-west-1 eu-west-2 eu-west-3 |
49 | | - sa-east-1) |
| 52 | +regions=( |
| 53 | + us-east-1 us-east-2 |
| 54 | + us-west-1 us-west-2 |
| 55 | + ap-south-1 |
| 56 | + ap-northeast-1 ap-northeast-2 |
| 57 | + ap-southeast-1 ap-southeast-2 |
| 58 | + ca-central-1 |
| 59 | + eu-central-1 |
| 60 | + eu-north-1 |
| 61 | + eu-west-1 eu-west-2 eu-west-3 |
| 62 | + sa-east-1 |
| 63 | + ) |
50 | 64 |
|
51 | | -layers=(runtime recommended awspack) |
52 | | - |
53 | | -for layer in "${layers[@]}" |
| 65 | +for region in "${regions[@]}" |
54 | 66 | do |
55 | | - for region in "${regions[@]}" |
56 | | - do |
57 | | - releaseToRegion ${VERSION} ${region} ${layer} |
58 | | - done |
| 67 | + releaseToRegion ${VERSION} ${region} |
59 | 68 | done |
0 commit comments