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

The metadata options for the instance.

See Also:

AWS * API Reference

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

The state of the metadata option changes.

The following states are * possible:

  • pending - The metadata options are * being updated. The instance is not yet ready to process metadata traffic with * the new selection.

  • applied - The metadata * options have been successfully applied to the instance.

*/ inline const InstanceMetadataState& GetState() const{ return m_state; } /** *

The state of the metadata option changes.

The following states are * possible:

  • pending - The metadata options are * being updated. The instance is not yet ready to process metadata traffic with * the new selection.

  • applied - The metadata * options have been successfully applied to the instance.

*/ inline bool StateHasBeenSet() const { return m_stateHasBeenSet; } /** *

The state of the metadata option changes.

The following states are * possible:

  • pending - The metadata options are * being updated. The instance is not yet ready to process metadata traffic with * the new selection.

  • applied - The metadata * options have been successfully applied to the instance.

*/ inline void SetState(const InstanceMetadataState& value) { m_stateHasBeenSet = true; m_state = value; } /** *

The state of the metadata option changes.

The following states are * possible:

  • pending - The metadata options are * being updated. The instance is not yet ready to process metadata traffic with * the new selection.

  • applied - The metadata * options have been successfully applied to the instance.

*/ inline void SetState(InstanceMetadataState&& value) { m_stateHasBeenSet = true; m_state = std::move(value); } /** *

The state of the metadata option changes.

The following states are * possible:

  • pending - The metadata options are * being updated. The instance is not yet ready to process metadata traffic with * the new selection.

  • applied - The metadata * options have been successfully applied to the instance.

*/ inline InstanceMetadataOptions& WithState(const InstanceMetadataState& value) { SetState(value); return *this;} /** *

The state of the metadata option changes.

The following states are * possible:

  • pending - The metadata options are * being updated. The instance is not yet ready to process metadata traffic with * the new selection.

  • applied - The metadata * options have been successfully applied to the instance.

*/ inline InstanceMetadataOptions& WithState(InstanceMetadataState&& value) { SetState(std::move(value)); return *this;} /** *

The state of token usage for your instance metadata requests.

If the * state is optional, you can choose whether to retrieve instance * metadata with a signed token header on your request. If you retrieve the IAM * role credentials without a token, the version 1.0 role credentials are returned. * If you retrieve the IAM role credentials by using a valid signed token, the * version 2.0 role credentials are returned.

If the state is * required, you must send a signed token header with all instance * metadata retrieval requests. In this state, retrieving the IAM role credential * always returns the version 2.0 credentials. The version 1.0 credentials are not * available.

Not all instance blueprints in Lightsail support * version 2.0 credentials. Use the MetadataNoToken instance metric to * track the number of calls to the instance metadata service that are using * version 1.0 credentials. For more information, see Viewing * instance metrics in Amazon Lightsail in the Amazon Lightsail Developer * Guide.

*/ inline const HttpTokens& GetHttpTokens() const{ return m_httpTokens; } /** *

The state of token usage for your instance metadata requests.

If the * state is optional, you can choose whether to retrieve instance * metadata with a signed token header on your request. If you retrieve the IAM * role credentials without a token, the version 1.0 role credentials are returned. * If you retrieve the IAM role credentials by using a valid signed token, the * version 2.0 role credentials are returned.

If the state is * required, you must send a signed token header with all instance * metadata retrieval requests. In this state, retrieving the IAM role credential * always returns the version 2.0 credentials. The version 1.0 credentials are not * available.

Not all instance blueprints in Lightsail support * version 2.0 credentials. Use the MetadataNoToken instance metric to * track the number of calls to the instance metadata service that are using * version 1.0 credentials. For more information, see Viewing * instance metrics in Amazon Lightsail in the Amazon Lightsail Developer * Guide.

*/ inline bool HttpTokensHasBeenSet() const { return m_httpTokensHasBeenSet; } /** *

The state of token usage for your instance metadata requests.

If the * state is optional, you can choose whether to retrieve instance * metadata with a signed token header on your request. If you retrieve the IAM * role credentials without a token, the version 1.0 role credentials are returned. * If you retrieve the IAM role credentials by using a valid signed token, the * version 2.0 role credentials are returned.

If the state is * required, you must send a signed token header with all instance * metadata retrieval requests. In this state, retrieving the IAM role credential * always returns the version 2.0 credentials. The version 1.0 credentials are not * available.

Not all instance blueprints in Lightsail support * version 2.0 credentials. Use the MetadataNoToken instance metric to * track the number of calls to the instance metadata service that are using * version 1.0 credentials. For more information, see Viewing * instance metrics in Amazon Lightsail in the Amazon Lightsail Developer * Guide.

*/ inline void SetHttpTokens(const HttpTokens& value) { m_httpTokensHasBeenSet = true; m_httpTokens = value; } /** *

The state of token usage for your instance metadata requests.

If the * state is optional, you can choose whether to retrieve instance * metadata with a signed token header on your request. If you retrieve the IAM * role credentials without a token, the version 1.0 role credentials are returned. * If you retrieve the IAM role credentials by using a valid signed token, the * version 2.0 role credentials are returned.

If the state is * required, you must send a signed token header with all instance * metadata retrieval requests. In this state, retrieving the IAM role credential * always returns the version 2.0 credentials. The version 1.0 credentials are not * available.

Not all instance blueprints in Lightsail support * version 2.0 credentials. Use the MetadataNoToken instance metric to * track the number of calls to the instance metadata service that are using * version 1.0 credentials. For more information, see Viewing * instance metrics in Amazon Lightsail in the Amazon Lightsail Developer * Guide.

*/ inline void SetHttpTokens(HttpTokens&& value) { m_httpTokensHasBeenSet = true; m_httpTokens = std::move(value); } /** *

The state of token usage for your instance metadata requests.

If the * state is optional, you can choose whether to retrieve instance * metadata with a signed token header on your request. If you retrieve the IAM * role credentials without a token, the version 1.0 role credentials are returned. * If you retrieve the IAM role credentials by using a valid signed token, the * version 2.0 role credentials are returned.

If the state is * required, you must send a signed token header with all instance * metadata retrieval requests. In this state, retrieving the IAM role credential * always returns the version 2.0 credentials. The version 1.0 credentials are not * available.

Not all instance blueprints in Lightsail support * version 2.0 credentials. Use the MetadataNoToken instance metric to * track the number of calls to the instance metadata service that are using * version 1.0 credentials. For more information, see Viewing * instance metrics in Amazon Lightsail in the Amazon Lightsail Developer * Guide.

*/ inline InstanceMetadataOptions& WithHttpTokens(const HttpTokens& value) { SetHttpTokens(value); return *this;} /** *

The state of token usage for your instance metadata requests.

If the * state is optional, you can choose whether to retrieve instance * metadata with a signed token header on your request. If you retrieve the IAM * role credentials without a token, the version 1.0 role credentials are returned. * If you retrieve the IAM role credentials by using a valid signed token, the * version 2.0 role credentials are returned.

If the state is * required, you must send a signed token header with all instance * metadata retrieval requests. In this state, retrieving the IAM role credential * always returns the version 2.0 credentials. The version 1.0 credentials are not * available.

Not all instance blueprints in Lightsail support * version 2.0 credentials. Use the MetadataNoToken instance metric to * track the number of calls to the instance metadata service that are using * version 1.0 credentials. For more information, see Viewing * instance metrics in Amazon Lightsail in the Amazon Lightsail Developer * Guide.

*/ inline InstanceMetadataOptions& WithHttpTokens(HttpTokens&& value) { SetHttpTokens(std::move(value)); return *this;} /** *

Indicates whether the HTTP metadata endpoint on your instances is enabled or * disabled.

If the value is disabled, you cannot access your * instance metadata.

*/ inline const HttpEndpoint& GetHttpEndpoint() const{ return m_httpEndpoint; } /** *

Indicates whether the HTTP metadata endpoint on your instances is enabled or * disabled.

If the value is disabled, you cannot access your * instance metadata.

*/ inline bool HttpEndpointHasBeenSet() const { return m_httpEndpointHasBeenSet; } /** *

Indicates whether the HTTP metadata endpoint on your instances is enabled or * disabled.

If the value is disabled, you cannot access your * instance metadata.

*/ inline void SetHttpEndpoint(const HttpEndpoint& value) { m_httpEndpointHasBeenSet = true; m_httpEndpoint = value; } /** *

Indicates whether the HTTP metadata endpoint on your instances is enabled or * disabled.

If the value is disabled, you cannot access your * instance metadata.

*/ inline void SetHttpEndpoint(HttpEndpoint&& value) { m_httpEndpointHasBeenSet = true; m_httpEndpoint = std::move(value); } /** *

Indicates whether the HTTP metadata endpoint on your instances is enabled or * disabled.

If the value is disabled, you cannot access your * instance metadata.

*/ inline InstanceMetadataOptions& WithHttpEndpoint(const HttpEndpoint& value) { SetHttpEndpoint(value); return *this;} /** *

Indicates whether the HTTP metadata endpoint on your instances is enabled or * disabled.

If the value is disabled, you cannot access your * instance metadata.

*/ inline InstanceMetadataOptions& WithHttpEndpoint(HttpEndpoint&& value) { SetHttpEndpoint(std::move(value)); return *this;} /** *

The desired HTTP PUT response hop limit for instance metadata requests. A * larger number means that the instance metadata requests can travel farther.

*/ inline int GetHttpPutResponseHopLimit() const{ return m_httpPutResponseHopLimit; } /** *

The desired HTTP PUT response hop limit for instance metadata requests. A * larger number means that the instance metadata requests can travel farther.

*/ inline bool HttpPutResponseHopLimitHasBeenSet() const { return m_httpPutResponseHopLimitHasBeenSet; } /** *

The desired HTTP PUT response hop limit for instance metadata requests. A * larger number means that the instance metadata requests can travel farther.

*/ inline void SetHttpPutResponseHopLimit(int value) { m_httpPutResponseHopLimitHasBeenSet = true; m_httpPutResponseHopLimit = value; } /** *

The desired HTTP PUT response hop limit for instance metadata requests. A * larger number means that the instance metadata requests can travel farther.

*/ inline InstanceMetadataOptions& WithHttpPutResponseHopLimit(int value) { SetHttpPutResponseHopLimit(value); return *this;} /** *

Indicates whether the IPv6 endpoint for the instance metadata service is * enabled or disabled.

*/ inline const HttpProtocolIpv6& GetHttpProtocolIpv6() const{ return m_httpProtocolIpv6; } /** *

Indicates whether the IPv6 endpoint for the instance metadata service is * enabled or disabled.

*/ inline bool HttpProtocolIpv6HasBeenSet() const { return m_httpProtocolIpv6HasBeenSet; } /** *

Indicates whether the IPv6 endpoint for the instance metadata service is * enabled or disabled.

*/ inline void SetHttpProtocolIpv6(const HttpProtocolIpv6& value) { m_httpProtocolIpv6HasBeenSet = true; m_httpProtocolIpv6 = value; } /** *

Indicates whether the IPv6 endpoint for the instance metadata service is * enabled or disabled.

*/ inline void SetHttpProtocolIpv6(HttpProtocolIpv6&& value) { m_httpProtocolIpv6HasBeenSet = true; m_httpProtocolIpv6 = std::move(value); } /** *

Indicates whether the IPv6 endpoint for the instance metadata service is * enabled or disabled.

*/ inline InstanceMetadataOptions& WithHttpProtocolIpv6(const HttpProtocolIpv6& value) { SetHttpProtocolIpv6(value); return *this;} /** *

Indicates whether the IPv6 endpoint for the instance metadata service is * enabled or disabled.

*/ inline InstanceMetadataOptions& WithHttpProtocolIpv6(HttpProtocolIpv6&& value) { SetHttpProtocolIpv6(std::move(value)); return *this;} private: InstanceMetadataState m_state; bool m_stateHasBeenSet = false; HttpTokens m_httpTokens; bool m_httpTokensHasBeenSet = false; HttpEndpoint m_httpEndpoint; bool m_httpEndpointHasBeenSet = false; int m_httpPutResponseHopLimit; bool m_httpPutResponseHopLimitHasBeenSet = false; HttpProtocolIpv6 m_httpProtocolIpv6; bool m_httpProtocolIpv6HasBeenSet = false; }; } // namespace Model } // namespace Lightsail } // namespace Aws