class Aws::ECSCredentials

def refresh

def refresh
  # Retry loading credentials up to 3 times is the instance metadata
  # service is responding but is returning invalid JSON documents
  # in response to the GET profile credentials call.
  begin
    retry_errors([JSON::ParserError, StandardError], max_retries: 3) do
      c = JSON.parse(get_credentials.to_s)
      @credentials = Credentials.new(
        c['AccessKeyId'],
        c['SecretAccessKey'],
        c['Token']
      )
      @expiration = c['Expiration'] ? Time.iso8601(c['Expiration']) : nil
    end
  rescue JSON::ParserError
    raise Aws::Errors::MetadataParserError.new
  end
end