Skip to content

Commit 4ea6fd7

Browse files
authored
skip bombed regions when uploading new version of website (#382)
1 parent d6a6964 commit 4ea6fd7

2 files changed

Lines changed: 31 additions & 8 deletions

File tree

.github/workflows/upload-legacy-ami.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,11 @@ jobs:
126126
role-to-assume: arn:aws:iam::${{ vars.AWS_ACCOUNT_ID }}:role/github-pages
127127
aws-region: ${{ vars.AWS_REGION }}
128128
- name: Describe images
129-
run: nix run .#describe-images > ./site/images.json
129+
run: |
130+
nix run .#describe-images -- \
131+
--best-effort-region me-central-1 \
132+
--best-effort-region me-south-1 \
133+
> ./site/images.json
130134
- name: Upload pages
131135
uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4.0.0
132136
with:

upload-ami/src/upload_ami/describe_images.py

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import argparse
12
import logging
23
import boto3
34
import json
@@ -6,6 +7,15 @@
67

78

89
def main() -> None:
10+
parser = argparse.ArgumentParser()
11+
parser.add_argument(
12+
"--best-effort-region",
13+
help="Regions where failures are logged as warnings instead of errors",
14+
action="append",
15+
default=[],
16+
)
17+
args = parser.parse_args()
18+
919
logging.basicConfig(level=logging.INFO)
1020
ec2: EC2Client = boto3.client("ec2")
1121
regions = ec2.describe_regions()["Regions"]
@@ -14,13 +24,22 @@ def main() -> None:
1424

1525
for region in regions:
1626
assert "RegionName" in region
17-
ec2r = boto3.client("ec2", region_name=region["RegionName"])
18-
19-
result = ec2r.describe_images(
20-
Owners=["self"],
21-
ExecutableUsers=["all"],
22-
)
23-
images[region["RegionName"]] = result
27+
region_name = region["RegionName"]
28+
ec2r = boto3.client("ec2", region_name=region_name)
29+
30+
try:
31+
result = ec2r.describe_images(
32+
Owners=["self"],
33+
ExecutableUsers=["all"],
34+
)
35+
except Exception as e:
36+
if region_name not in args.best_effort_region:
37+
raise
38+
logging.warning(
39+
f"Describing images in {region_name} failed (best-effort, ignoring): {e}"
40+
)
41+
continue
42+
images[region_name] = result
2443

2544
print(json.dumps(images, indent=2))
2645

0 commit comments

Comments
 (0)