本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Lambda 受管執行個體入門
建立 Lambda 受管執行個體函數 (主控台)
您可以使用 Lambda 主控台來建立在容量提供者管理的 Amazon EC2 執行個體上執行的受管執行個體函數。
重要:在建立受管執行個體函數之前,您必須先建立容量提供者。這些函數需要容量提供者來定義將執行函數的 Amazon EC2 基礎設施。
建立 Lambda 受管執行個體函數 (主控台)
-
開啟 Lambda 主控台。
-
從左側導覽窗格中選擇容量提供者。
-
選擇建立容量提供者。
-
在容量提供者設定區段中,輸入容量提供者的名稱。
-
選取容量提供者的 VPC 和許可。您可以使用現有的 或建立新的 。如需建立必要運算子角色的資訊,請參閱 Lambda 受管執行個體的 Lambda 運算子角色。
-
展開 Advanced settings (進階設定)。
-
選擇處理器架構和執行個體類型來定義您的執行個體需求。
-
在自動擴展下,指定容量提供者的 EC2 vCPUs數量上限。您也可以選擇手動執行個體擴展模式來設定自己的擴展值,以進行精確控制。
-
選擇建立容量提供者以建立新的容量提供者。
-
接下來,選擇建立函數。
-
選取從頭開始撰寫。
-
在基本資訊窗格中,提供函數名稱。
-
針對執行期,選擇任何支援的執行期。
-
選擇函數的架構 (與您為容量提供者選取的架構相同)。根據預設,x86_64。
-
在許可下,確保您具有所選執行角色的許可。否則,您可以建立新的角色。
-
在其他組態下,選擇運算類型做為 Lambda 受管執行個體。
-
您在先前步驟中建立的容量提供者 ARN 應預先選取。
-
選擇每個 vCPU 比率的記憶體大小和執行環境記憶體 (GiB)。 GiB
-
選擇 Create function (建立函數)。
您的 Lambda 受管執行個體函數已建立,並將在您指定的容量提供者上佈建容量。函數建立通常需要幾分鐘的時間。完成後,您可以編輯函數程式碼並執行第一個測試。
建立 Lambda 受管執行個體函數 (AWS CLI)
先決條件
開始前,請確定您具有下列項目:
-
AWS CLI – 安裝和設定 AWS CLI。如需詳細資訊,請參閱安裝或更新最新版本的 AWS CLI。
-
IAM 許可 – 您的 IAM 使用者或角色必須具有建立 Lambda 函數、容量提供者和傳遞 IAM 角色的許可。請注意,
iam:CreateServiceLinkedRole如果您是第一次在帳戶中建立容量提供者,或是已刪除服務連結角色 (SLR),您也需要 。
步驟 1:建立所需的 IAM 角色
Lambda 受管執行個體需要兩個 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 組態才能存取 VPC 外部的資源,以及將遙測資料傳輸到 CloudWatch Logs 和 X-Ray。如需組態詳細資訊,請參閱 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 執行個體的子網路和安全群組
-
許可 – 定義 Lambda 用來管理 EC2 執行個體的 IAM 角色
-
執行個體需求 – 指定 x86_64 架構
-
擴展組態 – 為容量提供者設定最多 30 vCPUs
步驟 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_handler函數lambda_function.py -
記憶體 – 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