Lambda マネージドインスタンスの開始方法
Lambda マネージドインスタンス関数の作成 (コンソール)
Lambda コンソールを使用して、キャパシティープロバイダー管理の Amazon EC2 インスタンスで実行するマネージドインスタンス関数を作成できます。
重要: マネージドインスタンス関数を作成する前に、まずキャパシティープロバイダーを作成する必要があります。これらの関数には、関数を実行する Amazon EC2 インフラストラクチャを定義するためのキャパシティープロバイダーが必要です。
Lambda マネージドインスタンス関数を作成するには (コンソール)
-
Lambda のコンソールを開きます。
-
左側のナビゲーションペインで [キャパシティープロバイダー] を選択します。
-
[キャパシティープロバイダーを作成] を選択します。
-
[キャパシティープロバイダー設定] セクションに、キャパシティープロバイダーの名前を入力します。
-
キャパシティープロバイダーの VPC とアクセス許可を選択します。既存の VPC を使用するか、新しい VPC を作成できます。必要なオペレーターロールの作成については、「Lambda マネージドインスタンス用の Lambda オペレーターロール」を参照してください。
-
[詳細設定] を展開します。
-
プロセッサアーキテクチャとインスタンスタイプを選択して、[インスタンスの要件] を定義します。
-
[自動スケーリング] で、キャパシティープロバイダーの EC2 vCPU の最大数を指定します。[手動インスタンススケーリングモード] を選択して、独自のスケーリング値を設定し、正確にコントロールすることもできます。
-
[キャパシティープロバイダーを作成] を選択して、新しいプロバイダーを作成します。
-
次に、[Create function] を選択します。
-
[一から作成] を選択します。
-
[基本的な情報] ペインで、[関数名] を入力します。
-
[ランタイム] で、サポートされている任意のランタイムを選択します。
-
関数の [アーキテクチャ] (キャパシティープロバイダーに選択したアーキテクチャと同じもの) を選択します。デフォルトは x86_64 です。
-
[アクセス許可] で、選択した [実行ロール] に対するアクセス許可があることを確認します。それ以外の場合は、ロールを作成します。
-
[追加設定] で、[コンピューティングタイプ] を [Lambda マネージドインスタンス] として選択します。
-
前のステップで作成したキャパシティープロバイダーのキャパシティープロバイダー ARN を事前に選択する必要があります。
-
[メモリサイズ] と [vCPU 比率あたりの実行環境メモリ (GiB)] を選択します。
-
[関数の作成] を選択してください。
これで Lambda マネージドインスタンス関数が作成され、指定したキャパシティープロバイダーにキャパシティーがプロビジョニングされます。通常、関数の作成には数分かかります。完了したら、関数コードを編集し、最初のテストが実行可能になります。
Lambda マネージドインスタンス関数の作成 (AWS CLI)
前提条件
作業を開始する前に、次の項目があることを確認します。
-
AWS CLI – AWS CLI をインストールして設定します。詳細については、「AWS CLI の最新バージョンのインストールまたは更新」を参照してください。
-
IAM アクセス許可 – Lambda 関数とキャパシティープロバイダーを作成し、IAM ロールを渡すには、IAM ユーザーまたはロールへのアクセス許可が必要です。また、アカウントでキャパシティープロバイダーを初めて作成する場合や、サービスにリンクされたロール (SLR) が削除された場合にも、
iam:CreateServiceLinkedRoleが必要になります。
ステップ 1: 必要な IAM ロールを作成する
Lambda マネージドインスタンスには、関数の実行ロールとキャパシティープロバイダーのオペレーターロールの 2 つの IAM ロールが必要です。オペレーターロールは、Lambda でユーザーに代わって Amazon EC2 インスタンスを起動、終了、モニタリングできます。関数の実行ロールは、他の AWS サービスとリソースに対するアクセス許可をその関数に付与します。
Lambda 実行ロールを作成するには
-
以下の方法で、Lambda がロールを引き受けることを許可する信頼ポリシードキュメントを作成します。
cat > lambda-trust-policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF -
以下の方法で、実行ロールを作成します
aws iam create-role \ --role-name MyLambdaExecutionRole \ --assume-role-policy-document file://lambda-trust-policy.json -
以下のように基本的な実行ポリシーを添付します。
aws iam attach-role-policy \ --role-name MyLambdaExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
キャパシティープロバイダーのオペレーターロールを作成するには
-
以下の方法で、Lambda がオペレーターロールを引き受けることを許可する信頼ポリシードキュメントを作成します。
cat > operator-trust-policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF -
以下の方法で、オペレーターロールを作成します。
aws iam create-role \ --role-name MyCapacityProviderOperatorRole \ --assume-role-policy-document file://operator-trust-policy.json -
以下のように、必要な EC2 アクセス許可ポリシーを添付します。
aws iam attach-role-policy \ --role-name MyCapacityProviderOperatorRole \ --policy-arn arn:aws:iam::aws:policy/AWSLambdaManagedEC2ResourceOperator
ステップ 2: VPC リソースを設定する
Lambda マネージドインスタンスは VPC で実行されるため、サブネットとセキュリティグループが必要です。
VPC リソースを作成するには
-
以下のように VPC を作成します。
VPC_ID=$(aws ec2 create-vpc \ --cidr-block 10.0.0.0/16 \ --query 'Vpc.VpcId' \ --output text) -
次の方法でサブネットを作成します。
SUBNET_ID=$(aws ec2 create-subnet \ --vpc-id $VPC_ID \ --cidr-block 10.0.1.0/24 \ --query 'Subnet.SubnetId' \ --output text) -
以下の方法でセキュリティグループを作成します。
SECURITY_GROUP_ID=$(aws ec2 create-security-group \ --group-name my-capacity-provider-sg \ --description "Security group for Lambda Managed Instances" \ --vpc-id $VPC_ID \ --query 'GroupId' \ --output text)
注: Lambda マネージドインスタンス関数では、VPC 外のリソースにアクセスしたり、テレメトリデータを CloudWatch Logs や X-Ray に送信したりするには VPC 設定が必要です。設定の詳細については、「Lambda マネージドインスタンスのネットワーキング」を参照してください。
ステップ 3: キャパシティープロバイダーを作成する
キャパシティープロバイダーは、Lambda 関数を実行する EC2 インスタンスを管理します。
キャパシティープロバイダーを作成するには
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) aws lambda create-capacity-provider \ --capacity-provider-name my-capacity-provider \ --vpc-config SubnetIds=[$SUBNET_ID],SecurityGroupIds=[$SECURITY_GROUP_ID] \ --permissions-config CapacityProviderOperatorRoleArn=arn:aws:iam::${ACCOUNT_ID}:role/MyCapacityProviderOperatorRole \ --instance-requirements Architectures=[x86_64] \ --capacity-provider-scaling-config MaxVCpuCount=30
このコマンドは、次の設定のキャパシティープロバイダーを作成します。
-
VPC 設定 – EC2 インスタンスのサブネットとセキュリティグループを指定します
-
アクセス許可 – EC2 インスタンスの管理で Lambda が使用する IAM ロールを定義します
-
インスタンス要件 – x86_64 アーキテクチャを指定します
-
スケーリング設定 – キャパシティープロバイダーに最大 30 vCPU を設定します
ステップ 4: インラインコードを使用して Lambda 関数を作成する
インラインコードを使用して関数を作成するには
-
まず、以下の方法で簡単な Python 関数を作成し、インラインでパッケージ化します。
# Create a temporary directory for the function code mkdir -p /tmp/my-lambda-function cd /tmp/my-lambda-function # Create a simple Python handler cat > lambda_function.py << 'EOF' import json def lambda_handler(event, context): return { 'statusCode': 200, 'body': json.dumps({ 'message': 'Hello from Lambda Managed Instances!', 'event': event }) } EOF # Create a ZIP file zip function.zip lambda_function.py -
次のように、インライン ZIP ファイルを使用して Lambda 関数を作成します。
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) REGION=$(aws configure get region) aws lambda create-function \ --function-name my-managed-instance-function \ --package-type Zip \ --runtime python3.13 \ --handler lambda_function.lambda_handler \ --zip-file fileb:///tmp/my-lambda-function/function.zip \ --role arn:aws:iam::${ACCOUNT_ID}:role/MyLambdaExecutionRole \ --architectures x86_64 \ --memory-size 2048 \ --ephemeral-storage Size=512 \ --capacity-provider-config LambdaManagedInstancesCapacityProviderConfig={CapacityProviderArn=arn:aws:lambda:${REGION}:${ACCOUNT_ID}:capacity-provider:my-capacity-provider}関数は以下の設定で作成されます。
-
ランタイム – Python 3.13
-
ハンドラー –
lambda_function.pyのlambda_handler関数 -
メモリ – 2048 MB
-
エフェメラルストレージ – 512 MB
-
キャパシティープロバイダー – 作成したキャパシティープロバイダーへのリンク
-
ステップ 5: 関数バージョンを発行する
Lambda マネージドインスタンスで関数を実行するには、バージョンを発行する必要があります。
関数バージョンを発行するには
aws lambda publish-version \ --function-name my-managed-instance-function
このコマンドは、関数のバージョン 1 を発行し、キャパシティープロバイダーにデプロイします。
ステップ 6: 関数を呼び出す
発行したら、関数を呼び出すことができます。
関数を呼び出すには
aws lambda invoke \ --function-name my-managed-instance-function:1 \ --payload '{"name": "World"}' \ response.json # View the response cat response.json
関数は、キャパシティープロバイダーが管理する EC2 インスタンスで実行され、レスポンスを返します。
クリーンアップ
料金が発生しないようにするには、作成したリソースを削除します。
-
以下の方法で関数を削除します。
aws lambda delete-function --function-name my-managed-instance-function -
以下のようにキャパシティープロバイダーを削除します。
aws lambda delete-capacity-provider --capacity-provider-name my-capacity-provider -
次の方法で VPC リソースを削除します。
aws ec2 delete-security-group --group-id $SECURITY_GROUP_ID aws ec2 delete-subnet --subnet-id $SUBNET_ID aws ec2 delete-vpc --vpc-id $VPC_ID -
次の方法で IAM ロールを削除します。
aws iam detach-role-policy \ --role-name MyLambdaExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole aws iam detach-role-policy \ --role-name MyCapacityProviderOperatorRole \ --policy-arn arn:aws:iam::aws:policy/AWSLambdaManagedEC2ResourceOperator aws iam delete-role --role-name MyLambdaExecutionRole aws iam delete-role --role-name MyCapacityProviderOperatorRole