CreateFunction - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

CreateFunction

建立 Lambda 函數。若要建立函數,您需要部署套件執行角色。部署套件是包含函數程式碼的 .zip 檔案封存或容器映像。執行角色授予函數使用權限AWS 服務,例如用於 CloudWatch 日誌串流和請求追蹤AWS X-Ray的 Amazon Logs。

如果部署套件是容器映像,您可以將套件類型設定為 Image。對於容器映像,程式碼屬性必須在 Amazon ECR 登錄中包含容器映像的 URI。您不需要指定處理常式和執行時間屬性。

如果部署套件是 .zip 封存檔,您可以將套件類型設定為 Zip。對於 .zip 檔案封存,程式碼屬性會指定 .zip 檔案的位置。您還必須指定處理常式和執行時間屬性。部署套件中的程式碼必須與函數 (x86-64arm64) 的目標指令集架構相容。如果沒有指定架構,則預設值為 x86-64

當您建立函數時,Lambda 會佈建函數執行個體及其支援的資源。如果您的函數連線到 VPC,則此過程可能需要一分鐘左右。在此期間,您無法調用或修改函數。來自 GetFunctionConfiguration 的回應中的 StateStateReasonStateReasonCode 欄位指示函數何時準備調用。如需詳細資訊,請參閱 Lambda 函數狀態

函數具有未發佈的版本,並且可以具有已發佈的版本和別名。當您更新函數的程式碼和組態時,未發佈的版本會變更。已發佈的版本是無法變更之函數程式碼和組態的快照。別名是映射至版本的具名資源,可變更以映射至不同版本。使用 Publish 參數,從其初始組態中建立函數的版本 1

使用其他參數可設定特定版本和函數級設定。稍後使用 UpdateFunctionConfiguration 修改版本特定的設定。函數級設定會同時套用至函數的未發佈版本和已發佈版本,並包含標籤 (TagResource) 和每個函數的並行限制 (PutFunctionConcurrency)。

如果您的部署套件是 .zip 檔案封存,則可以使用程式碼簽署。若要啟用此函數的程式碼簽章,請指定程式碼簽署組態的 ARN。當使用者以 UpdateFunctionCode 嘗試部署程式碼套件時,Lambda 會檢查程式碼套件是否具有來自受信任發佈者的有效簽署。程式碼簽署組態包含一組簽署描述檔,定義了此函數的受信任發佈者。

如果另一個 AWS 帳戶 或 AWS 服務 調用您的函數,請使用 AddPermission 建立資源型 AWS Identity and Access Management IAM 政策來授予許可。您可以在版本或別名的函數層級授予許可。

若要直接調用函數,請使用 Invoke。若要調用函數以回應其他 AWS 服務 中的事件,請建立事件來源映射 (CreateEventSourceMapping),或在其他服務中設定函數觸發條件。如需詳細資訊,請參閱調用 Lambda 函數

請求語法

POST /2015-03-31/functions HTTP/1.1 Content-type: application/json { "Architectures": [ "string" ], "Code": { "ImageUri": "string", "S3Bucket": "string", "S3Key": "string", "S3ObjectVersion": "string", "ZipFile": blob }, "CodeSigningConfigArn": "string", "DeadLetterConfig": { "TargetArn": "string" }, "Description": "string", "Environment": { "Variables": { "string" : "string" } }, "EphemeralStorage": { "Size": number }, "FileSystemConfigs": [ { "Arn": "string", "LocalMountPath": "string" } ], "FunctionName": "string", "Handler": "string", "ImageConfig": { "Command": [ "string" ], "EntryPoint": [ "string" ], "WorkingDirectory": "string" }, "KMSKeyArn": "string", "Layers": [ "string" ], "LoggingConfig": { "ApplicationLogLevel": "string", "LogFormat": "string", "LogGroup": "string", "SystemLogLevel": "string" }, "MemorySize": number, "PackageType": "string", "Publish": boolean, "Role": "string", "Runtime": "string", "SnapStart": { "ApplyOn": "string" }, "Tags": { "string" : "string" }, "Timeout": number, "TracingConfig": { "Mode": "string" }, "VpcConfig": { "Ipv6AllowedForDualStack": boolean, "SecurityGroupIds": [ "string" ], "SubnetIds": [ "string" ] } }

