Files
2026-02-28 12:32:28 -05:00

1192 lines
82 KiB
C++

/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/secretsmanager/SecretsManager_EXPORTS.h>
#include <aws/core/client/ClientConfiguration.h>
#include <aws/core/client/AWSClient.h>
#include <aws/core/client/AWSClientAsyncCRTP.h>
#include <aws/core/utils/json/JsonSerializer.h>
#include <aws/secretsmanager/SecretsManagerServiceClientModel.h>
namespace Aws
{
namespace SecretsManager
{
/**
* <fullname>Amazon Web Services Secrets Manager</fullname> <p>Amazon Web Services
* Secrets Manager provides a service to enable you to store, manage, and retrieve,
* secrets.</p> <p>This guide provides descriptions of the Secrets Manager API. For
* more information about using this service, see the <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/introduction.html">Amazon
* Web Services Secrets Manager User Guide</a>.</p> <p> <b>API Version</b> </p>
* <p>This version of the Secrets Manager API Reference documents the Secrets
* Manager API version 2017-10-17.</p> <p>For a list of endpoints, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/asm_access.html#endpoints">Amazon
* Web Services Secrets Manager endpoints</a>.</p> <p> <b>Support and Feedback for
* Amazon Web Services Secrets Manager</b> </p> <p>We welcome your feedback. Send
* your comments to <a
* href="mailto:awssecretsmanager-feedback@amazon.com">awssecretsmanager-feedback@amazon.com</a>,
* or post your feedback and questions in the <a
* href="http://forums.aws.amazon.com/forum.jspa?forumID=296">Amazon Web Services
* Secrets Manager Discussion Forum</a>. For more information about the Amazon Web
* Services Discussion Forums, see <a
* href="http://forums.aws.amazon.com/help.jspa">Forums Help</a>.</p> <p>
* <b>Logging API Requests</b> </p> <p>Amazon Web Services Secrets Manager supports
* Amazon Web Services CloudTrail, a service that records Amazon Web Services API
* calls for your Amazon Web Services account and delivers log files to an Amazon
* S3 bucket. By using information that's collected by Amazon Web Services
* CloudTrail, you can determine the requests successfully made to Secrets Manager,
* who made the request, when it was made, and so on. For more about Amazon Web
* Services Secrets Manager and support for Amazon Web Services CloudTrail, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/monitoring.html#monitoring_cloudtrail">Logging
* Amazon Web Services Secrets Manager Events with Amazon Web Services
* CloudTrail</a> in the <i>Amazon Web Services Secrets Manager User Guide</i>. To
* learn more about CloudTrail, including enabling it and find your log files, see
* the <a
* href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/what_is_cloud_trail_top_level.html">Amazon
* Web Services CloudTrail User Guide</a>.</p>
*/
class AWS_SECRETSMANAGER_API SecretsManagerClient : public Aws::Client::AWSJsonClient, public Aws::Client::ClientWithAsyncTemplateMethods<SecretsManagerClient>
{
public:
typedef Aws::Client::AWSJsonClient BASECLASS;
static const char* GetServiceName();
static const char* GetAllocationTag();
typedef SecretsManagerClientConfiguration ClientConfigurationType;
typedef SecretsManagerEndpointProvider EndpointProviderType;
/**
* Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
SecretsManagerClient(const Aws::SecretsManager::SecretsManagerClientConfiguration& clientConfiguration = Aws::SecretsManager::SecretsManagerClientConfiguration(),
std::shared_ptr<SecretsManagerEndpointProviderBase> endpointProvider = nullptr);
/**
* Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
SecretsManagerClient(const Aws::Auth::AWSCredentials& credentials,
std::shared_ptr<SecretsManagerEndpointProviderBase> endpointProvider = nullptr,
const Aws::SecretsManager::SecretsManagerClientConfiguration& clientConfiguration = Aws::SecretsManager::SecretsManagerClientConfiguration());
/**
* Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
* the default http client factory will be used
*/
SecretsManagerClient(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
std::shared_ptr<SecretsManagerEndpointProviderBase> endpointProvider = nullptr,
const Aws::SecretsManager::SecretsManagerClientConfiguration& clientConfiguration = Aws::SecretsManager::SecretsManagerClientConfiguration());
/* Legacy constructors due deprecation */
/**
* Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
SecretsManagerClient(const Aws::Client::ClientConfiguration& clientConfiguration);
/**
* Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
SecretsManagerClient(const Aws::Auth::AWSCredentials& credentials,
const Aws::Client::ClientConfiguration& clientConfiguration);
/**
* Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
* the default http client factory will be used
*/
SecretsManagerClient(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
const Aws::Client::ClientConfiguration& clientConfiguration);
/* End of legacy constructors due deprecation */
virtual ~SecretsManagerClient();
/**
* <p>Retrieves the contents of the encrypted fields <code>SecretString</code> or
* <code>SecretBinary</code> for up to 20 secrets. To retrieve a single secret,
* call <a>GetSecretValue</a>. </p> <p>To choose which secrets to retrieve, you can
* specify a list of secrets by name or ARN, or you can use filters. If Secrets
* Manager encounters errors such as <code>AccessDeniedException</code> while
* attempting to retrieve any of the secrets, you can see the errors in
* <code>Errors</code> in the response.</p> <p>Secrets Manager generates CloudTrail
* <code>GetSecretValue</code> log entries for each secret you request when you
* call this action. Do not include sensitive information in request parameters
* because it might be logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:BatchGetSecretValue</code>, and you must have
* <code>secretsmanager:GetSecretValue</code> for each secret. If you use filters,
* you must also have <code>secretsmanager:ListSecrets</code>. If the secrets are
* encrypted using customer-managed keys instead of the Amazon Web Services managed
* key <code>aws/secretsmanager</code>, then you also need <code>kms:Decrypt</code>
* permissions for the keys. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/BatchGetSecretValue">AWS
* API Reference</a></p>
*/
virtual Model::BatchGetSecretValueOutcome BatchGetSecretValue(const Model::BatchGetSecretValueRequest& request = {}) const;
/**
* A Callable wrapper for BatchGetSecretValue that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename BatchGetSecretValueRequestT = Model::BatchGetSecretValueRequest>
Model::BatchGetSecretValueOutcomeCallable BatchGetSecretValueCallable(const BatchGetSecretValueRequestT& request = {}) const
{
return SubmitCallable(&SecretsManagerClient::BatchGetSecretValue, request);
}
/**
* An Async wrapper for BatchGetSecretValue that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename BatchGetSecretValueRequestT = Model::BatchGetSecretValueRequest>
void BatchGetSecretValueAsync(const BatchGetSecretValueResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr, const BatchGetSecretValueRequestT& request = {}) const
{
return SubmitAsync(&SecretsManagerClient::BatchGetSecretValue, request, handler, context);
}
/**
* <p>Turns off automatic rotation, and if a rotation is currently in progress,
* cancels the rotation.</p> <p>If you cancel a rotation in progress, it can leave
* the <code>VersionStage</code> labels in an unexpected state. You might need to
* remove the staging label <code>AWSPENDING</code> from the partially created
* version. You also need to determine whether to roll back to the previous version
* of the secret by moving the staging label <code>AWSCURRENT</code> to the version
* that has <code>AWSPENDING</code>. To determine which version has a specific
* staging label, call <a>ListSecretVersionIds</a>. Then use
* <a>UpdateSecretVersionStage</a> to change staging labels. For more information,
* see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotate-secrets_how.html">How
* rotation works</a>.</p> <p>To turn on automatic rotation again, call
* <a>RotateSecret</a>.</p> <p>Secrets Manager generates a CloudTrail log entry
* when you call this action. Do not include sensitive information in request
* parameters because it might be logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:CancelRotateSecret</code>. For more information, see
* <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/CancelRotateSecret">AWS
* API Reference</a></p>
*/
virtual Model::CancelRotateSecretOutcome CancelRotateSecret(const Model::CancelRotateSecretRequest& request) const;
/**
* A Callable wrapper for CancelRotateSecret that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename CancelRotateSecretRequestT = Model::CancelRotateSecretRequest>
Model::CancelRotateSecretOutcomeCallable CancelRotateSecretCallable(const CancelRotateSecretRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::CancelRotateSecret, request);
}
/**
* An Async wrapper for CancelRotateSecret that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename CancelRotateSecretRequestT = Model::CancelRotateSecretRequest>
void CancelRotateSecretAsync(const CancelRotateSecretRequestT& request, const CancelRotateSecretResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::CancelRotateSecret, request, handler, context);
}
/**
* <p>Creates a new secret. A <i>secret</i> can be a password, a set of credentials
* such as a user name and password, an OAuth token, or other secret information
* that you store in an encrypted form in Secrets Manager. The secret also includes
* the connection information to access a database or other service, which Secrets
* Manager doesn't encrypt. A secret in Secrets Manager consists of both the
* protected secret data and the important information needed to manage the
* secret.</p> <p>For secrets that use <i>managed rotation</i>, you need to create
* the secret through the managing service. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/service-linked-secrets.html">Secrets
* Manager secrets managed by other Amazon Web Services services</a>. </p> <p>For
* information about creating a secret in the console, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html">Create
* a secret</a>.</p> <p>To create a secret, you can provide the secret value to be
* encrypted in either the <code>SecretString</code> parameter or the
* <code>SecretBinary</code> parameter, but not both. If you include
* <code>SecretString</code> or <code>SecretBinary</code> then Secrets Manager
* creates an initial secret version and automatically attaches the staging label
* <code>AWSCURRENT</code> to it.</p> <p>For database credentials you want to
* rotate, for Secrets Manager to be able to rotate the secret, you must make sure
* the JSON you store in the <code>SecretString</code> matches the <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_secret_json_structure.html">JSON
* structure of a database secret</a>.</p> <p>If you don't specify an KMS
* encryption key, Secrets Manager uses the Amazon Web Services managed key
* <code>aws/secretsmanager</code>. If this key doesn't already exist in your
* account, then Secrets Manager creates it for you automatically. All users and
* roles in the Amazon Web Services account automatically have access to use
* <code>aws/secretsmanager</code>. Creating <code>aws/secretsmanager</code> can
* result in a one-time significant delay in returning the result.</p> <p>If the
* secret is in a different Amazon Web Services account from the credentials
* calling the API, then you can't use <code>aws/secretsmanager</code> to encrypt
* the secret, and you must create and use a customer managed KMS key. </p>
* <p>Secrets Manager generates a CloudTrail log entry when you call this action.
* Do not include sensitive information in request parameters except
* <code>SecretBinary</code> or <code>SecretString</code> because it might be
* logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:CreateSecret</code>. If you include tags in the
* secret, you also need <code>secretsmanager:TagResource</code>. To add replica
* Regions, you must also have
* <code>secretsmanager:ReplicateSecretToRegions</code>. For more information, see
* <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p> <p>To encrypt the secret with a
* KMS key other than <code>aws/secretsmanager</code>, you need
* <code>kms:GenerateDataKey</code> and <code>kms:Decrypt</code> permission to the
* key. </p> <p>When you enter commands in a command shell, there is a
* risk of the command history being accessed or utilities having access to your
* command parameters. This is a concern if the command includes the value of a
* secret. Learn how to <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/security_cli-exposure-risks.html">Mitigate
* the risks of using command-line tools to store Secrets Manager secrets</a>.</p>
* <p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/CreateSecret">AWS
* API Reference</a></p>
*/
virtual Model::CreateSecretOutcome CreateSecret(const Model::CreateSecretRequest& request) const;
/**
* A Callable wrapper for CreateSecret that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename CreateSecretRequestT = Model::CreateSecretRequest>
Model::CreateSecretOutcomeCallable CreateSecretCallable(const CreateSecretRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::CreateSecret, request);
}
/**
* An Async wrapper for CreateSecret that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename CreateSecretRequestT = Model::CreateSecretRequest>
void CreateSecretAsync(const CreateSecretRequestT& request, const CreateSecretResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::CreateSecret, request, handler, context);
}
/**
* <p>Deletes the resource-based permission policy attached to the secret. To
* attach a policy to a secret, use <a>PutResourcePolicy</a>.</p> <p>Secrets
* Manager generates a CloudTrail log entry when you call this action. Do not
* include sensitive information in request parameters because it might be logged.
* For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:DeleteResourcePolicy</code>. For more information, see
* <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/DeleteResourcePolicy">AWS
* API Reference</a></p>
*/
virtual Model::DeleteResourcePolicyOutcome DeleteResourcePolicy(const Model::DeleteResourcePolicyRequest& request) const;
/**
* A Callable wrapper for DeleteResourcePolicy that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename DeleteResourcePolicyRequestT = Model::DeleteResourcePolicyRequest>
Model::DeleteResourcePolicyOutcomeCallable DeleteResourcePolicyCallable(const DeleteResourcePolicyRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::DeleteResourcePolicy, request);
}
/**
* An Async wrapper for DeleteResourcePolicy that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename DeleteResourcePolicyRequestT = Model::DeleteResourcePolicyRequest>
void DeleteResourcePolicyAsync(const DeleteResourcePolicyRequestT& request, const DeleteResourcePolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::DeleteResourcePolicy, request, handler, context);
}
/**
* <p>Deletes a secret and all of its versions. You can specify a recovery window
* during which you can restore the secret. The minimum recovery window is 7 days.
* The default recovery window is 30 days. Secrets Manager attaches a
* <code>DeletionDate</code> stamp to the secret that specifies the end of the
* recovery window. At the end of the recovery window, Secrets Manager deletes the
* secret permanently.</p> <p>You can't delete a primary secret that is replicated
* to other Regions. You must first delete the replicas using
* <a>RemoveRegionsFromReplication</a>, and then delete the primary secret. When
* you delete a replica, it is deleted immediately.</p> <p>You can't directly
* delete a version of a secret. Instead, you remove all staging labels from the
* version using <a>UpdateSecretVersionStage</a>. This marks the version as
* deprecated, and then Secrets Manager can automatically delete the version in the
* background.</p> <p>To determine whether an application still uses a secret, you
* can create an Amazon CloudWatch alarm to alert you to any attempts to access a
* secret during the recovery window. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/monitoring_cloudwatch_deleted-secrets.html">
* Monitor secrets scheduled for deletion</a>.</p> <p>Secrets Manager performs the
* permanent secret deletion at the end of the waiting period as a background task
* with low priority. There is no guarantee of a specific time after the recovery
* window for the permanent delete to occur.</p> <p>At any time before recovery
* window ends, you can use <a>RestoreSecret</a> to remove the
* <code>DeletionDate</code> and cancel the deletion of the secret.</p> <p>When a
* secret is scheduled for deletion, you cannot retrieve the secret value. You must
* first cancel the deletion with <a>RestoreSecret</a> and then you can retrieve
* the secret.</p> <p>Secrets Manager generates a CloudTrail log entry when you
* call this action. Do not include sensitive information in request parameters
* because it might be logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:DeleteSecret</code>. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/DeleteSecret">AWS
* API Reference</a></p>
*/
virtual Model::DeleteSecretOutcome DeleteSecret(const Model::DeleteSecretRequest& request) const;
/**
* A Callable wrapper for DeleteSecret that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename DeleteSecretRequestT = Model::DeleteSecretRequest>
Model::DeleteSecretOutcomeCallable DeleteSecretCallable(const DeleteSecretRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::DeleteSecret, request);
}
/**
* An Async wrapper for DeleteSecret that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename DeleteSecretRequestT = Model::DeleteSecretRequest>
void DeleteSecretAsync(const DeleteSecretRequestT& request, const DeleteSecretResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::DeleteSecret, request, handler, context);
}
/**
* <p>Retrieves the details of a secret. It does not include the encrypted secret
* value. Secrets Manager only returns fields that have a value in the response.
* </p> <p>Secrets Manager generates a CloudTrail log entry when you call this
* action. Do not include sensitive information in request parameters because it
* might be logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:DescribeSecret</code>. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/DescribeSecret">AWS
* API Reference</a></p>
*/
virtual Model::DescribeSecretOutcome DescribeSecret(const Model::DescribeSecretRequest& request) const;
/**
* A Callable wrapper for DescribeSecret that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename DescribeSecretRequestT = Model::DescribeSecretRequest>
Model::DescribeSecretOutcomeCallable DescribeSecretCallable(const DescribeSecretRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::DescribeSecret, request);
}
/**
* An Async wrapper for DescribeSecret that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename DescribeSecretRequestT = Model::DescribeSecretRequest>
void DescribeSecretAsync(const DescribeSecretRequestT& request, const DescribeSecretResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::DescribeSecret, request, handler, context);
}
/**
* <p>Generates a random password. We recommend that you specify the maximum length
* and include every character type that the system you are generating a password
* for can support. By default, Secrets Manager uses uppercase and lowercase
* letters, numbers, and the following characters in passwords:
* <code>!\"#$%&amp;'()*+,-./:;&lt;=&gt;?@[\\]^_`{|}~</code> </p> <p>Secrets
* Manager generates a CloudTrail log entry when you call this action.</p> <p>
* <b>Required permissions: </b> <code>secretsmanager:GetRandomPassword</code>. For
* more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/GetRandomPassword">AWS
* API Reference</a></p>
*/
virtual Model::GetRandomPasswordOutcome GetRandomPassword(const Model::GetRandomPasswordRequest& request = {}) const;
/**
* A Callable wrapper for GetRandomPassword that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename GetRandomPasswordRequestT = Model::GetRandomPasswordRequest>
Model::GetRandomPasswordOutcomeCallable GetRandomPasswordCallable(const GetRandomPasswordRequestT& request = {}) const
{
return SubmitCallable(&SecretsManagerClient::GetRandomPassword, request);
}
/**
* An Async wrapper for GetRandomPassword that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename GetRandomPasswordRequestT = Model::GetRandomPasswordRequest>
void GetRandomPasswordAsync(const GetRandomPasswordResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr, const GetRandomPasswordRequestT& request = {}) const
{
return SubmitAsync(&SecretsManagerClient::GetRandomPassword, request, handler, context);
}
/**
* <p>Retrieves the JSON text of the resource-based policy document attached to the
* secret. For more information about permissions policies attached to a secret,
* see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-policies.html">Permissions
* policies attached to a secret</a>.</p> <p>Secrets Manager generates a CloudTrail
* log entry when you call this action. Do not include sensitive information in
* request parameters because it might be logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:GetResourcePolicy</code>. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/GetResourcePolicy">AWS
* API Reference</a></p>
*/
virtual Model::GetResourcePolicyOutcome GetResourcePolicy(const Model::GetResourcePolicyRequest& request) const;
/**
* A Callable wrapper for GetResourcePolicy that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename GetResourcePolicyRequestT = Model::GetResourcePolicyRequest>
Model::GetResourcePolicyOutcomeCallable GetResourcePolicyCallable(const GetResourcePolicyRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::GetResourcePolicy, request);
}
/**
* An Async wrapper for GetResourcePolicy that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename GetResourcePolicyRequestT = Model::GetResourcePolicyRequest>
void GetResourcePolicyAsync(const GetResourcePolicyRequestT& request, const GetResourcePolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::GetResourcePolicy, request, handler, context);
}
/**
* <p>Retrieves the contents of the encrypted fields <code>SecretString</code> or
* <code>SecretBinary</code> from the specified version of a secret, whichever
* contains content.</p> <p>To retrieve the values for a group of secrets, call
* <a>BatchGetSecretValue</a>.</p> <p>We recommend that you cache your secret
* values by using client-side caching. Caching secrets improves speed and reduces
* your costs. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets.html">Cache
* secrets for your applications</a>.</p> <p>To retrieve the previous version of a
* secret, use <code>VersionStage</code> and specify AWSPREVIOUS. To revert to the
* previous version of a secret, call <a
* href="https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/update-secret-version-stage.html">UpdateSecretVersionStage</a>.</p>
* <p>Secrets Manager generates a CloudTrail log entry when you call this action.
* Do not include sensitive information in request parameters because it might be
* logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:GetSecretValue</code>. If the secret is encrypted
* using a customer-managed key instead of the Amazon Web Services managed key
* <code>aws/secretsmanager</code>, then you also need <code>kms:Decrypt</code>
* permissions for that key. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/GetSecretValue">AWS
* API Reference</a></p>
*/
virtual Model::GetSecretValueOutcome GetSecretValue(const Model::GetSecretValueRequest& request) const;
/**
* A Callable wrapper for GetSecretValue that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename GetSecretValueRequestT = Model::GetSecretValueRequest>
Model::GetSecretValueOutcomeCallable GetSecretValueCallable(const GetSecretValueRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::GetSecretValue, request);
}
/**
* An Async wrapper for GetSecretValue that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename GetSecretValueRequestT = Model::GetSecretValueRequest>
void GetSecretValueAsync(const GetSecretValueRequestT& request, const GetSecretValueResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::GetSecretValue, request, handler, context);
}
/**
* <p>Lists the versions of a secret. Secrets Manager uses staging labels to
* indicate the different versions of a secret. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html#term_version">
* Secrets Manager concepts: Versions</a>.</p> <p>To list the secrets in the
* account, use <a>ListSecrets</a>.</p> <p>Secrets Manager generates a CloudTrail
* log entry when you call this action. Do not include sensitive information in
* request parameters because it might be logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:ListSecretVersionIds</code>. For more information, see
* <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/ListSecretVersionIds">AWS
* API Reference</a></p>
*/
virtual Model::ListSecretVersionIdsOutcome ListSecretVersionIds(const Model::ListSecretVersionIdsRequest& request) const;
/**
* A Callable wrapper for ListSecretVersionIds that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename ListSecretVersionIdsRequestT = Model::ListSecretVersionIdsRequest>
Model::ListSecretVersionIdsOutcomeCallable ListSecretVersionIdsCallable(const ListSecretVersionIdsRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::ListSecretVersionIds, request);
}
/**
* An Async wrapper for ListSecretVersionIds that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename ListSecretVersionIdsRequestT = Model::ListSecretVersionIdsRequest>
void ListSecretVersionIdsAsync(const ListSecretVersionIdsRequestT& request, const ListSecretVersionIdsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::ListSecretVersionIds, request, handler, context);
}
/**
* <p>Lists the secrets that are stored by Secrets Manager in the Amazon Web
* Services account, not including secrets that are marked for deletion. To see
* secrets marked for deletion, use the Secrets Manager console.</p> <p>All Secrets
* Manager operations are eventually consistent. ListSecrets might not reflect
* changes from the last five minutes. You can get more recent information for a
* specific secret by calling <a>DescribeSecret</a>.</p> <p>To list the versions of
* a secret, use <a>ListSecretVersionIds</a>.</p> <p>To retrieve the values for the
* secrets, call <a>BatchGetSecretValue</a> or <a>GetSecretValue</a>.</p> <p>For
* information about finding secrets in the console, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_search-secret.html">Find
* secrets in Secrets Manager</a>.</p> <p>Secrets Manager generates a CloudTrail
* log entry when you call this action. Do not include sensitive information in
* request parameters because it might be logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:ListSecrets</code>. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/ListSecrets">AWS
* API Reference</a></p>
*/
virtual Model::ListSecretsOutcome ListSecrets(const Model::ListSecretsRequest& request = {}) const;
/**
* A Callable wrapper for ListSecrets that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename ListSecretsRequestT = Model::ListSecretsRequest>
Model::ListSecretsOutcomeCallable ListSecretsCallable(const ListSecretsRequestT& request = {}) const
{
return SubmitCallable(&SecretsManagerClient::ListSecrets, request);
}
/**
* An Async wrapper for ListSecrets that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename ListSecretsRequestT = Model::ListSecretsRequest>
void ListSecretsAsync(const ListSecretsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr, const ListSecretsRequestT& request = {}) const
{
return SubmitAsync(&SecretsManagerClient::ListSecrets, request, handler, context);
}
/**
* <p>Attaches a resource-based permission policy to a secret. A resource-based
* policy is optional. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control for Secrets Manager</a> </p> <p>For information about
* attaching a policy in the console, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-based-policies.html">Attach
* a permissions policy to a secret</a>.</p> <p>Secrets Manager generates a
* CloudTrail log entry when you call this action. Do not include sensitive
* information in request parameters because it might be logged. For more
* information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:PutResourcePolicy</code>. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/PutResourcePolicy">AWS
* API Reference</a></p>
*/
virtual Model::PutResourcePolicyOutcome PutResourcePolicy(const Model::PutResourcePolicyRequest& request) const;
/**
* A Callable wrapper for PutResourcePolicy that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename PutResourcePolicyRequestT = Model::PutResourcePolicyRequest>
Model::PutResourcePolicyOutcomeCallable PutResourcePolicyCallable(const PutResourcePolicyRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::PutResourcePolicy, request);
}
/**
* An Async wrapper for PutResourcePolicy that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename PutResourcePolicyRequestT = Model::PutResourcePolicyRequest>
void PutResourcePolicyAsync(const PutResourcePolicyRequestT& request, const PutResourcePolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::PutResourcePolicy, request, handler, context);
}
/**
* <p>Creates a new version with a new encrypted secret value and attaches it to
* the secret. The version can contain a new <code>SecretString</code> value or a
* new <code>SecretBinary</code> value. </p> <p>We recommend you avoid calling
* <code>PutSecretValue</code> at a sustained rate of more than once every 10
* minutes. When you update the secret value, Secrets Manager creates a new version
* of the secret. Secrets Manager removes outdated versions when there are more
* than 100, but it does not remove versions created less than 24 hours ago. If you
* call <code>PutSecretValue</code> more than once every 10 minutes, you create
* more versions than Secrets Manager removes, and you will reach the quota for
* secret versions.</p> <p>You can specify the staging labels to attach to the new
* version in <code>VersionStages</code>. If you don't include
* <code>VersionStages</code>, then Secrets Manager automatically moves the staging
* label <code>AWSCURRENT</code> to this version. If this operation creates the
* first version for the secret, then Secrets Manager automatically attaches the
* staging label <code>AWSCURRENT</code> to it. If this operation moves the staging
* label <code>AWSCURRENT</code> from another version to this version, then Secrets
* Manager also automatically moves the staging label <code>AWSPREVIOUS</code> to
* the version that <code>AWSCURRENT</code> was removed from.</p> <p>This operation
* is idempotent. If you call this operation with a <code>ClientRequestToken</code>
* that matches an existing version's VersionId, and you specify the same secret
* data, the operation succeeds but does nothing. However, if the secret data is
* different, then the operation fails because you can't modify an existing
* version; you can only create new ones.</p> <p>Secrets Manager generates a
* CloudTrail log entry when you call this action. Do not include sensitive
* information in request parameters except <code>SecretBinary</code>,
* <code>SecretString</code>, or <code>RotationToken</code> because it might be
* logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:PutSecretValue</code>. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p> <p>When you enter
* commands in a command shell, there is a risk of the command history being
* accessed or utilities having access to your command parameters. This is a
* concern if the command includes the value of a secret. Learn how to <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/security_cli-exposure-risks.html">Mitigate
* the risks of using command-line tools to store Secrets Manager secrets</a>.</p>
* <p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/PutSecretValue">AWS
* API Reference</a></p>
*/
virtual Model::PutSecretValueOutcome PutSecretValue(const Model::PutSecretValueRequest& request) const;
/**
* A Callable wrapper for PutSecretValue that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename PutSecretValueRequestT = Model::PutSecretValueRequest>
Model::PutSecretValueOutcomeCallable PutSecretValueCallable(const PutSecretValueRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::PutSecretValue, request);
}
/**
* An Async wrapper for PutSecretValue that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename PutSecretValueRequestT = Model::PutSecretValueRequest>
void PutSecretValueAsync(const PutSecretValueRequestT& request, const PutSecretValueResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::PutSecretValue, request, handler, context);
}
/**
* <p>For a secret that is replicated to other Regions, deletes the secret replicas
* from the Regions you specify.</p> <p>Secrets Manager generates a CloudTrail log
* entry when you call this action. Do not include sensitive information in request
* parameters because it might be logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:RemoveRegionsFromReplication</code>. For more
* information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/RemoveRegionsFromReplication">AWS
* API Reference</a></p>
*/
virtual Model::RemoveRegionsFromReplicationOutcome RemoveRegionsFromReplication(const Model::RemoveRegionsFromReplicationRequest& request) const;
/**
* A Callable wrapper for RemoveRegionsFromReplication that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename RemoveRegionsFromReplicationRequestT = Model::RemoveRegionsFromReplicationRequest>
Model::RemoveRegionsFromReplicationOutcomeCallable RemoveRegionsFromReplicationCallable(const RemoveRegionsFromReplicationRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::RemoveRegionsFromReplication, request);
}
/**
* An Async wrapper for RemoveRegionsFromReplication that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename RemoveRegionsFromReplicationRequestT = Model::RemoveRegionsFromReplicationRequest>
void RemoveRegionsFromReplicationAsync(const RemoveRegionsFromReplicationRequestT& request, const RemoveRegionsFromReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::RemoveRegionsFromReplication, request, handler, context);
}
/**
* <p>Replicates the secret to a new Regions. See <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/create-manage-multi-region-secrets.html">Multi-Region
* secrets</a>.</p> <p>Secrets Manager generates a CloudTrail log entry when you
* call this action. Do not include sensitive information in request parameters
* because it might be logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:ReplicateSecretToRegions</code>. If the primary secret
* is encrypted with a KMS key other than <code>aws/secretsmanager</code>, you also
* need <code>kms:Decrypt</code> permission to the key. To encrypt the replicated
* secret with a KMS key other than <code>aws/secretsmanager</code>, you need
* <code>kms:GenerateDataKey</code> and <code>kms:Encrypt</code> to the key. For
* more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/ReplicateSecretToRegions">AWS
* API Reference</a></p>
*/
virtual Model::ReplicateSecretToRegionsOutcome ReplicateSecretToRegions(const Model::ReplicateSecretToRegionsRequest& request) const;
/**
* A Callable wrapper for ReplicateSecretToRegions that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename ReplicateSecretToRegionsRequestT = Model::ReplicateSecretToRegionsRequest>
Model::ReplicateSecretToRegionsOutcomeCallable ReplicateSecretToRegionsCallable(const ReplicateSecretToRegionsRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::ReplicateSecretToRegions, request);
}
/**
* An Async wrapper for ReplicateSecretToRegions that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename ReplicateSecretToRegionsRequestT = Model::ReplicateSecretToRegionsRequest>
void ReplicateSecretToRegionsAsync(const ReplicateSecretToRegionsRequestT& request, const ReplicateSecretToRegionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::ReplicateSecretToRegions, request, handler, context);
}
/**
* <p>Cancels the scheduled deletion of a secret by removing the
* <code>DeletedDate</code> time stamp. You can access a secret again after it has
* been restored.</p> <p>Secrets Manager generates a CloudTrail log entry when you
* call this action. Do not include sensitive information in request parameters
* because it might be logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:RestoreSecret</code>. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/RestoreSecret">AWS
* API Reference</a></p>
*/
virtual Model::RestoreSecretOutcome RestoreSecret(const Model::RestoreSecretRequest& request) const;
/**
* A Callable wrapper for RestoreSecret that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename RestoreSecretRequestT = Model::RestoreSecretRequest>
Model::RestoreSecretOutcomeCallable RestoreSecretCallable(const RestoreSecretRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::RestoreSecret, request);
}
/**
* An Async wrapper for RestoreSecret that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename RestoreSecretRequestT = Model::RestoreSecretRequest>
void RestoreSecretAsync(const RestoreSecretRequestT& request, const RestoreSecretResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::RestoreSecret, request, handler, context);
}
/**
* <p>Configures and starts the asynchronous process of rotating the secret. For
* information about rotation, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html">Rotate
* secrets</a> in the <i>Secrets Manager User Guide</i>. If you include the
* configuration parameters, the operation sets the values for the secret and then
* immediately starts a rotation. If you don't include the configuration
* parameters, the operation starts a rotation with the values already stored in
* the secret. </p> <p>When rotation is successful, the <code>AWSPENDING</code>
* staging label might be attached to the same version as the
* <code>AWSCURRENT</code> version, or it might not be attached to any version. If
* the <code>AWSPENDING</code> staging label is present but not attached to the
* same version as <code>AWSCURRENT</code>, then any later invocation of
* <code>RotateSecret</code> assumes that a previous rotation request is still in
* progress and returns an error. When rotation is unsuccessful, the
* <code>AWSPENDING</code> staging label might be attached to an empty secret
* version. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/troubleshoot_rotation.html">Troubleshoot
* rotation</a> in the <i>Secrets Manager User Guide</i>.</p> <p>Secrets Manager
* generates a CloudTrail log entry when you call this action. Do not include
* sensitive information in request parameters because it might be logged. For more
* information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:RotateSecret</code>. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. You also need
* <code>lambda:InvokeFunction</code> permissions on the rotation function. For
* more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets-required-permissions-function.html">
* Permissions for rotation</a>.</p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/RotateSecret">AWS
* API Reference</a></p>
*/
virtual Model::RotateSecretOutcome RotateSecret(const Model::RotateSecretRequest& request) const;
/**
* A Callable wrapper for RotateSecret that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename RotateSecretRequestT = Model::RotateSecretRequest>
Model::RotateSecretOutcomeCallable RotateSecretCallable(const RotateSecretRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::RotateSecret, request);
}
/**
* An Async wrapper for RotateSecret that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename RotateSecretRequestT = Model::RotateSecretRequest>
void RotateSecretAsync(const RotateSecretRequestT& request, const RotateSecretResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::RotateSecret, request, handler, context);
}
/**
* <p>Removes the link between the replica secret and the primary secret and
* promotes the replica to a primary secret in the replica Region.</p> <p>You must
* call this operation from the Region in which you want to promote the replica to
* a primary secret.</p> <p>Secrets Manager generates a CloudTrail log entry when
* you call this action. Do not include sensitive information in request parameters
* because it might be logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:StopReplicationToReplica</code>. For more information,
* see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/StopReplicationToReplica">AWS
* API Reference</a></p>
*/
virtual Model::StopReplicationToReplicaOutcome StopReplicationToReplica(const Model::StopReplicationToReplicaRequest& request) const;
/**
* A Callable wrapper for StopReplicationToReplica that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename StopReplicationToReplicaRequestT = Model::StopReplicationToReplicaRequest>
Model::StopReplicationToReplicaOutcomeCallable StopReplicationToReplicaCallable(const StopReplicationToReplicaRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::StopReplicationToReplica, request);
}
/**
* An Async wrapper for StopReplicationToReplica that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename StopReplicationToReplicaRequestT = Model::StopReplicationToReplicaRequest>
void StopReplicationToReplicaAsync(const StopReplicationToReplicaRequestT& request, const StopReplicationToReplicaResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::StopReplicationToReplica, request, handler, context);
}
/**
* <p>Attaches tags to a secret. Tags consist of a key name and a value. Tags are
* part of the secret's metadata. They are not associated with specific versions of
* the secret. This operation appends tags to the existing list of tags.</p> <p>For
* tag quotas and naming restrictions, see <a
* href="https://docs.aws.amazon.com/general/latest/gr/arg.html#taged-reference-quotas">Service
* quotas for Tagging</a> in the <i>Amazon Web Services General Reference
* guide</i>.</p> <p>If you use tags as part of your security strategy,
* then adding or removing a tag can change permissions. If successfully completing
* this operation would result in you losing your permissions for this secret, then
* the operation is blocked and returns an Access Denied error.</p>
* <p>Secrets Manager generates a CloudTrail log entry when you call this action.
* Do not include sensitive information in request parameters because it might be
* logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:TagResource</code>. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/TagResource">AWS
* API Reference</a></p>
*/
virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const;
/**
* A Callable wrapper for TagResource that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename TagResourceRequestT = Model::TagResourceRequest>
Model::TagResourceOutcomeCallable TagResourceCallable(const TagResourceRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::TagResource, request);
}
/**
* An Async wrapper for TagResource that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename TagResourceRequestT = Model::TagResourceRequest>
void TagResourceAsync(const TagResourceRequestT& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::TagResource, request, handler, context);
}
/**
* <p>Removes specific tags from a secret.</p> <p>This operation is idempotent. If
* a requested tag is not attached to the secret, no error is returned and the
* secret metadata is unchanged.</p> <p>If you use tags as part of your
* security strategy, then removing a tag can change permissions. If successfully
* completing this operation would result in you losing your permissions for this
* secret, then the operation is blocked and returns an Access Denied error.</p>
* <p>Secrets Manager generates a CloudTrail log entry when you call
* this action. Do not include sensitive information in request parameters because
* it might be logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:UntagResource</code>. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/UntagResource">AWS
* API Reference</a></p>
*/
virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const;
/**
* A Callable wrapper for UntagResource that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename UntagResourceRequestT = Model::UntagResourceRequest>
Model::UntagResourceOutcomeCallable UntagResourceCallable(const UntagResourceRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::UntagResource, request);
}
/**
* An Async wrapper for UntagResource that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename UntagResourceRequestT = Model::UntagResourceRequest>
void UntagResourceAsync(const UntagResourceRequestT& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::UntagResource, request, handler, context);
}
/**
* <p>Modifies the details of a secret, including metadata and the secret value. To
* change the secret value, you can also use <a>PutSecretValue</a>.</p> <p>To
* change the rotation configuration of a secret, use <a>RotateSecret</a>
* instead.</p> <p>To change a secret so that it is managed by another service, you
* need to recreate the secret in that service. See <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/service-linked-secrets.html">Secrets
* Manager secrets managed by other Amazon Web Services services</a>.</p> <p>We
* recommend you avoid calling <code>UpdateSecret</code> at a sustained rate of
* more than once every 10 minutes. When you call <code>UpdateSecret</code> to
* update the secret value, Secrets Manager creates a new version of the secret.
* Secrets Manager removes outdated versions when there are more than 100, but it
* does not remove versions created less than 24 hours ago. If you update the
* secret value more than once every 10 minutes, you create more versions than
* Secrets Manager removes, and you will reach the quota for secret versions.</p>
* <p>If you include <code>SecretString</code> or <code>SecretBinary</code> to
* create a new secret version, Secrets Manager automatically moves the staging
* label <code>AWSCURRENT</code> to the new version. Then it attaches the label
* <code>AWSPREVIOUS</code> to the version that <code>AWSCURRENT</code> was removed
* from.</p> <p>If you call this operation with a <code>ClientRequestToken</code>
* that matches an existing version's <code>VersionId</code>, the operation results
* in an error. You can't modify an existing version, you can only create a new
* version. To remove a version, remove all staging labels from it. See
* <a>UpdateSecretVersionStage</a>.</p> <p>Secrets Manager generates a CloudTrail
* log entry when you call this action. Do not include sensitive information in
* request parameters except <code>SecretBinary</code> or <code>SecretString</code>
* because it might be logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:UpdateSecret</code>. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. If you use a customer managed key,
* you must also have <code>kms:GenerateDataKey</code>, <code>kms:Encrypt</code>,
* and <code>kms:Decrypt</code> permissions on the key. If you change the KMS key
* and you don't have <code>kms:Encrypt</code> permission to the new key, Secrets
* Manager does not re-encrypt existing secret versions with the new key. For more
* information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html">
* Secret encryption and decryption</a>.</p> <p>When you enter commands
* in a command shell, there is a risk of the command history being accessed or
* utilities having access to your command parameters. This is a concern if the
* command includes the value of a secret. Learn how to <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/security_cli-exposure-risks.html">Mitigate
* the risks of using command-line tools to store Secrets Manager secrets</a>.</p>
* <p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/UpdateSecret">AWS
* API Reference</a></p>
*/
virtual Model::UpdateSecretOutcome UpdateSecret(const Model::UpdateSecretRequest& request) const;
/**
* A Callable wrapper for UpdateSecret that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename UpdateSecretRequestT = Model::UpdateSecretRequest>
Model::UpdateSecretOutcomeCallable UpdateSecretCallable(const UpdateSecretRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::UpdateSecret, request);
}
/**
* An Async wrapper for UpdateSecret that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename UpdateSecretRequestT = Model::UpdateSecretRequest>
void UpdateSecretAsync(const UpdateSecretRequestT& request, const UpdateSecretResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::UpdateSecret, request, handler, context);
}
/**
* <p>Modifies the staging labels attached to a version of a secret. Secrets
* Manager uses staging labels to track a version as it progresses through the
* secret rotation process. Each staging label can be attached to only one version
* at a time. To add a staging label to a version when it is already attached to
* another version, Secrets Manager first removes it from the other version first
* and then attaches it to this one. For more information about versions and
* staging labels, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html#term_version">Concepts:
* Version</a>. </p> <p>The staging labels that you specify in the
* <code>VersionStage</code> parameter are added to the existing list of staging
* labels for the version. </p> <p>You can move the <code>AWSCURRENT</code> staging
* label to this version by including it in this call.</p> <p>Whenever you
* move <code>AWSCURRENT</code>, Secrets Manager automatically moves the label
* <code>AWSPREVIOUS</code> to the version that <code>AWSCURRENT</code> was removed
* from.</p> <p>If this action results in the last label being removed from
* a version, then the version is considered to be 'deprecated' and can be deleted
* by Secrets Manager.</p> <p>Secrets Manager generates a CloudTrail log entry when
* you call this action. Do not include sensitive information in request parameters
* because it might be logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:UpdateSecretVersionStage</code>. For more information,
* see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/UpdateSecretVersionStage">AWS
* API Reference</a></p>
*/
virtual Model::UpdateSecretVersionStageOutcome UpdateSecretVersionStage(const Model::UpdateSecretVersionStageRequest& request) const;
/**
* A Callable wrapper for UpdateSecretVersionStage that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename UpdateSecretVersionStageRequestT = Model::UpdateSecretVersionStageRequest>
Model::UpdateSecretVersionStageOutcomeCallable UpdateSecretVersionStageCallable(const UpdateSecretVersionStageRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::UpdateSecretVersionStage, request);
}
/**
* An Async wrapper for UpdateSecretVersionStage that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename UpdateSecretVersionStageRequestT = Model::UpdateSecretVersionStageRequest>
void UpdateSecretVersionStageAsync(const UpdateSecretVersionStageRequestT& request, const UpdateSecretVersionStageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::UpdateSecretVersionStage, request, handler, context);
}
/**
* <p>Validates that a resource policy does not grant a wide range of principals
* access to your secret. A resource-based policy is optional for secrets.</p>
* <p>The API performs three checks when validating the policy:</p> <ul> <li>
* <p>Sends a call to <a
* href="https://aws.amazon.com/blogs/security/protect-sensitive-data-in-the-cloud-with-automated-reasoning-zelkova/">Zelkova</a>,
* an automated reasoning engine, to ensure your resource policy does not allow
* broad access to your secret, for example policies that use a wildcard for the
* principal.</p> </li> <li> <p>Checks for correct syntax in a policy.</p> </li>
* <li> <p>Verifies the policy does not lock out a caller.</p> </li> </ul>
* <p>Secrets Manager generates a CloudTrail log entry when you call this action.
* Do not include sensitive information in request parameters because it might be
* logged. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieve-ct-entries.html">Logging
* Secrets Manager events with CloudTrail</a>.</p> <p> <b>Required permissions:
* </b> <code>secretsmanager:ValidateResourcePolicy</code> and
* <code>secretsmanager:PutResourcePolicy</code>. For more information, see <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions">
* IAM policy actions for Secrets Manager</a> and <a
* href="https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html">Authentication
* and access control in Secrets Manager</a>. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/ValidateResourcePolicy">AWS
* API Reference</a></p>
*/
virtual Model::ValidateResourcePolicyOutcome ValidateResourcePolicy(const Model::ValidateResourcePolicyRequest& request) const;
/**
* A Callable wrapper for ValidateResourcePolicy that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template<typename ValidateResourcePolicyRequestT = Model::ValidateResourcePolicyRequest>
Model::ValidateResourcePolicyOutcomeCallable ValidateResourcePolicyCallable(const ValidateResourcePolicyRequestT& request) const
{
return SubmitCallable(&SecretsManagerClient::ValidateResourcePolicy, request);
}
/**
* An Async wrapper for ValidateResourcePolicy that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template<typename ValidateResourcePolicyRequestT = Model::ValidateResourcePolicyRequest>
void ValidateResourcePolicyAsync(const ValidateResourcePolicyRequestT& request, const ValidateResourcePolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
{
return SubmitAsync(&SecretsManagerClient::ValidateResourcePolicy, request, handler, context);
}
void OverrideEndpoint(const Aws::String& endpoint);
std::shared_ptr<SecretsManagerEndpointProviderBase>& accessEndpointProvider();
private:
friend class Aws::Client::ClientWithAsyncTemplateMethods<SecretsManagerClient>;
void init(const SecretsManagerClientConfiguration& clientConfiguration);
SecretsManagerClientConfiguration m_clientConfiguration;
std::shared_ptr<SecretsManagerEndpointProviderBase> m_endpointProvider;
};
} // namespace SecretsManager
} // namespace Aws