Skip to content

Commit 52b1554

Browse files
authored
chore(ci): add support for x86-64 regions only (#2122)
1 parent a76a554 commit 52b1554

File tree

6 files changed

+303
-157
lines changed

6 files changed

+303
-157
lines changed

Diff for: .github/workflows/reusable_deploy_v2_layer_stack.yml

+59-27
Original file line numberDiff line numberDiff line change
@@ -34,31 +34,63 @@ jobs:
3434
strategy:
3535
fail-fast: false
3636
matrix:
37-
region:
38-
[
39-
"af-south-1",
40-
"eu-central-1",
41-
"us-east-1",
42-
"us-east-2",
43-
"us-west-1",
44-
"us-west-2",
45-
"ap-east-1",
46-
"ap-south-1",
47-
"ap-northeast-1",
48-
"ap-northeast-2",
49-
"ap-southeast-1",
50-
"ap-southeast-2",
51-
"ca-central-1",
52-
"eu-west-1",
53-
"eu-west-2",
54-
"eu-west-3",
55-
"eu-south-1",
56-
"eu-north-1",
57-
"sa-east-1",
58-
"ap-southeast-3",
59-
"ap-northeast-3",
60-
"me-south-1",
61-
]
37+
# To get a list of current regions, use:
38+
# aws ec2 describe-regions --all-regions --query "Regions[].RegionName" --output text | tr "\t" "\n" | sort
39+
include:
40+
- region: "af-south-1"
41+
has_arm64_support: "true"
42+
- region: "ap-east-1"
43+
has_arm64_support: "true"
44+
- region: "ap-northeast-1"
45+
has_arm64_support: "true"
46+
- region: "ap-northeast-2"
47+
has_arm64_support: "true"
48+
- region: "ap-northeast-3"
49+
has_arm64_support: "true"
50+
- region: "ap-south-1"
51+
has_arm64_support: "true"
52+
- region: "ap-south-2"
53+
has_arm64_support: "false"
54+
- region: "ap-southeast-1"
55+
has_arm64_support: "true"
56+
- region: "ap-southeast-2"
57+
has_arm64_support: "true"
58+
- region: "ap-southeast-3"
59+
has_arm64_support: "true"
60+
- region: "ap-southeast-4"
61+
has_arm64_support: "false"
62+
- region: "ca-central-1"
63+
has_arm64_support: "true"
64+
- region: "eu-central-1"
65+
has_arm64_support: "true"
66+
- region: "eu-central-2"
67+
has_arm64_support: "false"
68+
- region: "eu-north-1"
69+
has_arm64_support: "true"
70+
- region: "eu-south-1"
71+
has_arm64_support: "true"
72+
- region: "eu-south-2"
73+
has_arm64_support: "false"
74+
- region: "eu-west-1"
75+
has_arm64_support: "true"
76+
- region: "eu-west-2"
77+
has_arm64_support: "true"
78+
- region: "eu-west-3"
79+
has_arm64_support: "true"
80+
- region: "me-central-1"
81+
has_arm64_support: "false"
82+
- region: "me-south-1"
83+
has_arm64_support: "true"
84+
- region: "sa-east-1"
85+
has_arm64_support: "true"
86+
- region: "us-east-1"
87+
has_arm64_support: "true"
88+
- region: "us-east-2"
89+
has_arm64_support: "true"
90+
- region: "us-west-1"
91+
has_arm64_support: "true"
92+
- region: "us-west-2"
93+
has_arm64_support: "true"
6294
steps:
6395
- name: checkout
6496
uses: actions/checkout@v3
@@ -99,7 +131,7 @@ jobs:
99131
- name: unzip artefact
100132
run: unzip cdk.out.zip
101133
- name: CDK Deploy Layer
102-
run: npx cdk deploy --app cdk.out --context region=${{ matrix.region }} 'LayerV2Stack' --require-approval never --verbose --outputs-file cdk-outputs.json
134+
run: npx cdk deploy --app cdk.out --context region=${{ matrix.region }} --parameters HasARM64Support=${{ matrix.has_arm64_support }} 'LayerV2Stack' --require-approval never --verbose --outputs-file cdk-outputs.json
103135
- name: Store latest Layer ARN
104136
if: ${{ inputs.stage == 'PROD' }}
105137
run: |
@@ -116,7 +148,7 @@ jobs:
116148
if-no-files-found: error
117149
retention-days: 1
118150
- name: CDK Deploy Canary
119-
run: npx cdk deploy --app cdk.out --context region=${{ matrix.region}} --parameters DeployStage="${{ inputs.stage }}" 'CanaryV2Stack' --require-approval never --verbose
151+
run: npx cdk deploy --app cdk.out --context region=${{ matrix.region }} --parameters DeployStage="${{ inputs.stage }}" --parameters HasARM64Support=${{ matrix.has_arm64_support }} 'CanaryV2Stack' --require-approval never --verbose
120152

121153
update_v2_layer_arn_docs:
122154
needs: deploy-cdk-stack

Diff for: layer/app.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
app,
2222
"LayerV2Stack",
2323
powertools_version=POWERTOOLS_VERSION,
24-
ssm_paramter_layer_arn=SSM_PARAM_LAYER_ARN,
24+
ssm_parameter_layer_arn=SSM_PARAM_LAYER_ARN,
2525
ssm_parameter_layer_arm64_arn=SSM_PARAM_LAYER_ARM64_ARN,
2626
)
2727