URI 請求參數

請求不會使用任何 URI 參數。

請求主體

請求接受採用 JSON 格式的下列資料。

Architectures

函數支援的指令集架構。輸入具有其中一個有效值 (arm64 或 x86_64) 的字串陣列。預設值為 x86_64

類型:字串陣列

陣列成員:固定項目數為 1。

有效值:x86_64 | arm64

必要:否

Code

函數的程式碼。

類型:FunctionCode 物件

必要:是

CodeSigningConfigArn

若要啟用此函數的程式碼簽章,請指定程式碼簽署組態的 ARN。程式碼簽署組態包含一組簽署描述檔,可定義此函數的受信任發佈者。

類型:字串

長度限制:長度上限為 200。

模式:arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\d{1}:\d{12}:code-signing-config:csc-[a-z0-9]{17}

必要:否

DeadLetterConfig

無效字母佇列組態,可指定在處理失敗時,Lambda 傳送的非同步事件的佇列或主題。如需詳細資訊,請參閱無效字母佇列

類型:DeadLetterConfig 物件

必要:否

Description

函數的敘述。

類型:字串

長度限制:長度下限為 0。長度上限為 256。

必要:否

Environment

環境變數,可在執行期間透過函數程式碼取得。

類型:Environment 物件

必要:否

EphemeralStorage

函數的 /tmp 目錄大小,以 MB 為單位。預設值為 512,但可以是介於 512 和 10,240 MB 之間的任何非負整數。如需詳細資訊,請參閱設定暫時性儲存 (主控台)

類型:EphemeralStorage 物件

必要:否

FileSystemConfigs

Amazon EFS 檔案系統的連線設定。

類型:FileSystemConfig 物件陣列

陣列成員:最多 1 個項目。

必要:否

FunctionName

Lambda 函數的名稱。

名稱格式
  • 函數名稱 - my-function

  • 函數 ARN - arn:aws:lambda:us-west-2:123456789012:function:my-function

  • 部分 ARN - 123456789012:function:my-function

長度限制條件僅會套用到完整的 ARN。若您僅指定函數名稱,則其長度限制為 64 個字元。

類型:字串

長度限制:長度下限為 1。長度上限為 140。

