AWS SAMも「--expressフラグ」をサポート。デプロイ時間短縮効果を3構成で比較してみた
はじめに
2026年6月にAWS CloudFormationのExpress modeが一般提供開始されました。Express modeは、リソースの安定化待ち(Stabilization)の一部を省略し、スタックの作成・更新完了を早める機能です。
2026年7月2日リリースのSAM CLI v1.163.0で、sam deploy に --express フラグが追加されました。
| 項目 | 通常デプロイ | Express mode |
|---|---|---|
| SAM CLIコマンド | sam deploy |
sam deploy --express |
| CFn API | CreateChangeSet / ExecuteChangeSet |
同左(DeploymentConfigオプションでExpress mode指定) |
| 安定化待ち | あり(リソースプロバイダーが定義する安定化条件を待機) | 一部を省略(リソースによってはバックグラウンドで利用可能化が継続) |
| 対象 | 本番含む全環境 | 開発・テスト環境向け |
| 永続化 | — | --save-params で samconfig.toml に保存可能 |
先行記事ではCloudFormation CLIを直接操作してExpress modeの効果を検証しています。
3種類の構成でデプロイ時間を比較した結果は以下の通りです。
| パターン | 構成 | 通常 | Express | 効果 |
|---|---|---|---|---|
| A | EC2 + InstanceProfile | 225秒 | 38秒 | 5.9倍高速 |
| B | Lambda + SQS | 93秒 | 99秒 | 効果なし(+6秒) |
| C | CloudFront + VpcOrigin + ALB | 819秒 | 765秒 | 1.07倍高速 |
検証環境
- SAM CLI: 1.163.0
- リージョン: ap-northeast-1
- 計測方法:
sam deploy実行から完了までのwall clock時間
検証A: EC2 + InstanceProfile
テンプレート(template.yaml)
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: 'Pattern A: EC2 + InstanceProfile (SAM Express mode benchmark)'
Parameters:
VpcId:
Type: AWS::EC2::VPC::Id
SubnetId:
Type: AWS::EC2::Subnet::Id
AmiId:
Type: AWS::EC2::Image::Id
Resources:
BenchRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: ec2.amazonaws.com
Action: sts:AssumeRole
BenchPolicy:
Type: AWS::IAM::Policy
Properties:
PolicyName: bench-policy
Roles:
- !Ref BenchRole
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action: s3:GetObject
Resource: '*'
BenchInstanceProfile:
Type: AWS::IAM::InstanceProfile
Properties:
Roles:
- !Ref BenchRole
BenchSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Benchmark security group
VpcId: !Ref VpcId
BenchInstance:
Type: AWS::EC2::Instance
Properties:
InstanceType: t3.micro
ImageId: !Ref AmiId
SubnetId: !Ref SubnetId
IamInstanceProfile: !Ref BenchInstanceProfile
SecurityGroupIds:
- !GetAtt BenchSecurityGroup.GroupId
結果
| モード | デプロイ時間 |
|---|---|
| 通常 | 225秒 |
| Express | 38秒 |
| 短縮 | 187秒(5.9倍高速) |
通常モードではInstanceProfileの安定化に約2分10秒かかっていました。Express modeではこの待ち時間がほぼ生じず、大幅に短縮されています。
スタックイベント比較
通常モードではBenchInstanceProfileの作成に2分10秒を要しています。
07:38:46 CREATE_IN_PROGRESS BenchInstanceProfile Resource creation Initiated
07:40:56 CREATE_COMPLETE BenchInstanceProfile
Express modeでは Eventual consistency check initiated の直後に CREATE_COMPLETE となり、約1秒で次のリソースに進んでいます。
07:43:23 CREATE_IN_PROGRESS BenchInstanceProfile Resource creation Initiated
07:43:23 CREATE_IN_PROGRESS BenchInstanceProfile Eventual consistency check initiated
07:43:24 CREATE_COMPLETE BenchInstanceProfile Resource operation completed using Express Mode.
全リソースで Resource operation completed using Express Mode. It may continue becoming available in the background. のメッセージが確認できました。
スタックイベント全文(通常モード)
2026-07-03T07:38:14 REVIEW_IN_PROGRESS bench-sam-normal-a User Initiated
2026-07-03T07:38:25 CREATE_IN_PROGRESS bench-sam-normal-a User Initiated
2026-07-03T07:38:27 CREATE_IN_PROGRESS BenchSecurityGroup
2026-07-03T07:38:27 CREATE_IN_PROGRESS BenchRole
2026-07-03T07:38:28 CREATE_IN_PROGRESS BenchRole Resource creation Initiated
2026-07-03T07:38:29 CREATE_IN_PROGRESS BenchSecurityGroup Resource creation Initiated
2026-07-03T07:38:35 CREATE_COMPLETE BenchSecurityGroup
2026-07-03T07:38:44 CREATE_COMPLETE BenchRole
2026-07-03T07:38:44 CREATE_IN_PROGRESS BenchPolicy
2026-07-03T07:38:44 CREATE_IN_PROGRESS BenchInstanceProfile
2026-07-03T07:38:46 CREATE_IN_PROGRESS BenchInstanceProfile Resource creation Initiated
2026-07-03T07:38:46 CREATE_IN_PROGRESS BenchPolicy Resource creation Initiated
2026-07-03T07:39:01 CREATE_COMPLETE BenchPolicy
2026-07-03T07:40:56 CREATE_COMPLETE BenchInstanceProfile
2026-07-03T07:40:57 CREATE_IN_PROGRESS BenchInstance
2026-07-03T07:40:59 CREATE_IN_PROGRESS BenchInstance Resource creation Initiated
2026-07-03T07:41:10 CREATE_COMPLETE BenchInstance
2026-07-03T07:41:11 CREATE_COMPLETE bench-sam-normal-a
スタックイベント全文(Express mode)
2026-07-03T07:43:06 REVIEW_IN_PROGRESS bench-sam-express-a User Initiated
2026-07-03T07:43:12 CREATE_IN_PROGRESS bench-sam-express-a User Initiated
2026-07-03T07:43:14 CREATE_IN_PROGRESS BenchRole
2026-07-03T07:43:14 CREATE_IN_PROGRESS BenchSecurityGroup
2026-07-03T07:43:15 CREATE_IN_PROGRESS BenchRole Resource creation Initiated
2026-07-03T07:43:15 CREATE_IN_PROGRESS BenchSecurityGroup Resource creation Initiated
2026-07-03T07:43:17 CREATE_IN_PROGRESS BenchSecurityGroup Eventual consistency check initiated
2026-07-03T07:43:17 CREATE_COMPLETE BenchSecurityGroup Resource operation completed using Express Mode.
2026-07-03T07:43:21 CREATE_IN_PROGRESS BenchRole Eventual consistency check initiated
2026-07-03T07:43:22 CREATE_IN_PROGRESS BenchPolicy
2026-07-03T07:43:22 CREATE_IN_PROGRESS BenchInstanceProfile
2026-07-03T07:43:23 CREATE_IN_PROGRESS BenchInstanceProfile Resource creation Initiated
2026-07-03T07:43:23 CREATE_IN_PROGRESS BenchPolicy Resource creation Initiated
2026-07-03T07:43:23 CREATE_IN_PROGRESS BenchInstanceProfile Eventual consistency check initiated
2026-07-03T07:43:23 CREATE_IN_PROGRESS BenchPolicy Eventual consistency check initiated
2026-07-03T07:43:23 CREATE_COMPLETE BenchRole Resource operation completed using Express Mode.
2026-07-03T07:43:23 CREATE_COMPLETE BenchPolicy Resource operation completed using Express Mode.
2026-07-03T07:43:24 CREATE_IN_PROGRESS BenchInstance
2026-07-03T07:43:24 CREATE_COMPLETE BenchInstanceProfile Resource operation completed using Express Mode.
2026-07-03T07:43:32 CREATE_IN_PROGRESS BenchInstance Resource creation Initiated
2026-07-03T07:43:37 CREATE_IN_PROGRESS BenchInstance Eventual consistency check initiated
2026-07-03T07:43:37 CREATE_IN_PROGRESS bench-sam-express-a Eventual consistency check initiated
2026-07-03T07:43:39 CREATE_COMPLETE BenchInstance Resource operation completed using Express Mode.
2026-07-03T07:43:40 CREATE_COMPLETE bench-sam-express-a Stack operation completed using Express Mode.
検証B: Lambda + SQS
テンプレート(template.yaml)
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: 'Pattern B: Lambda + SQS (SAM Express mode benchmark)'
Globals:
Function:
Timeout: 10
Runtime: python3.12
MemorySize: 128
Resources:
BenchQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: bench-express-queue
VisibilityTimeout: 60
BenchFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: bench-express-function
Handler: index.handler
InlineCode: |
def handler(event, context):
for record in event.get('Records', []):
print(f"Received: {record['body']}")
return {"statusCode": 200}
Events:
SQSEvent:
Type: SQS
Properties:
Queue: !GetAtt BenchQueue.Arn
BatchSize: 10
結果
| モード | デプロイ時間 |
|---|---|
| 通常 | 93秒 |
| Express | 99秒 |
| 短縮 | なし(むしろ6秒増加) |
Express modeを有効にしても短縮効果は見られませんでした(今回は99秒とわずかに増えていますが、1回計測のため誤差の範囲と考えられます)。
なぜ効果が出ないのか
スタックイベントを見ると、通常モードでもIAM RoleやLambdaは CREATE_COMPLETE までが比較的短い(IAM Role: 約16秒、Lambda: 約8秒)ことが分かります。時間がかかっているのはBenchQueueの CREATE_COMPLETE までの区間(約61秒)です。
07:46:00 CREATE_IN_PROGRESS BenchQueue Resource creation Initiated
07:47:01 CREATE_COMPLETE BenchQueue
Express modeがスキップするのは安定化待ちですが、BenchQueueの待ち時間はExpress modeでも短縮されませんでした。Express modeのスタックイベントでも、BenchQueueは CREATE_COMPLETE まで約60秒かかっています。
07:49:18 CREATE_IN_PROGRESS BenchQueue Resource creation Initiated
07:49:19 CREATE_IN_PROGRESS BenchQueue Eventual consistency check initiated
07:50:19 CREATE_COMPLETE BenchQueue Resource operation completed using Express Mode.
スタックイベント全文(通常モード)
2026-07-03T07:45:51 REVIEW_IN_PROGRESS bench-sam-normal-b User Initiated
2026-07-03T07:45:57 CREATE_IN_PROGRESS bench-sam-normal-b User Initiated
2026-07-03T07:45:59 CREATE_IN_PROGRESS BenchQueue
2026-07-03T07:45:59 CREATE_IN_PROGRESS BenchFunctionRole
2026-07-03T07:46:00 CREATE_IN_PROGRESS BenchQueue Resource creation Initiated
2026-07-03T07:46:00 CREATE_IN_PROGRESS BenchFunctionRole Resource creation Initiated
2026-07-03T07:46:17 CREATE_COMPLETE BenchFunctionRole
2026-07-03T07:46:18 CREATE_IN_PROGRESS BenchFunction
2026-07-03T07:46:20 CREATE_IN_PROGRESS BenchFunction Resource creation Initiated
2026-07-03T07:46:28 CREATE_COMPLETE BenchFunction
2026-07-03T07:47:01 CREATE_COMPLETE BenchQueue
2026-07-03T07:47:02 CREATE_IN_PROGRESS BenchFunctionSQSEvent
2026-07-03T07:47:03 CREATE_IN_PROGRESS BenchFunctionSQSEvent Resource creation Initiated
2026-07-03T07:47:20 CREATE_COMPLETE BenchFunctionSQSEvent
2026-07-03T07:47:21 CREATE_COMPLETE bench-sam-normal-b
スタックイベント全文(Express mode)
2026-07-03T07:49:10 REVIEW_IN_PROGRESS bench-sam-express-b User Initiated
2026-07-03T07:49:15 CREATE_IN_PROGRESS bench-sam-express-b User Initiated
2026-07-03T07:49:17 CREATE_IN_PROGRESS BenchFunctionRole
2026-07-03T07:49:18 CREATE_IN_PROGRESS BenchQueue
2026-07-03T07:49:18 CREATE_IN_PROGRESS BenchQueue Resource creation Initiated
2026-07-03T07:49:19 CREATE_IN_PROGRESS BenchQueue Eventual consistency check initiated
2026-07-03T07:49:19 CREATE_IN_PROGRESS BenchFunctionRole Resource creation Initiated
2026-07-03T07:49:25 CREATE_IN_PROGRESS BenchFunctionRole Eventual consistency check initiated
2026-07-03T07:49:26 CREATE_IN_PROGRESS BenchFunction
2026-07-03T07:49:27 CREATE_COMPLETE BenchFunctionRole Resource operation completed using Express Mode.
2026-07-03T07:49:27 CREATE_IN_PROGRESS BenchFunction Resource creation Initiated
2026-07-03T07:49:31 CREATE_IN_PROGRESS BenchFunction Eventual consistency check initiated
2026-07-03T07:49:32 CREATE_COMPLETE BenchFunction Resource operation completed using Express Mode.
2026-07-03T07:50:19 CREATE_COMPLETE BenchQueue Resource operation completed using Express Mode.
2026-07-03T07:50:20 CREATE_IN_PROGRESS BenchFunctionSQSEvent
2026-07-03T07:50:21 CREATE_IN_PROGRESS BenchFunctionSQSEvent Resource creation Initiated
2026-07-03T07:50:41 CREATE_IN_PROGRESS BenchFunctionSQSEvent Eventual consistency check initiated
2026-07-03T07:50:41 CREATE_IN_PROGRESS bench-sam-express-b Eventual consistency check initiated
2026-07-03T07:50:42 CREATE_COMPLETE BenchFunctionSQSEvent Resource operation completed using Express Mode.
2026-07-03T07:50:43 CREATE_COMPLETE bench-sam-express-b Stack operation completed using Express Mode.
検証C: CloudFront + VpcOrigin + ALB
安定化待ちが長いリソース(CloudFront Distribution)と、作成自体に時間がかかるリソース(VpcOrigin)が混在する構成です。
テンプレート(template.yaml)
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: 'Pattern C: CloudFront + VPC Origin + ALB (SAM Express mode benchmark)'
Parameters:
VpcId:
Type: AWS::EC2::VPC::Id
SubnetIds:
Type: List<AWS::EC2::Subnet::Id>
Resources:
BenchSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: ALB security group for benchmark
VpcId: !Ref VpcId
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
BenchALB:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Properties:
Name: bench-express-alb
Scheme: internal
Type: application
Subnets: !Ref SubnetIds
SecurityGroups:
- !Ref BenchSecurityGroup
BenchListener:
Type: AWS::ElasticLoadBalancingV2::Listener
Properties:
LoadBalancerArn: !Ref BenchALB
Protocol: HTTP
Port: 80
DefaultActions:
- Type: fixed-response
FixedResponseConfig:
StatusCode: '200'
ContentType: text/plain
MessageBody: OK
BenchVpcOrigin:
Type: AWS::CloudFront::VpcOrigin
Properties:
VpcOriginEndpointConfig:
Name: bench-express-vpc-origin
Arn: !Ref BenchALB
HTTPPort: 80
HTTPSPort: 443
OriginProtocolPolicy: http-only
BenchDistribution:
Type: AWS::CloudFront::Distribution
Properties:
DistributionConfig:
Enabled: true
Origins:
- Id: vpc-origin
DomainName: !GetAtt BenchALB.DNSName
VpcOriginConfig:
VpcOriginId: !Ref BenchVpcOrigin
DefaultCacheBehavior:
TargetOriginId: vpc-origin
ViewerProtocolPolicy: allow-all
CachePolicyId: 658327ea-f89d-4fab-a63d-7e88639e58f6
結果
| モード | デプロイ時間 |
|---|---|
| 通常 | 819秒(約13分40秒) |
| Express | 765秒(約12分45秒) |
| 短縮 | 54秒(1.07倍) |
効果は限定的でした。
ボトルネック分析
スタックイベントから各リソースの所要時間を抜き出します。
| リソース | 通常 | Express | 短縮効果 |
|---|---|---|---|
| SecurityGroup | 7秒 | 2秒 | ◎ |
| ALB | 2分33秒 | 2分52秒 | ✗ |
| VpcOrigin | 8分10秒 | 9分23秒 | ✗ |
| Distribution | 2分34秒 | 4秒 | ◎ |
CloudFront Distributionは通常モードで2分34秒かかっていたところ、Express modeでは4秒で完了しています。安定化待ちのスキップが効いています。
しかし、VpcOriginは作成完了までに9分以上を要しており、Express modeでも短縮されません。ネットワーク接続の確立に時間がかかっていると推測されますが、いずれにせよ安定化待ちではなくリソース作成自体の処理時間です。
全体のクリティカルパスは ALB作成(3分) → VpcOrigin作成(9分) → Distribution作成 です。Distributionが4秒になっても前段のVpcOriginが支配的なため、全体への効果は54秒の短縮に留まりました。
なお、ALBとVpcOriginはExpress modeの方がわずかに長くなっていますが、1回計測のため実行タイミングによる変動の可能性があります。この結果だけではExpress modeが遅延の原因とは判断できません。
スタックイベント全文(通常モード)
2026-07-03T08:06:41 REVIEW_IN_PROGRESS bench-sam-normal-c User Initiated
2026-07-03T08:06:52 CREATE_IN_PROGRESS bench-sam-normal-c User Initiated
2026-07-03T08:06:54 CREATE_IN_PROGRESS BenchSecurityGroup
2026-07-03T08:06:57 CREATE_IN_PROGRESS BenchSecurityGroup Resource creation Initiated
2026-07-03T08:07:03 CREATE_COMPLETE BenchSecurityGroup
2026-07-03T08:07:04 CREATE_IN_PROGRESS BenchALB
2026-07-03T08:07:07 CREATE_IN_PROGRESS BenchALB Resource creation Initiated
2026-07-03T08:09:40 CREATE_COMPLETE BenchALB
2026-07-03T08:09:40 CREATE_IN_PROGRESS BenchVpcOrigin
2026-07-03T08:09:40 CREATE_IN_PROGRESS BenchListener
2026-07-03T08:09:41 CREATE_IN_PROGRESS BenchListener Resource creation Initiated
2026-07-03T08:09:42 CREATE_COMPLETE BenchListener
2026-07-03T08:09:42 CREATE_IN_PROGRESS BenchVpcOrigin Resource creation Initiated
2026-07-03T08:17:52 CREATE_COMPLETE BenchVpcOrigin
2026-07-03T08:17:53 CREATE_IN_PROGRESS BenchDistribution
2026-07-03T08:17:57 CREATE_IN_PROGRESS BenchDistribution Resource creation Initiated
2026-07-03T08:20:31 CREATE_COMPLETE BenchDistribution
2026-07-03T08:20:31 CREATE_COMPLETE bench-sam-normal-c
スタックイベント全文(Express mode)
2026-07-03T08:32:12 REVIEW_IN_PROGRESS bench-sam-express-c User Initiated
2026-07-03T08:32:22 CREATE_IN_PROGRESS bench-sam-express-c User Initiated
2026-07-03T08:32:25 CREATE_IN_PROGRESS BenchSecurityGroup
2026-07-03T08:32:26 CREATE_IN_PROGRESS BenchSecurityGroup Resource creation Initiated
2026-07-03T08:32:27 CREATE_IN_PROGRESS BenchSecurityGroup Eventual consistency check initiated
2026-07-03T08:32:27 CREATE_IN_PROGRESS BenchALB
2026-07-03T08:32:28 CREATE_COMPLETE BenchSecurityGroup Resource operation completed using Express Mode.
2026-07-03T08:32:29 CREATE_IN_PROGRESS BenchALB Resource creation Initiated
2026-07-03T08:32:54 CREATE_IN_PROGRESS BenchALB Eventual consistency check initiated
2026-07-03T08:35:21 CREATE_COMPLETE BenchALB Resource operation completed using Express Mode.
2026-07-03T08:35:21 CREATE_IN_PROGRESS BenchListener
2026-07-03T08:35:21 CREATE_IN_PROGRESS BenchVpcOrigin
2026-07-03T08:35:22 CREATE_IN_PROGRESS BenchListener Resource creation Initiated
2026-07-03T08:35:22 CREATE_IN_PROGRESS BenchListener Eventual consistency check initiated
2026-07-03T08:35:23 CREATE_COMPLETE BenchListener Resource operation completed using Express Mode.
2026-07-03T08:35:23 CREATE_IN_PROGRESS BenchVpcOrigin Resource creation Initiated
2026-07-03T08:44:46 CREATE_IN_PROGRESS BenchVpcOrigin Eventual consistency check initiated
2026-07-03T08:44:47 CREATE_IN_PROGRESS BenchDistribution
2026-07-03T08:44:47 CREATE_COMPLETE BenchVpcOrigin Resource operation completed using Express Mode.
2026-07-03T08:45:02 CREATE_IN_PROGRESS BenchDistribution Resource creation Initiated
2026-07-03T08:45:03 CREATE_IN_PROGRESS BenchDistribution Eventual consistency check initiated
2026-07-03T08:45:03 CREATE_IN_PROGRESS bench-sam-express-c Eventual consistency check initiated
2026-07-03T08:45:06 CREATE_COMPLETE BenchDistribution Resource operation completed using Express Mode.
2026-07-03T08:45:07 CREATE_COMPLETE bench-sam-express-c Stack operation completed using Express Mode.
考察: Express modeが効くケース・効かないケース
Express modeが効果を発揮する条件:
リソース作成自体は短時間で終わるものの、安定化待ち(Stabilization)に時間を要するリソースがボトルネックになっている場合です。
- IAM InstanceProfile: 作成自体は瞬時だが、通常モードでは安定化に2分10秒待つ → Express modeで約1秒に
- CloudFront Distribution: 通常モード2分34秒 → Express mode 4秒に
Express modeが効果を発揮しにくい条件:
Express modeでも短縮されない待ち時間が、依存チェーン上のボトルネックとして残る場合です。
- SQS Queue:
CREATE_COMPLETEまで約60秒かかり、Express modeでも同程度 - CloudFront VpcOrigin:
CREATE_COMPLETEまで8〜9分かかり、Express modeでも短縮されなかった
判断基準として:
CREATE_COMPLETE までの待ち時間がExpress modeでも短縮されないリソースがボトルネックなら、全体の効果は限定的です。InstanceProfileやDistributionのようにExpress modeで大きく短縮されるリソースが依存チェーン上にある構成では、効果は大きくなります。自分のスタックで確認するには aws cloudformation describe-stack-events で各リソースの所要時間を見るのが手軽です。
--save-params による永続化
--save-params を併用すると samconfig.toml に設定が保存され、以降は sam deploy だけでExpress modeが有効になります。
sam deploy --express --save-params
sam sync にも --express が追加されており、インフラ同期時にも併用できます。
まとめ
SAM CLI v1.163.0の --express フラグにより、CloudFormation Express modeを sam deploy から利用できるようになりました。
本検証では、EC2 + InstanceProfile構成では225秒から38秒へと5.9倍高速化しました。一方、Lambda + SQS構成ではSQS Queueの CREATE_COMPLETE までの待ち時間がExpress modeでも残り、短縮効果は見られませんでした。CloudFront + VpcOrigin + ALB構成でも、Distributionは大きく短縮されたものの、VpcOriginの作成時間が支配的で全体の短縮は1.07倍に留まりました。
Express modeは、短縮可能な安定化待ちがクリティカルパス上にある場合に効果が大きい機能です。自分のスタックで効果が出るかどうかは、スタックイベントから「何に時間がかかっているか」を確認した上で判断するのが良さそうです。








