Pin SocketMode image asset to LINUX_ARM64

The task runs ARM64, but the image asset had no explicit platform, so
the amd64 CD runner built an amd64 image (QEMU alone does not change
the default target). Revision :8 crash-looped with "exec format
error" (50 failed task starts); CloudFormation hung on service
stabilization until cancelled. Local arm64 builds masked this -
deploys from this Mac always produced the right image.

Same fix pattern as the org-wide QEMU+platform rule for arm64 Lambda
bundling.
This commit is contained in:
Adam Moussa 2026-06-03 16:02:39 -04:00
parent 97456f6104
commit 21ad13943c

View file

@ -3,6 +3,7 @@ import * as cdk from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as ecs from 'aws-cdk-lib/aws-ecs';
import * as ecr from 'aws-cdk-lib/aws-ecr';
import * as ecrAssets from 'aws-cdk-lib/aws-ecr-assets';
import * as logs from 'aws-cdk-lib/aws-logs';
import * as iam from 'aws-cdk-lib/aws-iam';
import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';
@ -76,6 +77,10 @@ export class SocketModeConstruct extends Construct {
taskDef.addContainer('listener', {
image: ecs.ContainerImage.fromAsset(
path.join(__dirname, '../../listener'),
// Explicit platform: the task is ARM64, and without this an amd64 CI
// runner builds an amd64 image even with QEMU enabled — tasks then
// crash-loop with "exec format error" (50 failed starts on 2026-06-03).
{ platform: ecrAssets.Platform.LINUX_ARM64 },
),
essential: true,
environment: {