模式:(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?

必要:是

Handler

程式碼中的方法名稱,Lambda 會呼叫此程式碼來執行您的函數。如果部署套件是 .zip 檔案封存,則需要處理常式。格式包含檔案名稱。它也可以包含命名空間和其他限定詞,取決於執行時間。如需詳細資訊,請參閱 Lambda 程式設計模型

類型:字串

長度限制:長度上限為 128。

模式:[^\s]+

必要:否

ImageConfig

容器映像組態值,它們會覆寫容器映像 Dockerfile 中的值。

類型:ImageConfig 物件

必要:否

KMSKeyArn

AWS Key Management Service (AWS KMS) 客戶受管金鑰的 ARN,用於加密函數的環境變數。啟動 Lambda SnapStart 時,Lambda 也會使用此金鑰來加密函數的快照集。如果您使用容器映像部署函數,Lambda 也會在部署函數時使用此金鑰來加密函數。請注意,這與在 Amazon Elastic Container Registry (Amazon ECR) 中用於保護容器映像的金鑰不同。若沒有提供客戶受管金鑰,Lambda 會使用預設服務金鑰。

類型:String

模式:(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()

必要:否

Layers

要新增到函數執行環境的函數 Layer。依 ARN 指定每個 layer (包括版本)。

類型:字串陣列

長度限制:長度下限為 1。長度上限為 140。

模式:arn:[a-zA-Z0-9-]+:lambda:[a-zA-Z0-9-]+:\d{12}:layer:[a-zA-Z0-9-_]+:[0-9]+

必要:否

LoggingConfig

該功能的 Amazon CloudWatch 日誌配置設置。

類型:LoggingConfig 物件

必要:否

MemorySize

可供函數在執行階段使用的記憶體量。增加函數記憶體也會增加它的 CPU 配置。預設值為 128 MB。該值可以是 1 MB 的任何倍數。

類型:整數

有效範圍:最小值為 128。最大值為 10240。

必要:否

PackageType

部署套件的類型。為容器映像設定為 Image,並為 .zip 封存檔設為 Zip

類型:字串

有效值:Zip | Image

必要:否

Publish

設為 true,以在建立期間發佈函數的第一個版本。

類型:布林值

必要:否

Role

函數執行角色的 Amazon Resource Name (ARN)。

類型:String

模式:arn:(aws[a-zA-Z-]*)?:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+

必要:是

Runtime

函數的執行時間的識別符。如果部署套件是 .zip 檔案封存,則需要執行時間。

下列清單包含已淘汰的執行時間。如需詳細資訊,請參閱執行時間淘汰政策

類型:字串

有效值:nodejs | nodejs4.3 | nodejs6.10 | nodejs8.10 | nodejs10.x | nodejs12.x | nodejs14.x | nodejs16.x | java8 | java8.al2 | java11 | python2.7 | python3.6 | python3.7 | python3.8 | python3.9 | dotnetcore1.0 | dotnetcore2.0 | dotnetcore2.1 | dotnetcore3.1 | dotnet6 | nodejs4.3-edge | go1.x | ruby2.5 | ruby2.7 | provided | provided.al2 | nodejs18.x | python3.10 | java17 | ruby3.2 | python3.11 | nodejs20.x | provided.al2023 | python3.12 | java21

必要:否

SnapStart

功能的SnapStart設定。

類型:SnapStart 物件

必要:否

Tags

要套用到函數的標籤清單。

類型:字串到字串映射

必要:否

Timeout

Lambda 在停止函數前允許函數執行的時間 (以秒為單位)。預設為 3 秒。允許的最大值為 900 秒。如需詳細資訊,請參閱 Lambda 執行環境

類型:整數

有效範圍:最小值為 1。

必要:否

TracingConfig

Mode 設為 Active,使用 X-Ray 取樣及追蹤一部分的傳入請求。

類型:TracingConfig 物件

必要:否

VpcConfig

對於 VPC 中 AWS 資源的網路連線,指定 VPC 中安全群組和子網路的清單。將函數連接到 VPC 時,只能透過該 VPC 存取資源和網際網路。如需詳細資訊,請參閱設定 Lambda 函數以存取 VPC 中的資源

類型:VpcConfig 物件

必要:否

回應語法

HTTP/1.1 201 Content-type: application/json { "Architectures": [ "string" ], "CodeSha256": "string", "CodeSize": number, "DeadLetterConfig": { "TargetArn": "string" }, "Description": "string", "Environment": { "Error": { "ErrorCode": "string", "Message": "string" }, "Variables": { "string" : "string" } }, "EphemeralStorage": { "Size": number }, "FileSystemConfigs": [ { "Arn": "string", "LocalMountPath": "string" } ], "FunctionArn": "string", "FunctionName": "string", "Handler": "string", "ImageConfigResponse": { "Error": { "ErrorCode": "string", "Message": "string" }, "ImageConfig": { "Command": [ "string" ], "EntryPoint": [ "string" ], "WorkingDirectory": "string" } }, "KMSKeyArn": "string", "LastModified": "string", "LastUpdateStatus": "string", "LastUpdateStatusReason": "string", "LastUpdateStatusReasonCode": "string", "Layers": [ { "Arn": "string", "CodeSize": number, "SigningJobArn": "string", "SigningProfileVersionArn": "string" } ], "LoggingConfig": { "ApplicationLogLevel": "string", "LogFormat": "string", "LogGroup": "string", "SystemLogLevel": "string" }, "MasterArn": "string", "MemorySize": number, "PackageType": "string", "RevisionId": "string", "Role": "string", "Runtime": "string", "RuntimeVersionConfig": { "Error": { "ErrorCode": "string", "Message": "string" }, "RuntimeVersionArn": "string" }, "SigningJobArn": "string", "SigningProfileVersionArn": "string", "SnapStart": { "ApplyOn": "string", "OptimizationStatus": "string" }, "State": "string", "StateReason": "string", "StateReasonCode": "string", "Timeout": number, "TracingConfig": { "Mode": "string" }, "Version": "string", "VpcConfig": { "Ipv6AllowedForDualStack": boolean, "SecurityGroupIds": [ "string" ], "SubnetIds": [ "string" ], "VpcId": "string" } }

回應元素

如果動作成功,則服務傳回 HTTP 201 回應。

服務會傳回下列 JSON 格式的資料。

Architectures

函數支援的指令集架構。架構是具有其中一個有效值的字串陣列。預設架構值為 x86_64

類型:字串陣列

陣列成員:固定項目數為 1。

有效值:x86_64 | arm64

CodeSha256

函數部署套件的 SHA256 雜湊。

類型:字串

CodeSize

函數部署套件的大小 (以位元組為單位)。

類型:Long

DeadLetterConfig

函數的無效字母佇列。

類型:DeadLetterConfig 物件

Description

函數的描述。

類型:字串

長度限制:長度下限為 0。長度上限為 256。

Environment

函數的環境變數。從 AWS CloudTrail 日誌中省略。

類型:EnvironmentResponse 物件

EphemeralStorage

函數的 /tmp 目錄大小,以 MB 為單位。預設值為 512,但可以是介於 512 和 10,240 MB 之間的任何非負整數。如需詳細資訊,請參閱設定暫時性儲存 (主控台)

類型:EphemeralStorage 物件

FileSystemConfigs

Amazon EFS 檔案系統的連線設定。

類型:FileSystemConfig 物件陣列

陣列成員:最多 1 個項目。

FunctionArn

函數的 Amazon Resource Name (ARN)。

類型:String

模式:arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\d{1}:\d{12}:function:[a-zA-Z0-9-_\.]+(:(\$LATEST|[a-zA-Z0-9-_]+))?

FunctionName

函數的名稱。

類型:字串

長度限制:長度下限為 1。長度上限為 170。

模式:(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_\.]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?

Handler

Lambda 為了開始執行您的函數所呼叫的函數。

類型:字串

長度限制:長度上限為 128。

模式:[^\s]+

ImageConfigResponse

函數的映像組態值。

類型:ImageConfigResponse 物件

KMSKeyArn

用來加密函數環境變數的 AWS KMS key。啟動 Lambda SnapStart 時,也會使用此金鑰來加密函數的快照集。只有在您已設定客戶受管金鑰的情況下,才會傳回此金鑰。

類型:String

模式:(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()

LastModified

上次更新函數的日期和時間,採用 ISO-8601 格式 (YYYY-MM-DDThh:mm:ss.sTZD)。

類型:字串

LastUpdateStatus

對函數執行的上次更新的狀態。這是在函數建立完成後首次設定為 Successful

類型:字串

有效值:Successful | Failed | InProgress

LastUpdateStatusReason

對函數執行的上次更新的原因。

類型:字串

LastUpdateStatusReasonCode

對函數執行的上次更新的原因代碼。

類型:字串

有效值:EniLimitExceeded | InsufficientRolePermissions | InvalidConfiguration | InternalError | SubnetOutOfIPAddresses | InvalidSubnet | InvalidSecurityGroup | ImageDeleted | ImageAccessDenied | InvalidImage | KMSKeyAccessDenied | KMSKeyNotFound | InvalidStateKMSKey | DisabledKMSKey | EFSIOError | EFSMountConnectivityError | EFSMountFailure | EFSMountTimeout | InvalidRuntime | InvalidZipFileException | FunctionError

Layers

函數的

類型:Layer 物件陣列

LoggingConfig

該功能的 Amazon CloudWatch 日誌配置設置。

類型:LoggingConfig 物件

MasterArn

若是 Lambda@Edge 函數,則為主函數的 ARN。

類型:String

模式:arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\d{1}:\d{12}:function:[a-zA-Z0-9-_]+(:(\$LATEST|[a-zA-Z0-9-_]+))?

MemorySize

可供函數在執行階段使用的記憶體量。

類型:整數

有效範圍:最小值為 128。最大值為 10240。

PackageType

部署套件的類型。針對容器影像設定為 Image,並針對 .zip 檔案封存設定 Zip

類型:字串

有效值:Zip | Image

RevisionId

函數或別名的最新更新修訂版。

類型:字串

Role

函數的執行角色。

類型:String

模式:arn:(aws[a-zA-Z-]*)?:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+

Runtime

函數的執行時間的識別符。如果部署套件是 .zip 檔案封存,則需要執行時間。

下列清單包含已淘汰的執行時間。如需詳細資訊,請參閱執行時間淘汰政策

類型:字串

有效值:nodejs | nodejs4.3 | nodejs6.10 | nodejs8.10 | nodejs10.x | nodejs12.x | nodejs14.x | nodejs16.x | java8 | java8.al2 | java11 | python2.7 | python3.6 | python3.7 | python3.8 | python3.9 | dotnetcore1.0 | dotnetcore2.0 | dotnetcore2.1 | dotnetcore3.1 | dotnet6 | nodejs4.3-edge | go1.x | ruby2.5 | ruby2.7 | provided | provided.al2 | nodejs18.x | python3.10 | java17 | ruby3.2 | python3.11 | nodejs20.x | provided.al2023 | python3.12 | java21

RuntimeVersionConfig

執行階段的 ARN 和任何發生的錯誤。

類型:RuntimeVersionConfig 物件

SigningJobArn

簽署任務的 ARN。

類型:String

模式:arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\-])+:([a-z]{2}(-gov)?-[a-z]+-\d{1})?:(\d{12})?:(.*)

SigningProfileVersionArn

簽署描述檔版本的 ARN。

類型:String

模式:arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\-])+:([a-z]{2}(-gov)?-[a-z]+-\d{1})?:(\d{12})?:(.*)