Diff for: layer/layer/canary_stack.py

+46-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,24 @@
11
import uuid
22

3-
from aws_cdk import CfnParameter, CustomResource, Duration, Stack
4-
from aws_cdk.aws_iam import Effect, ManagedPolicy, PolicyStatement, Role, ServicePrincipal
3+
import jsii
4+
from aws_cdk import (
5+
Aspects,
6+
CfnCondition,
7+
CfnParameter,
8+
CfnResource,
9+
CustomResource,
10+
Duration,
11+
Fn,
12+
IAspect,
13+
Stack,
14+
)
15+
from aws_cdk.aws_iam import (
16+
Effect,
17+
ManagedPolicy,
18+
PolicyStatement,
19+
Role,
20+
ServicePrincipal,
21+
)
522
from aws_cdk.aws_lambda import Architecture, Code, Function, LayerVersion, Runtime
623
from aws_cdk.aws_logs import RetentionDays
724
from aws_cdk.aws_ssm import StringParameter
@@ -13,6 +30,16 @@
1330
)
1431

1532

33+
@jsii.implements(IAspect)
34+
class ApplyCondition:
35+
def __init__(self, condition: CfnCondition):
36+
self.condition = condition
37+
38+
def visit(self, node):
39+
if isinstance(node, CfnResource):
40+
node.cfn_options.condition = self.condition
41+
42+
1643
class CanaryStack(Stack):
1744
def __init__(
1845
self,
@@ -29,6 +56,20 @@ def __init__(
2956
self, "DeployStage", description="Deployment stage for canary"
3057
).value_as_string
3158

59+
has_arm64_support = CfnParameter(
60+
self,
61+
"HasARM64Support",
62+
description="Has ARM64 Support Condition",
63+
type="String",
64+
allowed_values=["true", "false"],
65+
)
66+
67+
has_arm64_condition = CfnCondition(
68+
self,
69+
"HasARM64SupportCondition",
70+
expression=Fn.condition_equals(has_arm64_support, "true"),
71+
)
72+
3273
layer_arn = StringParameter.from_string_parameter_attributes(
3374
self, "LayerVersionArnParam", parameter_name=ssm_paramter_layer_arn
3475
).string_value
@@ -46,14 +87,16 @@ def __init__(
4687
"LayerArm64VersionArnParam",
4788
parameter_name=ssm_parameter_layer_arm64_arn,
4889
).string_value
49-
Canary(
90+
91+
arm64_canary = Canary(
5092
self,
5193
"Canary-arm64",
5294
layer_arn=layer_arm64_arn,
5395
powertools_version=powertools_version,
5496
architecture=Architecture.ARM_64,
5597
stage=deploy_stage,
5698
)
99+
Aspects.of(arm64_canary).add(ApplyCondition(has_arm64_condition))
57100

58101

59102
class Canary(Construct):

0 commit comments

Comments
 (0)