Class: Aws::InstanceProfileCredentials

Inherits:
Object
  • Object
show all
Includes:
CredentialProvider, RefreshingCredentials
Defined in:
gems/aws-sdk-core/lib/aws-sdk-core/instance_profile_credentials.rb

Overview

An auto-refreshing credential provider that loads credentials from EC2 instances.

instance_credentials = Aws::InstanceProfileCredentials.new ec2 = Aws::EC2::Client.new(credentials: instance_credentials) 

Retries

When initialized from the default credential chain, this provider defaults to 0 retries. Breakdown of retries is as follows:

  • Configurable retries (defaults to 1): these retries handle errors when communicating with the IMDS endpoint. There are two separate retry mechanisms within the provider:
    • Entire token fetch and credential retrieval process
    • Token fetching
  • JSON parsing retries: Fixed at 3 attempts to handle cases when IMDS returns malformed JSON responses. These retries are separate from configurable retries.

Constant Summary

Constants included from RefreshingCredentials

RefreshingCredentials::ASYNC_EXPIRATION_LENGTH, RefreshingCredentials::CLIENT_EXCLUDE_OPTIONS, RefreshingCredentials::SYNC_EXPIRATION_LENGTH

Instance Attribute Summary collapse

Attributes included from CredentialProvider

#credentials, #expiration

Instance Method Summary collapse

Methods included from RefreshingCredentials

#credentials, #refresh!

Methods included from CredentialProvider

#set?

Constructor Details

#initialize(options = {}) ⇒ InstanceProfileCredentials

Returns a new instance of InstanceProfileCredentials.

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :retries (Integer) — default: 1

    Number of times to retry when retrieving credentials.

  • :backoff (Numeric, Proc)

    By default, failures are retried with exponential back-off, i.e. lambda { |num_failures| sleep(1.2 ** num_failures) }. You can pass a number of seconds to sleep between failed attempts, or a Proc that accepts the number of failures.

  • :endpoint (String) — default: 'http://169.254.169.254'

    The IMDS endpoint. This option has precedence over the :endpoint_mode.

  • :endpoint_mode (String) — default: 'IPv4'

    The endpoint mode for the instance metadata service. This is either 'IPv4' (169.254.169.254) or IPv6' ([fd00:ec2::254]).

  • :disable_imds_v1 (Boolean) — default: false

    Disable the use of the legacy EC2 Metadata Service v1.

  • :ip_address (String) — default: '169.254.169.254'

    Deprecated. Use :endpoint instead. The IP address for the endpoint.

  • :port (Integer) — default: 80
  • :http_open_timeout (Float) — default: 1
  • :http_read_timeout (Float) — default: 1
  • :http_debug_output (IO) — default: nil

    HTTP wire traces are sent to this object. You can specify something like $stdout.

  • :token_ttl (Integer) — default: 21600

    Time-to-Live in seconds for EC2 Metadata Token used for fetching Metadata Profile Credentials.

  • :before_refresh (Proc)

    A Proc called before credentials are refreshed. :before_refresh is called with an instance of this object when AWS credentials are required and need to be refreshed.

 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
# File 'gems/aws-sdk-core/lib/aws-sdk-core/instance_profile_credentials.rb', line 89 def initialize(options = {}) @backoff = resolve_backoff(options[:backoff]) @disable_imds_v1 = resolve_disable_v1(options) @endpoint = resolve_endpoint(options) @http_open_timeout = options[:http_open_timeout] || 1 @http_read_timeout = options[:http_read_timeout] || 1 @http_debug_output = options[:http_debug_output] @port = options[:port] || 80 @retries = options[:retries] || 1 @token_ttl = options[:token_ttl] || 21_600 @async_refresh = false @imds_v1_fallback = false @no_refresh_until = nil @token = nil @metrics = ['CREDENTIALS_IMDS'] super end

Instance Attribute Details

#backoffProc (readonly)

Returns:

  • (Proc)
 118 119 120
# File 'gems/aws-sdk-core/lib/aws-sdk-core/instance_profile_credentials.rb', line 118 def backoff @backoff end

#disable_imds_v1Boolean (readonly)

Returns:

  • (Boolean)
 109 110 111
# File 'gems/aws-sdk-core/lib/aws-sdk-core/instance_profile_credentials.rb', line 109 def disable_imds_v1 @disable_imds_v1 end

#endpointString (readonly)

Returns:

  • (String)
 121 122 123
# File 'gems/aws-sdk-core/lib/aws-sdk-core/instance_profile_credentials.rb', line 121 def endpoint @endpoint end

#http_debug_outputIO? (readonly)

Returns:

  • (IO, nil)
 133 134 135
# File 'gems/aws-sdk-core/lib/aws-sdk-core/instance_profile_credentials.rb', line 133 def http_debug_output @http_debug_output end

#http_open_timeoutInteger (readonly)

Returns:

  • (Integer)
 127 128 129
# File 'gems/aws-sdk-core/lib/aws-sdk-core/instance_profile_credentials.rb', line 127 def http_open_timeout @http_open_timeout end

#http_read_timeoutInteger (readonly)

Returns:

  • (Integer)
 130 131 132
# File 'gems/aws-sdk-core/lib/aws-sdk-core/instance_profile_credentials.rb', line 130 def http_read_timeout @http_read_timeout end

#portInteger (readonly)

Returns:

  • (Integer)
 124 125 126
# File 'gems/aws-sdk-core/lib/aws-sdk-core/instance_profile_credentials.rb', line 124 def port @port end

#retriesInteger (readonly)

Returns:

  • (Integer)
 115 116 117
# File 'gems/aws-sdk-core/lib/aws-sdk-core/instance_profile_credentials.rb', line 115 def retries @retries end

#token_ttlInteger (readonly)

Returns:

  • (Integer)
 112 113 114
# File 'gems/aws-sdk-core/lib/aws-sdk-core/instance_profile_credentials.rb', line 112 def token_ttl @token_ttl end