Lambda マネージドインスタンスの開始方法 - AWS Lambda

Lambda マネージドインスタンスの開始方法

Lambda マネージドインスタンス関数の作成 (コンソール)

Lambda コンソールを使用して、キャパシティープロバイダー管理の Amazon EC2 インスタンスで実行するマネージドインスタンス関数を作成できます。

重要: マネージドインスタンス関数を作成する前に、まずキャパシティープロバイダーを作成する必要があります。これらの関数には、関数を実行する Amazon EC2 インフラストラクチャを定義するためのキャパシティープロバイダーが必要です。

Lambda マネージドインスタンス関数を作成するには (コンソール)

  1. Lambda のコンソールを開きます。

  2. 左側のナビゲーションペインで [キャパシティープロバイダー] を選択します。

  3. [キャパシティープロバイダーを作成] を選択します。

  4. [キャパシティープロバイダー設定] セクションに、キャパシティープロバイダーの名前を入力します。

  5. キャパシティープロバイダーの VPC とアクセス許可を選択します。既存の VPC を使用するか、新しい VPC を作成できます。必要なオペレーターロールの作成については、「Lambda マネージドインスタンス用の Lambda オペレーターロール」を参照してください。

  6. [詳細設定] を展開します。

  7. プロセッサアーキテクチャとインスタンスタイプを選択して、[インスタンスの要件] を定義します。

  8. [自動スケーリング] で、キャパシティープロバイダーの EC2 vCPU の最大数を指定します。[手動インスタンススケーリングモード] を選択して、独自のスケーリング値を設定し、正確にコントロールすることもできます。

  9. [キャパシティープロバイダーを作成] を選択して、新しいプロバイダーを作成します。

  10. 次に、[Create function] を選択します。

  11. [一から作成] を選択します。

  12. [基本的な情報] ペインで、[関数名] を入力します。

  13. [ランタイム] で、サポートされている任意のランタイムを選択します。

  14. 関数の [アーキテクチャ] (キャパシティープロバイダーに選択したアーキテクチャと同じもの) を選択します。デフォルトは x86_64 です。

  15. [アクセス許可] で、選択した [実行ロール] に対するアクセス許可があることを確認します。それ以外の場合は、ロールを作成します。

  16. [追加設定] で、[コンピューティングタイプ][Lambda マネージドインスタンス] として選択します。

  17. 前のステップで作成したキャパシティープロバイダーのキャパシティープロバイダー ARN を事前に選択する必要があります。

  18. [メモリサイズ][vCPU 比率あたりの実行環境メモリ (GiB)] を選択します。

  19. [関数の作成] を選択してください。

これで 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 実行ロールを作成するには

  1. 以下の方法で、Lambda がロールを引き受けることを許可する信頼ポリシードキュメントを作成します。

    cat > lambda-trust-policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
  2. 以下の方法で、実行ロールを作成します

    aws iam create-role \ --role-name MyLambdaExecutionRole \ --assume-role-policy-document file://lambda-trust-policy.json
  3. 以下のように基本的な実行ポリシーを添付します。

    aws iam attach-role-policy \ --role-name MyLambdaExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

キャパシティープロバイダーのオペレーターロールを作成するには

  1. 以下の方法で、Lambda がオペレーターロールを引き受けることを許可する信頼ポリシードキュメントを作成します。

    cat > operator-trust-policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
  2. 以下の方法で、オペレーターロールを作成します。

    aws iam create-role \ --role-name MyCapacityProviderOperatorRole \ --assume-role-policy-document file://operator-trust-policy.json
  3. 以下のように、必要な EC2 アクセス許可ポリシーを添付します。

    aws iam attach-role-policy \ --role-name MyCapacityProviderOperatorRole \ --policy-arn arn:aws:iam::aws:policy/AWSLambdaManagedEC2ResourceOperator

ステップ 2: VPC リソースを設定する

Lambda マネージドインスタンスは VPC で実行されるため、サブネットとセキュリティグループが必要です。

VPC リソースを作成するには

  1. 以下のように VPC を作成します。

    VPC_ID=$(aws ec2 create-vpc \ --cidr-block 10.0.0.0/16 \ --query 'Vpc.VpcId' \ --output text)
  2. 次の方法でサブネットを作成します。

    SUBNET_ID=$(aws ec2 create-subnet \ --vpc-id $VPC_ID \ --cidr-block 10.0.1.0/24 \ --query 'Subnet.SubnetId' \ --output text)
  3. 以下の方法でセキュリティグループを作成します。

    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 関数を作成する

インラインコードを使用して関数を作成するには

  1. まず、以下の方法で簡単な 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
  2. 次のように、インライン 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.pylambda_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 インスタンスで実行され、レスポンスを返します。

クリーンアップ

料金が発生しないようにするには、作成したリソースを削除します。

  1. 以下の方法で関数を削除します。

    aws lambda delete-function --function-name my-managed-instance-function
  2. 以下のようにキャパシティープロバイダーを削除します。

    aws lambda delete-capacity-provider --capacity-provider-name my-capacity-provider
  3. 次の方法で 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
  4. 次の方法で 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