SnapStart

ApplyOn 設為 PublishedVersions,即可在您發佈函數版本時建立初始化執行環境的快照。如需詳細資訊,請參閱使用 Lambda 改善啟動效能 SnapStart

類型:SnapStartResponse 物件

State

函數目前的狀態。當狀態為 Inactive 時,您可以透過調用它來重新激活該函數。

類型:字串

有效值:Pending | Active | Inactive | Failed

StateReason

函數目前狀態的原因。

類型:字串

StateReasonCode

函數目前狀態的原因代碼。當代碼為 Creating 時,則無法調用或修改函數。

類型:字串

有效值:Idle | Creating | Restoring | EniLimitExceeded | InsufficientRolePermissions | InvalidConfiguration | InternalError | SubnetOutOfIPAddresses | InvalidSubnet | InvalidSecurityGroup | ImageDeleted | ImageAccessDenied | InvalidImage | KMSKeyAccessDenied | KMSKeyNotFound | InvalidStateKMSKey | DisabledKMSKey | EFSIOError | EFSMountConnectivityError | EFSMountFailure | EFSMountTimeout | InvalidRuntime | InvalidZipFileException | FunctionError

Timeout

Lambda 在停止函數前允許函數執行的時間 (以秒為單位)。

類型:整數

有效範圍:最小值為 1。

