%% WARNING: DO NOT EDIT, AUTO-GENERATED CODE!
%% See https://github.com/aws-beam/aws-codegen for more details.
%% @doc Principal. For AWS services, the principal is a domain-style
%% identifier defined by the service, like s3.amazonaws.com or
%% sns.amazonaws.com. For AWS services, you can also specify the
%% ARN of the associated resource as the SourceArn. If you grant
%% permission to a service principal without specifying the source, other
%% accounts could potentially configure resources in their account to invoke
%% your Lambda function.
%%
%% This action adds a statement to a resource-based permissions policy for
%% the function. For more information about function policies, see Lambda
%% Function Policies.
add_permission(Client, FunctionName, Input) ->
add_permission(Client, FunctionName, Input, []).
add_permission(Client, FunctionName, Input0, Options) ->
Method = post,
Path = ["/2015-03-31/functions/", http_uri:encode(FunctionName), "/policy"],
SuccessStatusCode = 201,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Creates an alias
%% for a Lambda function version. Use aliases to provide clients with a
%% function identifier that you can update to invoke a different version.
%%
%% You can also map an alias to split invocation requests between two
%% versions. Use the RoutingConfig parameter to specify a second
%% version and the percentage of invocation requests that it receives.
create_alias(Client, FunctionName, Input) ->
create_alias(Client, FunctionName, Input, []).
create_alias(Client, FunctionName, Input0, Options) ->
Method = post,
Path = ["/2015-03-31/functions/", http_uri:encode(FunctionName), "/aliases"],
SuccessStatusCode = 201,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Creates a mapping between an event source and an AWS Lambda function.
%% Lambda reads items from the event source and triggers the function.
%%
%% For details about each event source type, see the following topics.
%%
%%
BisectBatchOnFunctionError - If the function
%% returns an error, split the batch in two and retry.
%%
%% DestinationConfig - Send discarded records to an
%% Amazon SQS queue or Amazon SNS topic.
%%
%% MaximumRecordAgeInSeconds - Discard records older
%% than the specified age.
%%
%% MaximumRetryAttempts - Discard records after the
%% specified number of retries.
%%
%% ParallelizationFactor - Process multiple batches
%% from each shard concurrently.
%%
%% State, StateReason, and
%% StateReasonCode fields in the response from
%% GetFunctionConfiguration indicate when the function is ready to
%% invoke. For more information, see Function
%% States.
%%
%% A function has an unpublished version, and can have published versions and
%% aliases. The unpublished version changes when you update your function's
%% code and configuration. A published version is a snapshot of your function
%% code and configuration that can't be changed. An alias is a named resource
%% that maps to a version, and can be changed to map to a different version.
%% Use the Publish parameter to create version 1 of
%% your function from its initial configuration.
%%
%% The other parameters let you configure version-specific and function-level
%% settings. You can modify version-specific settings later with
%% UpdateFunctionConfiguration. Function-level settings apply to both
%% the unpublished and published versions of the function, and include tags
%% (TagResource) and per-function concurrency limits
%% (PutFunctionConcurrency).
%%
%% If another account or an AWS service invokes your function, use
%% AddPermission to grant permission by creating a resource-based IAM
%% policy. You can grant permissions at the function level, on a version, or
%% on an alias.
%%
%% To invoke your function directly, use Invoke. To invoke your
%% function in response to events in other AWS services, create an event
%% source mapping (CreateEventSourceMapping), or configure a function
%% trigger in the other service. For more information, see Invoking
%% Functions.
create_function(Client, Input) ->
create_function(Client, Input, []).
create_function(Client, Input0, Options) ->
Method = post,
Path = ["/2015-03-31/functions"],
SuccessStatusCode = 201,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Deletes a Lambda function alias.
delete_alias(Client, FunctionName, Name, Input) ->
delete_alias(Client, FunctionName, Name, Input, []).
delete_alias(Client, FunctionName, Name, Input0, Options) ->
Method = delete,
Path = ["/2015-03-31/functions/", http_uri:encode(FunctionName), "/aliases/", http_uri:encode(Name), ""],
SuccessStatusCode = 204,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Deletes an event
%% source mapping. You can get the identifier of a mapping from the
%% output of ListEventSourceMappings.
%%
%% When you delete an event source mapping, it enters a Deleting
%% state and might not be completely deleted for several seconds.
delete_event_source_mapping(Client, UUID, Input) ->
delete_event_source_mapping(Client, UUID, Input, []).
delete_event_source_mapping(Client, UUID, Input0, Options) ->
Method = delete,
Path = ["/2015-03-31/event-source-mappings/", http_uri:encode(UUID), ""],
SuccessStatusCode = 202,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Deletes a Lambda function. To delete a specific function version, use
%% the Qualifier parameter. Otherwise, all versions and aliases
%% are deleted.
%%
%% To delete Lambda event source mappings that invoke a function, use
%% DeleteEventSourceMapping. For AWS services and resources that
%% invoke your function directly, delete the trigger in the service where you
%% originally configured it.
delete_function(Client, FunctionName, Input) ->
delete_function(Client, FunctionName, Input, []).
delete_function(Client, FunctionName, Input0, Options) ->
Method = delete,
Path = ["/2015-03-31/functions/", http_uri:encode(FunctionName), ""],
SuccessStatusCode = 204,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Removes a concurrent execution limit from a function.
delete_function_concurrency(Client, FunctionName, Input) ->
delete_function_concurrency(Client, FunctionName, Input, []).
delete_function_concurrency(Client, FunctionName, Input0, Options) ->
Method = delete,
Path = ["/2017-10-31/functions/", http_uri:encode(FunctionName), "/concurrency"],
SuccessStatusCode = 204,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Deletes the configuration for asynchronous invocation for a function,
%% version, or alias.
%%
%% To configure options for asynchronous invocation, use
%% PutFunctionEventInvokeConfig.
delete_function_event_invoke_config(Client, FunctionName, Input) ->
delete_function_event_invoke_config(Client, FunctionName, Input, []).
delete_function_event_invoke_config(Client, FunctionName, Input0, Options) ->
Method = delete,
Path = ["/2019-09-25/functions/", http_uri:encode(FunctionName), "/event-invoke-config"],
SuccessStatusCode = 204,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Deletes a version of an AWS
%% Lambda layer. Deleted versions can no longer be viewed or added to
%% functions. To avoid breaking functions, a copy of the version remains in
%% Lambda until no functions refer to it.
delete_layer_version(Client, LayerName, VersionNumber, Input) ->
delete_layer_version(Client, LayerName, VersionNumber, Input, []).
delete_layer_version(Client, LayerName, VersionNumber, Input0, Options) ->
Method = delete,
Path = ["/2018-10-31/layers/", http_uri:encode(LayerName), "/versions/", http_uri:encode(VersionNumber), ""],
SuccessStatusCode = 204,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Deletes the provisioned concurrency configuration for a function.
delete_provisioned_concurrency_config(Client, FunctionName, Input) ->
delete_provisioned_concurrency_config(Client, FunctionName, Input, []).
delete_provisioned_concurrency_config(Client, FunctionName, Input0, Options) ->
Method = delete,
Path = ["/2019-09-30/functions/", http_uri:encode(FunctionName), "/provisioned-concurrency"],
SuccessStatusCode = 204,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Retrieves details about your account's limits
%% and usage in an AWS Region.
get_account_settings(Client)
when is_map(Client) ->
get_account_settings(Client, []).
get_account_settings(Client, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2016-08-19/account-settings"],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns details about a Lambda function alias.
get_alias(Client, FunctionName, Name)
when is_map(Client) ->
get_alias(Client, FunctionName, Name, []).
get_alias(Client, FunctionName, Name, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2015-03-31/functions/", http_uri:encode(FunctionName), "/aliases/", http_uri:encode(Name), ""],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns details about an event source mapping. You can get the
%% identifier of a mapping from the output of ListEventSourceMappings.
get_event_source_mapping(Client, UUID)
when is_map(Client) ->
get_event_source_mapping(Client, UUID, []).
get_event_source_mapping(Client, UUID, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2015-03-31/event-source-mappings/", http_uri:encode(UUID), ""],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns information about the function or function version, with a
%% link to download the deployment package that's valid for 10 minutes. If
%% you specify a function version, only details that are specific to that
%% version are returned.
get_function(Client, FunctionName)
when is_map(Client) ->
get_function(Client, FunctionName, []).
get_function(Client, FunctionName, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2015-03-31/functions/", http_uri:encode(FunctionName), ""],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns details about the reserved concurrency configuration for a
%% function. To set a concurrency limit for a function, use
%% PutFunctionConcurrency.
get_function_concurrency(Client, FunctionName)
when is_map(Client) ->
get_function_concurrency(Client, FunctionName, []).
get_function_concurrency(Client, FunctionName, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2019-09-30/functions/", http_uri:encode(FunctionName), "/concurrency"],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns the version-specific settings of a Lambda function or
%% version. The output includes only options that can vary between versions
%% of a function. To modify these settings, use
%% UpdateFunctionConfiguration.
%%
%% To get all of a function's details, including function-level settings, use
%% GetFunction.
get_function_configuration(Client, FunctionName)
when is_map(Client) ->
get_function_configuration(Client, FunctionName, []).
get_function_configuration(Client, FunctionName, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2015-03-31/functions/", http_uri:encode(FunctionName), "/configuration"],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Retrieves the configuration for asynchronous invocation for a
%% function, version, or alias.
%%
%% To configure options for asynchronous invocation, use
%% PutFunctionEventInvokeConfig.
get_function_event_invoke_config(Client, FunctionName)
when is_map(Client) ->
get_function_event_invoke_config(Client, FunctionName, []).
get_function_event_invoke_config(Client, FunctionName, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2019-09-25/functions/", http_uri:encode(FunctionName), "/event-invoke-config"],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns information about a version of an AWS
%% Lambda layer, with a link to download the layer archive that's valid
%% for 10 minutes.
get_layer_version(Client, LayerName, VersionNumber)
when is_map(Client) ->
get_layer_version(Client, LayerName, VersionNumber, []).
get_layer_version(Client, LayerName, VersionNumber, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2018-10-31/layers/", http_uri:encode(LayerName), "/versions/", http_uri:encode(VersionNumber), ""],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns information about a version of an AWS
%% Lambda layer, with a link to download the layer archive that's valid
%% for 10 minutes.
get_layer_version_by_arn(Client)
when is_map(Client) ->
get_layer_version_by_arn(Client, []).
get_layer_version_by_arn(Client, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2018-10-31/layers?find=LayerVersion"],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns the permission policy for a version of an AWS
%% Lambda layer. For more information, see
%% AddLayerVersionPermission.
get_layer_version_policy(Client, LayerName, VersionNumber)
when is_map(Client) ->
get_layer_version_policy(Client, LayerName, VersionNumber, []).
get_layer_version_policy(Client, LayerName, VersionNumber, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2018-10-31/layers/", http_uri:encode(LayerName), "/versions/", http_uri:encode(VersionNumber), "/policy"],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns the resource-based
%% IAM policy for a function, version, or alias.
get_policy(Client, FunctionName)
when is_map(Client) ->
get_policy(Client, FunctionName, []).
get_policy(Client, FunctionName, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2015-03-31/functions/", http_uri:encode(FunctionName), "/policy"],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Retrieves the provisioned concurrency configuration for a function's
%% alias or version.
get_provisioned_concurrency_config(Client, FunctionName)
when is_map(Client) ->
get_provisioned_concurrency_config(Client, FunctionName, []).
get_provisioned_concurrency_config(Client, FunctionName, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2019-09-30/functions/", http_uri:encode(FunctionName), "/provisioned-concurrency"],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Invokes a Lambda function. You can invoke a function synchronously
%% (and wait for the response), or asynchronously. To invoke a function
%% asynchronously, set InvocationType to Event.
%%
%% For synchronous
%% invocation, details about the function response, including errors, are
%% included in the response body and headers. For either invocation type, you
%% can find more information in the execution
%% log and trace.
%%
%% When an error occurs, your function may be invoked multiple times. Retry
%% behavior varies by error type, client, event source, and invocation type.
%% For example, if you invoke a function asynchronously and it returns an
%% error, Lambda executes the function up to two more times. For more
%% information, see Retry
%% Behavior.
%%
%% For asynchronous
%% invocation, Lambda adds events to a queue before sending them to your
%% function. If your function does not have enough capacity to keep up with
%% the queue, events may be lost. Occasionally, your function may receive the
%% same event multiple times, even if no error occurs. To retain events that
%% were not processed, configure your function with a dead-letter
%% queue.
%%
%% The status code in the API response doesn't reflect function errors. Error
%% codes are reserved for errors that prevent your function from executing,
%% such as permissions errors, limit
%% errors, or issues with your function's code and configuration. For
%% example, Lambda returns TooManyRequestsException if executing
%% the function would cause you to exceed a concurrency limit at either the
%% account level (ConcurrentInvocationLimitExceeded) or function
%% level (ReservedFunctionConcurrentInvocationLimitExceeded).
%%
%% For functions with a long timeout, your client might be disconnected
%% during synchronous invocation while it waits for a response. Configure
%% your HTTP client, SDK, firewall, proxy, or operating system to allow for
%% long connections with timeout or keep-alive settings.
%%
%% This operation requires permission for the lambda:InvokeFunction
%% action.
invoke(Client, FunctionName, Input) ->
invoke(Client, FunctionName, Input, []).
invoke(Client, FunctionName, Input0, Options) ->
Method = post,
Path = ["/2015-03-31/functions/", http_uri:encode(FunctionName), "/invocations"],
SuccessStatusCode = undefined,
HeadersMapping = [
{"X-Amz-Client-Context", "ClientContext"},
{"X-Amz-Invocation-Type", "InvocationType"},
{"X-Amz-Log-Type", "LogType"}
],
{Headers, Input} = aws_request:build_headers(HeadersMapping, Input0),
case request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode) of
{ok, Body0, {_, ResponseHeaders, _} = Response} ->
ResponseHeadersParams =
[
{"X-Amz-Executed-Version", "ExecutedVersion"},
{"X-Amz-Function-Error", "FunctionError"},
{"X-Amz-Log-Result", "LogResult"}
],
FoldFun = fun({Name, Key}, Acc) ->
case lists:keyfind(Name, 1, ResponseHeaders) of
false -> Acc;
{_, Value} -> Acc#{Key => Value}
end
end,
Body = lists:foldl(FoldFun, Body0, ResponseHeadersParams),
{ok, Body, Response};
Result ->
Result
end.
%% @doc EventSourceArn
%% to only show event source mappings for a single event source.
list_event_source_mappings(Client)
when is_map(Client) ->
list_event_source_mappings(Client, []).
list_event_source_mappings(Client, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2015-03-31/event-source-mappings"],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Retrieves a list of configurations for asynchronous invocation for a
%% function.
%%
%% To configure options for asynchronous invocation, use
%% PutFunctionEventInvokeConfig.
list_function_event_invoke_configs(Client, FunctionName)
when is_map(Client) ->
list_function_event_invoke_configs(Client, FunctionName, []).
list_function_event_invoke_configs(Client, FunctionName, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2019-09-25/functions/", http_uri:encode(FunctionName), "/event-invoke-config/list"],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns a list of Lambda functions, with the version-specific
%% configuration of each. Lambda returns up to 50 functions per call.
%%
%% Set FunctionVersion to ALL to include all
%% published versions of each function in addition to the unpublished
%% version. To get more information about a function or version, use
%% GetFunction.
list_functions(Client)
when is_map(Client) ->
list_functions(Client, []).
list_functions(Client, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2015-03-31/functions"],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Lists the versions of an AWS
%% Lambda layer. Versions that have been deleted aren't listed. Specify a
%% runtime
%% identifier to list only versions that indicate that they're compatible
%% with that runtime.
list_layer_versions(Client, LayerName)
when is_map(Client) ->
list_layer_versions(Client, LayerName, []).
list_layer_versions(Client, LayerName, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2018-10-31/layers/", http_uri:encode(LayerName), "/versions"],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Lists AWS
%% Lambda layers and shows information about the latest version of each.
%% Specify a runtime
%% identifier to list only layers that indicate that they're compatible
%% with that runtime.
list_layers(Client)
when is_map(Client) ->
list_layers(Client, []).
list_layers(Client, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2018-10-31/layers"],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Retrieves a list of provisioned concurrency configurations for a
%% function.
list_provisioned_concurrency_configs(Client, FunctionName)
when is_map(Client) ->
list_provisioned_concurrency_configs(Client, FunctionName, []).
list_provisioned_concurrency_configs(Client, FunctionName, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2019-09-30/functions/", http_uri:encode(FunctionName), "/provisioned-concurrency?List=ALL"],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns a function's tags.
%% You can also view tags with GetFunction.
list_tags(Client, Resource)
when is_map(Client) ->
list_tags(Client, Resource, []).
list_tags(Client, Resource, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2017-03-31/tags/", http_uri:encode(Resource), ""],
SuccessStatusCode = undefined,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns a list of versions,
%% with the version-specific configuration of each. Lambda returns up to 50
%% versions per call.
list_versions_by_function(Client, FunctionName)
when is_map(Client) ->
list_versions_by_function(Client, FunctionName, []).
list_versions_by_function(Client, FunctionName, Options)
when is_map(Client), is_list(Options) ->
Path = ["/2015-03-31/functions/", http_uri:encode(FunctionName), "/versions"],
SuccessStatusCode = 200,
Headers = [],
request(Client, get, Path, Headers, undefined, Options, SuccessStatusCode).
%% @doc Creates an AWS
%% Lambda layer from a ZIP archive. Each time you call
%% PublishLayerVersion with the same layer name, a new version
%% is created.
%%
%% Add layers to your function with CreateFunction or
%% UpdateFunctionConfiguration.
publish_layer_version(Client, LayerName, Input) ->
publish_layer_version(Client, LayerName, Input, []).
publish_layer_version(Client, LayerName, Input0, Options) ->
Method = post,
Path = ["/2018-10-31/layers/", http_uri:encode(LayerName), "/versions"],
SuccessStatusCode = 201,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Creates a version
%% from the current code and configuration of a function. Use versions to
%% create a snapshot of your function code and configuration that doesn't
%% change.
%%
%% AWS Lambda doesn't publish a version if the function's configuration and
%% code haven't changed since the last version. Use UpdateFunctionCode
%% or UpdateFunctionConfiguration to update the function before
%% publishing a version.
%%
%% Clients can invoke versions directly or with an alias. To create an alias,
%% use CreateAlias.
publish_version(Client, FunctionName, Input) ->
publish_version(Client, FunctionName, Input, []).
publish_version(Client, FunctionName, Input0, Options) ->
Method = post,
Path = ["/2015-03-31/functions/", http_uri:encode(FunctionName), "/versions"],
SuccessStatusCode = 201,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Sets the maximum number of simultaneous executions for a function,
%% and reserves capacity for that concurrency level.
%%
%% Concurrency settings apply to the function as a whole, including all
%% published versions and the unpublished version. Reserving concurrency both
%% ensures that your function has capacity to process the specified number of
%% events simultaneously, and prevents it from scaling beyond that level. Use
%% GetFunction to see the current setting for a function.
%%
%% Use GetAccountSettings to see your Regional concurrency limit. You
%% can reserve concurrency for as many functions as you like, as long as you
%% leave at least 100 simultaneous executions unreserved for functions that
%% aren't configured with a per-function limit. For more information, see Managing
%% Concurrency.
put_function_concurrency(Client, FunctionName, Input) ->
put_function_concurrency(Client, FunctionName, Input, []).
put_function_concurrency(Client, FunctionName, Input0, Options) ->
Method = put,
Path = ["/2017-10-31/functions/", http_uri:encode(FunctionName), "/concurrency"],
SuccessStatusCode = 200,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Configures options for asynchronous
%% invocation on a function, version, or alias. If a configuration
%% already exists for a function, version, or alias, this operation
%% overwrites it. If you exclude any settings, they are removed. To set one
%% option without affecting existing settings for other options, use
%% UpdateFunctionEventInvokeConfig.
%%
%% By default, Lambda retries an asynchronous invocation twice if the
%% function returns an error. It retains events in a queue for up to six
%% hours. When an event fails all processing attempts or stays in the
%% asynchronous invocation queue for too long, Lambda discards it. To retain
%% discarded events, configure a dead-letter queue with
%% UpdateFunctionConfiguration.
%%
%% To send an invocation record to a queue, topic, function, or event bus,
%% specify a destination.
%% You can configure separate destinations for successful invocations
%% (on-success) and events that fail all processing attempts (on-failure).
%% You can configure destinations in addition to or instead of a dead-letter
%% queue.
put_function_event_invoke_config(Client, FunctionName, Input) ->
put_function_event_invoke_config(Client, FunctionName, Input, []).
put_function_event_invoke_config(Client, FunctionName, Input0, Options) ->
Method = put,
Path = ["/2019-09-25/functions/", http_uri:encode(FunctionName), "/event-invoke-config"],
SuccessStatusCode = 200,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Adds a provisioned concurrency configuration to a function's alias or
%% version.
put_provisioned_concurrency_config(Client, FunctionName, Input) ->
put_provisioned_concurrency_config(Client, FunctionName, Input, []).
put_provisioned_concurrency_config(Client, FunctionName, Input0, Options) ->
Method = put,
Path = ["/2019-09-30/functions/", http_uri:encode(FunctionName), "/provisioned-concurrency"],
SuccessStatusCode = 202,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Removes a statement from the permissions policy for a version of an
%% AWS
%% Lambda layer. For more information, see
%% AddLayerVersionPermission.
remove_layer_version_permission(Client, LayerName, StatementId, VersionNumber, Input) ->
remove_layer_version_permission(Client, LayerName, StatementId, VersionNumber, Input, []).
remove_layer_version_permission(Client, LayerName, StatementId, VersionNumber, Input0, Options) ->
Method = delete,
Path = ["/2018-10-31/layers/", http_uri:encode(LayerName), "/versions/", http_uri:encode(VersionNumber), "/policy/", http_uri:encode(StatementId), ""],
SuccessStatusCode = 204,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Revokes function-use permission from an AWS service or another
%% account. You can get the ID of the statement from the output of
%% GetPolicy.
remove_permission(Client, FunctionName, StatementId, Input) ->
remove_permission(Client, FunctionName, StatementId, Input, []).
remove_permission(Client, FunctionName, StatementId, Input0, Options) ->
Method = delete,
Path = ["/2015-03-31/functions/", http_uri:encode(FunctionName), "/policy/", http_uri:encode(StatementId), ""],
SuccessStatusCode = 204,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Adds tags
%% to a function.
tag_resource(Client, Resource, Input) ->
tag_resource(Client, Resource, Input, []).
tag_resource(Client, Resource, Input0, Options) ->
Method = post,
Path = ["/2017-03-31/tags/", http_uri:encode(Resource), ""],
SuccessStatusCode = 204,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Removes tags
%% from a function.
untag_resource(Client, Resource, Input) ->
untag_resource(Client, Resource, Input, []).
untag_resource(Client, Resource, Input0, Options) ->
Method = delete,
Path = ["/2017-03-31/tags/", http_uri:encode(Resource), ""],
SuccessStatusCode = 204,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Updates the configuration of a Lambda function alias.
update_alias(Client, FunctionName, Name, Input) ->
update_alias(Client, FunctionName, Name, Input, []).
update_alias(Client, FunctionName, Name, Input0, Options) ->
Method = put,
Path = ["/2015-03-31/functions/", http_uri:encode(FunctionName), "/aliases/", http_uri:encode(Name), ""],
SuccessStatusCode = 200,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Updates an event source mapping. You can change the function that AWS
%% Lambda invokes, or pause invocation and resume later from the same
%% location.
%%
%% The following error handling options are only available for stream sources
%% (DynamoDB and Kinesis):
%%
%% BisectBatchOnFunctionError - If the function
%% returns an error, split the batch in two and retry.
%%
%% DestinationConfig - Send discarded records to an
%% Amazon SQS queue or Amazon SNS topic.
%%
%% MaximumRecordAgeInSeconds - Discard records older
%% than the specified age.
%%
%% MaximumRetryAttempts - Discard records after the
%% specified number of retries.
%%
%% ParallelizationFactor - Process multiple batches
%% from each shard concurrently.
%%
%% 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.
update_function_configuration(Client, FunctionName, Input) ->
update_function_configuration(Client, FunctionName, Input, []).
update_function_configuration(Client, FunctionName, Input0, Options) ->
Method = put,
Path = ["/2015-03-31/functions/", http_uri:encode(FunctionName), "/configuration"],
SuccessStatusCode = 200,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%% @doc Updates the configuration for asynchronous invocation for a function,
%% version, or alias.
%%
%% To configure options for asynchronous invocation, use
%% PutFunctionEventInvokeConfig.
update_function_event_invoke_config(Client, FunctionName, Input) ->
update_function_event_invoke_config(Client, FunctionName, Input, []).
update_function_event_invoke_config(Client, FunctionName, Input0, Options) ->
Method = post,
Path = ["/2019-09-25/functions/", http_uri:encode(FunctionName), "/event-invoke-config"],
SuccessStatusCode = 200,
Headers = [],
Input = Input0,
request(Client, Method, Path, Headers, Input, Options, SuccessStatusCode).
%%====================================================================
%% Internal functions
%%====================================================================
-spec request(aws_client:aws_client(), atom(), iolist(),
list(), map() | undefined, list(), pos_integer() | undefined) ->
{ok, Result, {integer(), list(), hackney:client()}} |
{error, Error, {integer(), list(), hackney:client()}} |
{error, term()} when
Result :: map() | undefined,
Error :: {binary(), binary()}.
request(Client, Method, Path, Headers0, Input, Options, SuccessStatusCode) ->
Client1 = Client#{service => <<"lambda">>},
Host = get_host(<<"lambda">>, Client1),
URL = get_url(Host, Path, Client1),
Headers1 = [
{<<"Host">>, Host},
{<<"Content-Type">>, <<"application/x-amz-json-1.1">>}
| Headers0
],
Payload = encode_payload(Input),
MethodBin = aws_request:method_to_binary(Method),
SignedHeaders = aws_request:sign_request(Client1, MethodBin, URL, Headers1, Payload),
Response = hackney:request(Method, URL, SignedHeaders, Payload, Options),
handle_response(Response, SuccessStatusCode).
handle_response({ok, StatusCode, ResponseHeaders, Client}, SuccessStatusCode)
when StatusCode =:= 200;
StatusCode =:= 202;
StatusCode =:= 204;
StatusCode =:= SuccessStatusCode ->
case hackney:body(Client) of
{ok, <<>>} when StatusCode =:= 200;
StatusCode =:= SuccessStatusCode ->
{ok, undefined, {StatusCode, ResponseHeaders, Client}};
{ok, Body} ->
Result = jsx:decode(Body, [return_maps]),
{ok, Result, {StatusCode, ResponseHeaders, Client}}
end;
handle_response({ok, StatusCode, ResponseHeaders, Client}, _) ->
{ok, Body} = hackney:body(Client),
Error = jsx:decode(Body, [return_maps]),
Reason1 = maps:get(<<"message">>, Error, undefined),
Reason2 = maps:get(<<"Message">>, Error, Reason1),
{error, Reason2, {StatusCode, ResponseHeaders, Client}};
handle_response({error, Reason}, _) ->
{error, Reason}.
get_host(_EndpointPrefix, #{region := <<"local">>}) ->
<<"localhost">>;
get_host(EndpointPrefix, #{region := Region, endpoint := Endpoint}) ->
aws_util:binary_join([EndpointPrefix, <<".">>, Region, <<".">>, Endpoint], <<"">>).
get_url(Host, Path0, Client) ->
Proto = maps:get(proto, Client),
Path = erlang:iolist_to_binary(Path0),
Port = maps:get(port, Client),
aws_util:binary_join([Proto, <<"://">>, Host, <<":">>, Port, Path], <<"">>).
-spec encode_payload(undefined | map()) -> binary().
encode_payload(undefined) ->
<<>>;
encode_payload(Input) ->
jsx:encode(Input).