/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace AppSync { namespace Model { /** *

A LambdaAuthorizerConfig specifies how to authorize AppSync API * access when using the AWS_LAMBDA authorizer mode. Be aware that an * AppSync API can have only one Lambda authorizer configured at a * time.

See Also:

AWS * API Reference

*/ class LambdaAuthorizerConfig { public: AWS_APPSYNC_API LambdaAuthorizerConfig(); AWS_APPSYNC_API LambdaAuthorizerConfig(Aws::Utils::Json::JsonView jsonValue); AWS_APPSYNC_API LambdaAuthorizerConfig& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_APPSYNC_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The number of seconds a response should be cached for. The default is 0 * seconds, which disables caching. If you don't specify a value for * authorizerResultTtlInSeconds, the default value is used. The * maximum value is one hour (3600 seconds). The Lambda function can override this * by returning a ttlOverride key in its response.

*/ inline int GetAuthorizerResultTtlInSeconds() const{ return m_authorizerResultTtlInSeconds; } /** *

The number of seconds a response should be cached for. The default is 0 * seconds, which disables caching. If you don't specify a value for * authorizerResultTtlInSeconds, the default value is used. The * maximum value is one hour (3600 seconds). The Lambda function can override this * by returning a ttlOverride key in its response.

*/ inline bool AuthorizerResultTtlInSecondsHasBeenSet() const { return m_authorizerResultTtlInSecondsHasBeenSet; } /** *

The number of seconds a response should be cached for. The default is 0 * seconds, which disables caching. If you don't specify a value for * authorizerResultTtlInSeconds, the default value is used. The * maximum value is one hour (3600 seconds). The Lambda function can override this * by returning a ttlOverride key in its response.

*/ inline void SetAuthorizerResultTtlInSeconds(int value) { m_authorizerResultTtlInSecondsHasBeenSet = true; m_authorizerResultTtlInSeconds = value; } /** *

The number of seconds a response should be cached for. The default is 0 * seconds, which disables caching. If you don't specify a value for * authorizerResultTtlInSeconds, the default value is used. The * maximum value is one hour (3600 seconds). The Lambda function can override this * by returning a ttlOverride key in its response.

*/ inline LambdaAuthorizerConfig& WithAuthorizerResultTtlInSeconds(int value) { SetAuthorizerResultTtlInSeconds(value); return *this;} /** *

The Amazon Resource Name (ARN) of the Lambda function to be called for * authorization. This can be a standard Lambda ARN, a version ARN * (.../v3), or an alias ARN.

Note: This Lambda * function must have the following resource-based policy assigned to it. When * configuring Lambda authorizers in the console, this is done for you. To use the * Command Line Interface (CLI), run the following:

aws lambda * add-permission --function-name * "arn:aws:lambda:us-east-2:111122223333:function:my-function" --statement-id * "appsync" --principal appsync.amazonaws.com --action * lambda:InvokeFunction

*/ inline const Aws::String& GetAuthorizerUri() const{ return m_authorizerUri; } /** *

The Amazon Resource Name (ARN) of the Lambda function to be called for * authorization. This can be a standard Lambda ARN, a version ARN * (.../v3), or an alias ARN.

Note: This Lambda * function must have the following resource-based policy assigned to it. When * configuring Lambda authorizers in the console, this is done for you. To use the * Command Line Interface (CLI), run the following:

aws lambda * add-permission --function-name * "arn:aws:lambda:us-east-2:111122223333:function:my-function" --statement-id * "appsync" --principal appsync.amazonaws.com --action * lambda:InvokeFunction

*/ inline bool AuthorizerUriHasBeenSet() const { return m_authorizerUriHasBeenSet; } /** *

The Amazon Resource Name (ARN) of the Lambda function to be called for * authorization. This can be a standard Lambda ARN, a version ARN * (.../v3), or an alias ARN.

Note: This Lambda * function must have the following resource-based policy assigned to it. When * configuring Lambda authorizers in the console, this is done for you. To use the * Command Line Interface (CLI), run the following:

aws lambda * add-permission --function-name * "arn:aws:lambda:us-east-2:111122223333:function:my-function" --statement-id * "appsync" --principal appsync.amazonaws.com --action * lambda:InvokeFunction

*/ inline void SetAuthorizerUri(const Aws::String& value) { m_authorizerUriHasBeenSet = true; m_authorizerUri = value; } /** *

The Amazon Resource Name (ARN) of the Lambda function to be called for * authorization. This can be a standard Lambda ARN, a version ARN * (.../v3), or an alias ARN.

Note: This Lambda * function must have the following resource-based policy assigned to it. When * configuring Lambda authorizers in the console, this is done for you. To use the * Command Line Interface (CLI), run the following:

aws lambda * add-permission --function-name * "arn:aws:lambda:us-east-2:111122223333:function:my-function" --statement-id * "appsync" --principal appsync.amazonaws.com --action * lambda:InvokeFunction

*/ inline void SetAuthorizerUri(Aws::String&& value) { m_authorizerUriHasBeenSet = true; m_authorizerUri = std::move(value); } /** *

The Amazon Resource Name (ARN) of the Lambda function to be called for * authorization. This can be a standard Lambda ARN, a version ARN * (.../v3), or an alias ARN.

Note: This Lambda * function must have the following resource-based policy assigned to it. When * configuring Lambda authorizers in the console, this is done for you. To use the * Command Line Interface (CLI), run the following:

aws lambda * add-permission --function-name * "arn:aws:lambda:us-east-2:111122223333:function:my-function" --statement-id * "appsync" --principal appsync.amazonaws.com --action * lambda:InvokeFunction

*/ inline void SetAuthorizerUri(const char* value) { m_authorizerUriHasBeenSet = true; m_authorizerUri.assign(value); } /** *

The Amazon Resource Name (ARN) of the Lambda function to be called for * authorization. This can be a standard Lambda ARN, a version ARN * (.../v3), or an alias ARN.

Note: This Lambda * function must have the following resource-based policy assigned to it. When * configuring Lambda authorizers in the console, this is done for you. To use the * Command Line Interface (CLI), run the following:

aws lambda * add-permission --function-name * "arn:aws:lambda:us-east-2:111122223333:function:my-function" --statement-id * "appsync" --principal appsync.amazonaws.com --action * lambda:InvokeFunction

*/ inline LambdaAuthorizerConfig& WithAuthorizerUri(const Aws::String& value) { SetAuthorizerUri(value); return *this;} /** *

The Amazon Resource Name (ARN) of the Lambda function to be called for * authorization. This can be a standard Lambda ARN, a version ARN * (.../v3), or an alias ARN.

Note: This Lambda * function must have the following resource-based policy assigned to it. When * configuring Lambda authorizers in the console, this is done for you. To use the * Command Line Interface (CLI), run the following:

aws lambda * add-permission --function-name * "arn:aws:lambda:us-east-2:111122223333:function:my-function" --statement-id * "appsync" --principal appsync.amazonaws.com --action * lambda:InvokeFunction

*/ inline LambdaAuthorizerConfig& WithAuthorizerUri(Aws::String&& value) { SetAuthorizerUri(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) of the Lambda function to be called for * authorization. This can be a standard Lambda ARN, a version ARN * (.../v3), or an alias ARN.

Note: This Lambda * function must have the following resource-based policy assigned to it. When * configuring Lambda authorizers in the console, this is done for you. To use the * Command Line Interface (CLI), run the following:

aws lambda * add-permission --function-name * "arn:aws:lambda:us-east-2:111122223333:function:my-function" --statement-id * "appsync" --principal appsync.amazonaws.com --action * lambda:InvokeFunction

*/ inline LambdaAuthorizerConfig& WithAuthorizerUri(const char* value) { SetAuthorizerUri(value); return *this;} /** *

A regular expression for validation of tokens before the Lambda function is * called.

*/ inline const Aws::String& GetIdentityValidationExpression() const{ return m_identityValidationExpression; } /** *

A regular expression for validation of tokens before the Lambda function is * called.

*/ inline bool IdentityValidationExpressionHasBeenSet() const { return m_identityValidationExpressionHasBeenSet; } /** *

A regular expression for validation of tokens before the Lambda function is * called.

*/ inline void SetIdentityValidationExpression(const Aws::String& value) { m_identityValidationExpressionHasBeenSet = true; m_identityValidationExpression = value; } /** *

A regular expression for validation of tokens before the Lambda function is * called.

*/ inline void SetIdentityValidationExpression(Aws::String&& value) { m_identityValidationExpressionHasBeenSet = true; m_identityValidationExpression = std::move(value); } /** *

A regular expression for validation of tokens before the Lambda function is * called.

*/ inline void SetIdentityValidationExpression(const char* value) { m_identityValidationExpressionHasBeenSet = true; m_identityValidationExpression.assign(value); } /** *

A regular expression for validation of tokens before the Lambda function is * called.

*/ inline LambdaAuthorizerConfig& WithIdentityValidationExpression(const Aws::String& value) { SetIdentityValidationExpression(value); return *this;} /** *

A regular expression for validation of tokens before the Lambda function is * called.

*/ inline LambdaAuthorizerConfig& WithIdentityValidationExpression(Aws::String&& value) { SetIdentityValidationExpression(std::move(value)); return *this;} /** *

A regular expression for validation of tokens before the Lambda function is * called.

*/ inline LambdaAuthorizerConfig& WithIdentityValidationExpression(const char* value) { SetIdentityValidationExpression(value); return *this;} private: int m_authorizerResultTtlInSeconds; bool m_authorizerResultTtlInSecondsHasBeenSet = false; Aws::String m_authorizerUri; bool m_authorizerUriHasBeenSet = false; Aws::String m_identityValidationExpression; bool m_identityValidationExpressionHasBeenSet = false; }; } // namespace Model } // namespace AppSync } // namespace Aws