[アップデート] AWS SAM でも Lambda Managed Instances が使えるようになったので使ってみた

[アップデート] AWS SAM でも Lambda Managed Instances が使えるようになったので使ってみた

2025.12.11

いわさです。

AWS re:Invent 2025 で Lambda Managed Instances が登場しました。
EC2 上で Lambda 関数を実行できる機能です。

https://dev.classmethod.jp/articles/lambda-managed-instances/

re:Invent 2025 のタイミングで AWS SAM CLI もバージョンアップされ最新のサーバーレス機能がいくつか取り込まれています。
v1.149.0 では AWS SAM CLI でも Lambda Managed Instances をサポートしました。

https://github.com/aws/aws-sam-cli/releases/tag/v1.149.0

サポートしたってどういうことなの?と思って調べてみたところ、どうやら SAM CLI というか SAM の構文で Lambda Managed Instances の新しい概念であるキャパシティプロバイダーがデプロイできるようにもなっているみたいです。なるほど。
今回 SAM でキャパシティプロバイダー含めて Lambda Managed Instance をデプロイしてみましたので紹介します。

関数にキャパシティプロバイダーを指定する

Lambda Managed Insntance な関数を作成するとき、多くの場合は事前に用意したキャパシティプロバイダーを関数で使いたいと思います。
今回 SAM のAWS::Serverless::Functionに新しいプロパティCapacityProviderConfigが指定できるようになっていまして、ここでキャパシティプロバイダーを指定できます。
CapacityProviderConfigタイプは次のようになっていまして、プロビジョニング済みキャパシティプロバイダーの ARN を指定する形です。他にもオプションでメモリCPU比や実行環境あたりの最大実行数も指定可能です。

https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-function-capacityproviderconfig.html

ということでまず事前に Lambda コンソール上でキャパシティプロバイダーを作成しておきます。

16E6F387-E697-4988-BB39-9836A5BECDDF.png

そして 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 コンピューティングタイプで関数が作成できたことが確認できます。

60ABD6A6-A380-4CC9-8E89-63D6AF626BB5.png

キャパシティプロバイダーと関数の CPU アーキテクチャをあわせる必要があるので注意してください。

キャパシティプロバイダーをデプロイする

つづいて、関数と同時に SAM でキャパシティプロバイダーもデプロイする方法です。
新しいリソースタイプであるAWS::Serverless::CapacityProviderが追加されています。

https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-capacityprovider.html

必要な情報はコンソールと同じで、今回は 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

デプロイしてみると、無事キャパシティプロバイダーがデプロイ出来ましたね。そして同時に関数割当もできています。

A4D391F9-8EF5-4D11-A316-57637F1AD56F.png

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

1EC76BDB-6E25-4166-8749-05546AB49A70

さいごに

本日は AWS SAM でも Lambda Managed Instances が使えるようになっていたので使ってみました。

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

この記事をシェアする

FacebookHatena blogX

関連記事