Skip to content

Commit afe65fd

Browse files
committed
chore(ci): add support for x86-64 regions only
1 parent 79b5d99 commit afe65fd

File tree

6 files changed

+304
-158
lines changed

6 files changed

+304
-158
lines changed

Diff for: .github/workflows/reusable_deploy_v2_layer_stack.yml

+59-27
Original file line numberDiff line numberDiff line change
@@ -37,31 +37,63 @@ jobs:
3737
strategy:
3838
fail-fast: false
3939
matrix:
40-
region:
41-
[
42-
"af-south-1",
43-
"eu-central-1",
44-
"us-east-1",
45-
"us-east-2",
46-
"us-west-1",
47-
"us-west-2",
48-
"ap-east-1",
49-
"ap-south-1",
50-
"ap-northeast-1",
51-
"ap-northeast-2",
52-
"ap-southeast-1",
53-
"ap-southeast-2",
54-
"ca-central-1",
55-
"eu-west-1",
56-
"eu-west-2",
57-
"eu-west-3",
58-
"eu-south-1",
59-
"eu-north-1",
60-
"sa-east-1",
61-
"ap-southeast-3",
62-
"ap-northeast-3",
63-
"me-south-1",
64-
]
40+
# To get a list of current regions, use:
41+
# aws ec2 describe-regions --all-regions --query "Regions[].RegionName" --output text | tr "\t" "\n" | sort
42+
include:
43+
- region: "af-south-1"
44+
has_arm64_support: "true"
45+
- region: "ap-east-1"
46+
has_arm64_support: "true"
47+
- region: "ap-northeast-1"
48+
has_arm64_support: "true"
49+
- region: "ap-northeast-2"
50+
has_arm64_support: "true"
51+
- region: "ap-northeast-3"
52+
has_arm64_support: "true"
53+
- region: "ap-south-1"
54+
has_arm64_support: "true"
55+
- region: "ap-south-2"
56+
has_arm64_support: "false"
57+
- region: "ap-southeast-1"
58+
has_arm64_support: "true"
59+
- region: "ap-southeast-2"
60+
has_arm64_support: "true"
61+
- region: "ap-southeast-3"
62+
has_arm64_support: "true"
63+
- region: "ap-southeast-4"
64+
has_arm64_support: "false"
65+
- region: "ca-central-1"
66+
has_arm64_support: "true"
67+
- region: "eu-central-1"
68+
has_arm64_support: "true"
69+
- region: "eu-central-2"
70+
has_arm64_support: "false"
71+
- region: "eu-north-1"
72+
has_arm64_support: "true"
73+
- region: "eu-south-1"
74+
has_arm64_support: "true"
75+
- region: "eu-south-2"
76+
has_arm64_support: "false"
77+
- region: "eu-west-1"
78+
has_arm64_support: "true"
79+
- region: "eu-west-2"
80+
has_arm64_support: "true"
81+
- region: "eu-west-3"
82+
has_arm64_support: "true"
83+
- region: "me-central-1"
84+
has_arm64_support: "false"
85+
- region: "me-south-1"
86+
has_arm64_support: "true"
87+
- region: "sa-east-1"
88+
has_arm64_support: "true"
89+
- region: "us-east-1"
90+
has_arm64_support: "true"
91+
- region: "us-east-2"
92+
has_arm64_support: "true"
93+
- region: "us-west-1"
94+
has_arm64_support: "true"
95+
- region: "us-west-2"
96+
has_arm64_support: "true"
6597
steps:
6698
- name: checkout
6799
uses: actions/checkout@v3
@@ -101,7 +133,7 @@ jobs:
101133
- name: unzip artefact
102134
run: unzip cdk.out.zip
103135
- name: CDK Deploy Layer
104-
run: cdk deploy --app cdk.out --context region=${{ matrix.region }} 'LayerV2Stack' --require-approval never --verbose --outputs-file cdk-outputs.json
136+
run: 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
105137
- name: Store latest Layer ARN
106138
if: ${{ inputs.stage == 'PROD' }}
107139
run: |
@@ -118,7 +150,7 @@ jobs:
118150
if-no-files-found: error
119151
retention-days: 1
120152
- name: CDK Deploy Canary
121-
run: cdk deploy --app cdk.out --context region=${{ matrix.region}} --parameters DeployStage="${{ inputs.stage }}" 'CanaryV2Stack' --require-approval never --verbose
153+
run: cdk deploy --app cdk.out --context region=${{ matrix.region }} --parameters DeployStage="${{ inputs.stage }}" --parameters HasARM64Support=${{ matrix.has_arm64_support }} 'CanaryV2Stack' --require-approval never --verbose
122154

123155
update_v2_layer_arn_docs:
124156
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)