TracingConfig

函數的 AWS X-Ray 追蹤組態。

類型:TracingConfigResponse 物件

Version

Lambda 函數的版本。

類型:字串

長度限制:長度下限為 1。長度上限為 1024。

模式:(\$LATEST|[0-9]+)

VpcConfig

函數的聯網設定。

類型:VpcConfigResponse 物件

錯誤

如需所有動作常見錯誤的資訊,請參閱常見錯誤

CodeSigningConfigNotFoundException

指定的程式碼簽署組態不存在。

HTTP 狀態碼:404

CodeStorageExceededException

您的 AWS 帳戶 已超過總程式碼大小上限。如需詳細資訊,請參閱 Lambda 配額

HTTP 狀態碼:400

CodeVerificationFailedException

程式碼簽章無法進行一個或多個驗證檢查,因為簽章不符或到期,程式碼簽署政策設定為 ENFORCE。Lambda 會阻止部署。

HTTP 狀態碼:400

InvalidCodeSignatureException

程式碼簽章無法進行完整性檢查。如果完整性檢查失敗,即使程式碼簽署政策設定為 WARN,Lambda 仍會阻止部署。

HTTP 狀態碼:400

InvalidParameterValueException

請求中的其中一個參數無效。

HTTP 狀態碼:400

ResourceConflictException

資源已存在,或另一個操作正在進行中。

HTTP 狀態碼:409

ResourceNotFoundException

請求中指定的資源不存在。

HTTP 狀態碼:404

ServiceException

AWS Lambda 服務發生內部錯誤。

HTTP 狀態碼:500

TooManyRequestsException

超出請求輸送量限制。如需詳細資訊,請參閱 Lambda 配額

HTTP 狀態碼:429

另請參閱

如需在語言特定的 AWS 開發套件之一中使用此 API 的詳細資訊,請參閱下列說明: