![[アップデート] AWS SAM でも Lambda Managed Instances が使えるようになったので使ってみた](https://images.ctfassets.net/ct0aopd36mqt/3cSNU2biOZjSIpzhzUgtBJ/eeb74bd4d0c8f041ce027f3258cd249f/reinvent2025_devio_try_w1200h630__1_.png?w=3840&fm=webp)
[アップデート] AWS SAM でも Lambda Managed Instances が使えるようになったので使ってみた
いわさです。
AWS re:Invent 2025 で Lambda Managed Instances が登場しました。
EC2 上で Lambda 関数を実行できる機能です。
re:Invent 2025 のタイミングで AWS SAM CLI もバージョンアップされ最新のサーバーレス機能がいくつか取り込まれています。
v1.149.0 では AWS SAM CLI でも Lambda Managed Instances をサポートしました。
サポートしたってどういうことなの?と思って調べてみたところ、どうやら SAM CLI というか SAM の構文で Lambda Managed Instances の新しい概念であるキャパシティプロバイダーがデプロイできるようにもなっているみたいです。なるほど。
今回 SAM でキャパシティプロバイダー含めて Lambda Managed Instance をデプロイしてみましたので紹介します。
関数にキャパシティプロバイダーを指定する
Lambda Managed Insntance な関数を作成するとき、多くの場合は事前に用意したキャパシティプロバイダーを関数で使いたいと思います。
今回 SAM のAWS::Serverless::Functionに新しいプロパティCapacityProviderConfigが指定できるようになっていまして、ここでキャパシティプロバイダーを指定できます。
CapacityProviderConfigタイプは次のようになっていまして、プロビジョニング済みキャパシティプロバイダーの ARN を指定する形です。他にもオプションでメモリCPU比や実行環境あたりの最大実行数も指定可能です。
ということでまず事前に Lambda コンソール上でキャパシティプロバイダーを作成しておきます。

そして SAM テンプレートを作成しましょう。
関数のCapacityProviderConfigで、マネジメントコンソールで作成済みの ARN を指定します。
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: ---
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello_world/
Handler: app.lambda_handler
Runtime: python3.13
Architectures:
- arm64
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: get
CapacityProviderConfig:
Arn: arn:aws:lambda:ap-northeast-1:123456789012:capacity-provider:hoge1211capacity
デプロイしてみると、次のようにキャパシティプロバイダーと関連づいた Lambda Managed Instances コンピューティングタイプで関数が作成できたことが確認できます。

キャパシティプロバイダーと関数の CPU アーキテクチャをあわせる必要があるので注意してください。
キャパシティプロバイダーをデプロイする
つづいて、関数と同時に SAM でキャパシティプロバイダーもデプロイする方法です。
新しいリソースタイプであるAWS::Serverless::CapacityProviderが追加されています。
必要な情報はコンソールと同じで、今回は IAM ロールや VPC の各リソースはデプロイ済みということで既存の ID を使用してみます。
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: ---
Resources:
HogeCapacityProvider:
Type: AWS::Serverless::CapacityProvider
Properties:
CapacityProviderName: hoge1211CapacityProvider
VpcConfig:
SecurityGroupIds:
- sg-ea2297a6
SubnetIds:
- subnet-b461c1fc
OperatorRole: arn:aws:iam::123456789012:role/hoge1211role
InstanceRequirements:
Architectures:
- arm64
ScalingConfig:
MaxVCpuCount: 16
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello_world/
Handler: app.lambda_handler
Runtime: python3.13
Architectures:
- arm64
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: get
CapacityProviderConfig:
Arn: !GetAtt HogeCapacityProvider.Arn
デプロイしてみると、無事キャパシティプロバイダーがデプロイ出来ましたね。そして同時に関数割当もできています。

ScalingConfigは省略しても良いのですが、とりあえず指定しておきました。ただ、MaxVCpuCountは SAM のリファレンスには明記されていないのですが1~8だとエラーになったので、16以上を指定しておきました。

さいごに
本日は AWS SAM でも Lambda Managed Instances が使えるようになっていたので使ってみました。
詳しい使い方を見つけることが出来なくてかなりトライ&エラーしたのですがどうにかデプロイ出来ました。
Lambda Managed Instances & SAM を使っている方の参考になれば幸いです。







