Skip to content

Commit 618613b

Browse files
author
Alexander Schueren
authored
feat(layers): add new regions (#1322)
* add new regions * fix husky pre push command * add new layer regions and versions * small fix * add documentation to readme how to add new region
1 parent bb50c04 commit 618613b

File tree

4 files changed

+66
-35
lines changed

4 files changed

+66
-35
lines changed

Diff for: .github/workflows/reusable_deploy_layer_stack.yml

+5-2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ jobs:
2727
[
2828
"af-south-1",
2929
"eu-central-1",
30+
"eu-central-2",
3031
"us-east-1",
3132
"us-east-2",
3233
"us-west-1",
@@ -35,17 +36,19 @@ jobs:
3536
"ap-south-1",
3637
"ap-northeast-1",
3738
"ap-northeast-2",
39+
"ap-northeast-3",
3840
"ap-southeast-1",
3941
"ap-southeast-2",
42+
"ap-southeast-3",
43+
"ap-southeast-4",
4044
"ca-central-1",
4145
"eu-west-1",
4246
"eu-west-2",
4347
"eu-west-3",
4448
"eu-south-1",
49+
"eu-south-2"
4550
"eu-north-1",
4651
"sa-east-1",
47-
"ap-southeast-3",
48-
"ap-northeast-3",
4952
"me-south-1",
5053
]
5154
steps:

Diff for: .husky/pre-push

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
. "$(dirname "$0")/_/husky.sh"
33

44
npm t \
5-
-w packages/commons && \
6-
-w packages/logger && \
7-
-w packages/metrics && \
8-
-w packages/tracer && \
9-
-w packages/idempotency && \
5+
-w packages/commons \
6+
-w packages/logger \
7+
-w packages/metrics \
8+
-w packages/tracer \
9+
-w packages/idempotency \
1010
-w packages/parameters

Diff for: docs/index.md

+35-27
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ You can use Powertools in both TypeScript and JavaScript code bases.
2626

2727
Powertools is available in the following formats:
2828

29-
* **Lambda Layer**: [**arn:aws:lambda:{region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:7**](#){: .copyMe}:clipboard:
29+
* **Lambda Layer**: [**arn:aws:lambda:{region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:8**](#){: .copyMe}:clipboard:
3030
* **npm**: **`npm install @aws-lambda-powertools/tracer @aws-lambda-powertools/metrics @aws-lambda-powertools/logger`**
3131

3232
### Lambda Layer
@@ -37,25 +37,33 @@ You can include Lambda Powertools Lambda Layer using [AWS Lambda Console](https:
3737

3838
??? note "Note: Click to expand and copy any regional Lambda Layer ARN"
3939

40-
| Region | Layer ARN |
40+
| Region | Layer ARN |
4141
| ---------------- | ----------------------------------------------------------------------------------------------------------- |
42-
| `us-east-1` | [arn:aws:lambda:us-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
43-
| `us-east-2` | [arn:aws:lambda:us-east-2:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
44-
| `us-west-1` | [arn:aws:lambda:us-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
45-
| `us-west-2` | [arn:aws:lambda:us-west-2:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
46-
| `ap-south-1` | [arn:aws:lambda:ap-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
47-
| `ap-northeast-1` | [arn:aws:lambda:ap-northeast-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
48-
| `ap-northeast-2` | [arn:aws:lambda:ap-northeast-2:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
49-
| `ap-northeast-3` | [arn:aws:lambda:ap-northeast-3:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
50-
| `ap-southeast-1` | [arn:aws:lambda:ap-southeast-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
51-
| `ap-southeast-2` | [arn:aws:lambda:ap-southeast-2:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
52-
| `eu-central-1` | [arn:aws:lambda:eu-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
53-
| `eu-west-1` | [arn:aws:lambda:eu-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
54-
| `eu-west-2` | [arn:aws:lambda:eu-west-2:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
55-
| `eu-west-3` | [arn:aws:lambda:eu-west-3:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
56-
| `eu-north-1` | [arn:aws:lambda:eu-north-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
57-
| `ca-central-1` | [arn:aws:lambda:ca-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
58-
| `sa-east-1` | [arn:aws:lambda:sa-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:7](#){: .copyMe}:clipboard: |
42+
| `us-east-1` | [arn:aws:lambda:us-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
43+
| `us-east-2` | [arn:aws:lambda:us-east-2:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
44+
| `us-west-1` | [arn:aws:lambda:us-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
45+
| `us-west-2` | [arn:aws:lambda:us-west-2:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
46+
| `ap-south-1` | [arn:aws:lambda:ap-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
47+
| `ap-east-1` | [arn:aws:lambda:ap-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
48+
| `ap-northeast-1` | [arn:aws:lambda:ap-northeast-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
49+
| `ap-northeast-2` | [arn:aws:lambda:ap-northeast-2:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
50+
| `ap-northeast-3` | [arn:aws:lambda:ap-northeast-3:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
51+
| `ap-southeast-1` | [arn:aws:lambda:ap-southeast-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
52+
| `ap-southeast-2` | [arn:aws:lambda:ap-southeast-2:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
53+
| `ap-southeast-3` | [arn:aws:lambda:ap-southeast-3:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
54+
| `ap-southeast-4` | [arn:aws:lambda:ap-southeast-4:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
55+
| `eu-central-1` | [arn:aws:lambda:eu-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
56+
| `eu-central-2` | [arn:aws:lambda:eu-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
57+
| `eu-west-1` | [arn:aws:lambda:eu-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
58+
| `eu-west-2` | [arn:aws:lambda:eu-west-2:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
59+
| `eu-west-3` | [arn:aws:lambda:eu-west-3:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
60+
| `eu-north-1` | [arn:aws:lambda:eu-north-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
61+
| `eu-south-1` | [arn:aws:lambda:eu-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
62+
| `eu-south-2` | [arn:aws:lambda:eu-south-2:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
63+
| `ca-central-1` | [arn:aws:lambda:ca-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
64+
| `sa-east-1` | [arn:aws:lambda:sa-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
65+
| `af-south-1` | [arn:aws:lambda:af-south-11:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
66+
| `me-south-1` | [arn:aws:lambda:me-south-11:094274105915:layer:AWSLambdaPowertoolsTypeScript:8](#){: .copyMe}:clipboard: |
5967

6068
??? note "Note: Click to expand and copy code snippets for popular frameworks"
6169

@@ -66,7 +74,7 @@ You can include Lambda Powertools Lambda Layer using [AWS Lambda Console](https:
6674
Type: AWS::Serverless::Function
6775
Properties:
6876
Layers:
69-
- !Sub arn:aws:lambda:${AWS::Region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:7
77+
- !Sub arn:aws:lambda:${AWS::Region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:8
7078
```
7179

7280
If you use `esbuild` to bundle your code, make sure to exclude `@aws-lambda-powertools` from being bundled since the packages will be already present the Layer:
@@ -97,7 +105,7 @@ You can include Lambda Powertools Lambda Layer using [AWS Lambda Console](https:
97105
hello:
98106
handler: lambda_function.lambda_handler
99107
layers:
100-
- arn:aws:lambda:${aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:7
108+
- arn:aws:lambda:${aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:8
101109
```
102110

103111
If you use `esbuild` to bundle your code, make sure to exclude `@aws-lambda-powertools` from being bundled since the packages will be already present the Layer:
@@ -129,7 +137,7 @@ You can include Lambda Powertools Lambda Layer using [AWS Lambda Console](https:
129137
const powertoolsLayer = lambda.LayerVersion.fromLayerVersionArn(
130138
this,
131139
'PowertoolsLayer',
132-
`arn:aws:lambda:${cdk.Stack.of(this).region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:7`
140+
`arn:aws:lambda:${cdk.Stack.of(this).region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:8`
133141
);
134142
135143
new lambda.Function(this, 'Function', {
@@ -181,7 +189,7 @@ You can include Lambda Powertools Lambda Layer using [AWS Lambda Console](https:
181189
role = ...
182190
handler = "index.handler"
183191
runtime = "nodejs16.x"
184-
layers = ["arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:7"]
192+
layers = ["arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:8"]
185193
source_code_hash = filebase64sha256("lambda_function_payload.zip")
186194
}
187195
```
@@ -199,7 +207,7 @@ You can include Lambda Powertools Lambda Layer using [AWS Lambda Console](https:
199207

200208
const lambdaFunction = new aws.lambda.Function("function", {
201209
layers: [
202-
pulumi.interpolate`arn:aws:lambda:${aws.getRegionOutput().name}:094274105915:layer:AWSLambdaPowertoolsTypeScript:7`
210+
pulumi.interpolate`arn:aws:lambda:${aws.getRegionOutput().name}:094274105915:layer:AWSLambdaPowertoolsTypeScript:8`
203211
],
204212
code: new pulumi.asset.FileArchive("lambda_function_payload.zip"),
205213
tracingConfig: {
@@ -223,7 +231,7 @@ You can include Lambda Powertools Lambda Layer using [AWS Lambda Console](https:
223231
? Do you want to configure advanced settings? Yes
224232
...
225233
? Do you want to enable Lambda layers for this function? Yes
226-
? Enter up to 5 existing Lambda layer ARNs (comma-separated): arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:7
234+
? Enter up to 5 existing Lambda layer ARNs (comma-separated): arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:8
227235
❯ amplify push -y
228236
229237
# Updating an existing function and add the layer
@@ -233,13 +241,13 @@ You can include Lambda Powertools Lambda Layer using [AWS Lambda Console](https:
233241
- Name: <NAME-OF-FUNCTION>
234242
? Which setting do you want to update? Lambda layers configuration
235243
? Do you want to enable Lambda layers for this function? Yes
236-
? Enter up to 5 existing Lambda layer ARNs (comma-separated): arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:7
244+
? Enter up to 5 existing Lambda layer ARNs (comma-separated): arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:8
237245
? Do you want to edit the local lambda function now? No
238246
```
239247

240248
=== "Get the Layer .zip contents"
241249
```bash title="AWS CLI"
242-
aws lambda get-layer-version-by-arn --arn arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:7 --region {region}
250+
aws lambda get-layer-version-by-arn --arn arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:8 --region {region}
243251
```
244252

245253
The pre-signed URL to download this Lambda Layer will be within `Location` key.

Diff for: layers/README.md

+21-1
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,24 @@ PS: You can force
3535
* the Powertools version with VERSION env variable
3636
```sh
3737
RUNTIME=node12.x VERSION=0.9.0 npm run test:e2e
38-
```
38+
```
39+
40+
41+
# How to add new region
42+
43+
* activate new region in your TEST and PROD accounts
44+
* bootstrap a CDKToolkit stack in the new region
45+
```shell
46+
cdk bootstrap aws://AWS_ACCOUNT/NEW_REGION
47+
```
48+
* build the layer folder from the project root directory
49+
```shell
50+
bash ./.github/scripts/setup_tmp_layer_files.sh
51+
```
52+
* deploy the first layer version to the new region, make sure to set the NEW_REGION in your AWS CLI configuration correctly, otherwise you will deploy to the wrong region
53+
```shell
54+
npm run cdk -w layers -- deploy --app cdk.out --context region=NEW_REGION 'LayerPublisherStack' --require-approval never --verbose
55+
```
56+
* Run the bumper script to bring all layers to the same version across all regions
57+
* Add new region to the worklflow in `./github/workflows/reusable_deploy_layer_stack.yml`
58+
* Document new region in `docs/index.md`

0 commit comments

Comments
 (0)