updateFunctionConfiguration method

Future<FunctionConfiguration> updateFunctionConfiguration({
  1. required String functionName,
  2. DeadLetterConfig? deadLetterConfig,
  3. String? description,
  4. Environment? environment,
  5. List<FileSystemConfig>? fileSystemConfigs,
  6. String? handler,
  7. ImageConfig? imageConfig,
  8. String? kMSKeyArn,
  9. List<String>? layers,
  10. int? memorySize,
  11. String? revisionId,
  12. String? role,
  13. Runtime? runtime,
  14. int? timeout,
  15. TracingConfig? tracingConfig,
  16. VpcConfig? vpcConfig,
})

Modify the version-specific settings of a Lambda function.

When you update a function, Lambda provisions an instance of the function and its supporting resources. If your function connects to a VPC, this process can take a minute. During this time, you can't modify the function, but you can still invoke it. The LastUpdateStatus, LastUpdateStatusReason, and LastUpdateStatusReasonCode fields in the response from GetFunctionConfiguration indicate when the update is complete and the function is processing events with the new configuration. For more information, see Function States.

These settings can vary between versions of a function and are locked when you publish a version. You can't modify the configuration of a published version, only the unpublished version.

To configure function concurrency, use PutFunctionConcurrency. To grant invoke permissions to an account or AWS service, use AddPermission.

May throw ServiceException. May throw ResourceNotFoundException. May throw InvalidParameterValueException. May throw TooManyRequestsException. May throw ResourceConflictException. May throw PreconditionFailedException. May throw CodeVerificationFailedException. May throw InvalidCodeSignatureException. May throw CodeSigningConfigNotFoundException.

Parameter functionName : The name of the Lambda function.

Name formats

  • Function name - my-function.
  • Function ARN - arn:aws:lambda:us-west-2:123456789012:function:my-function.
  • Partial ARN - 123456789012:function:my-function.
The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.

Parameter deadLetterConfig : A dead letter queue configuration that specifies the queue or topic where Lambda sends asynchronous events when they fail processing. For more information, see Dead Letter Queues.

Parameter description : A description of the function.

Parameter environment : Environment variables that are accessible from function code during execution.

Parameter fileSystemConfigs : Connection settings for an Amazon EFS file system.

Parameter handler : The name of the method within your code that Lambda calls to execute your function. The format includes the file name. It can also include namespaces and other qualifiers, depending on the runtime. For more information, see Programming Model.

Parameter imageConfig : Configuration values that override the container image Dockerfile.

Parameter kMSKeyArn : The ARN of the AWS Key Management Service (AWS KMS) key that's used to encrypt your function's environment variables. If it's not provided, AWS Lambda uses a default service key.

Parameter layers : A list of function layers to add to the function's execution environment. Specify each layer by its ARN, including the version.

Parameter memorySize : The amount of memory available to the function at runtime. Increasing the function's memory also increases its CPU allocation. The default value is 128 MB. The value can be any multiple of 1 MB.

Parameter revisionId : Only update the function if the revision ID matches the ID that's specified. Use this option to avoid modifying a function that has changed since you last read it.

Parameter role : The Amazon Resource Name (ARN) of the function's execution role.

Parameter runtime : The identifier of the function's runtime.

Parameter timeout : The amount of time that Lambda allows a function to run before stopping it. The default is 3 seconds. The maximum allowed value is 900 seconds.

Parameter tracingConfig : Set Mode to Active to sample and trace a subset of incoming requests with AWS X-Ray.

Parameter vpcConfig : For network connectivity to AWS resources in a VPC, specify a list of security groups and subnets in the VPC. When you connect a function to a VPC, it can only access resources and the internet through that VPC. For more information, see VPC Settings.

Implementation

Future<FunctionConfiguration> updateFunctionConfiguration({
  required String functionName,
  DeadLetterConfig? deadLetterConfig,
  String? description,
  Environment? environment,
  List<FileSystemConfig>? fileSystemConfigs,
  String? handler,
  ImageConfig? imageConfig,
  String? kMSKeyArn,
  List<String>? layers,
  int? memorySize,
  String? revisionId,
  String? role,
  Runtime? runtime,
  int? timeout,
  TracingConfig? tracingConfig,
  VpcConfig? vpcConfig,
}) async {
  ArgumentError.checkNotNull(functionName, 'functionName');
  _s.validateStringLength(
    'functionName',
    functionName,
    1,
    140,
    isRequired: true,
  );
  _s.validateStringLength(
    'description',
    description,
    0,
    256,
  );
  _s.validateStringLength(
    'handler',
    handler,
    0,
    128,
  );
  _s.validateNumRange(
    'memorySize',
    memorySize,
    128,
    10240,
  );
  _s.validateNumRange(
    'timeout',
    timeout,
    1,
    1152921504606846976,
  );
  final $payload = <String, dynamic>{
    if (deadLetterConfig != null) 'DeadLetterConfig': deadLetterConfig,
    if (description != null) 'Description': description,
    if (environment != null) 'Environment': environment,
    if (fileSystemConfigs != null) 'FileSystemConfigs': fileSystemConfigs,
    if (handler != null) 'Handler': handler,
    if (imageConfig != null) 'ImageConfig': imageConfig,
    if (kMSKeyArn != null) 'KMSKeyArn': kMSKeyArn,
    if (layers != null) 'Layers': layers,
    if (memorySize != null) 'MemorySize': memorySize,
    if (revisionId != null) 'RevisionId': revisionId,
    if (role != null) 'Role': role,
    if (runtime != null) 'Runtime': runtime.toValue(),
    if (timeout != null) 'Timeout': timeout,
    if (tracingConfig != null) 'TracingConfig': tracingConfig,
    if (vpcConfig != null) 'VpcConfig': vpcConfig,
  };
  final response = await _protocol.send(
    payload: $payload,
    method: 'PUT',
    requestUri:
        '/2015-03-31/functions/${Uri.encodeComponent(functionName)}/configuration',
    exceptionFnMap: _exceptionFns,
  );
  return FunctionConfiguration.fromJson(response);
}