

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Primeros pasos con el AWS SDK para Ruby
<a name="getting-started"></a>

Aprenda a instalar, configurar y usar el SDK para crear una aplicación de Ruby para acceder a un AWS recurso mediante programación.

**Topics**
+ [Autenticarse con AWS](credentials.md)
+ [Instalación del SDK](setup-install.md)
+ [Creación de una aplicación simple](hello.md)

# Autenticación con AWS AWS SDK for Ruby
<a name="credentials"></a>

Debes establecer cómo se autentica tu código AWS al desarrollar con Servicios de AWSél. Puedes configurar el acceso programático a AWS los recursos de diferentes maneras en función del entorno y del AWS acceso del que dispongas. 

Para elegir el método de autenticación y configurarlo para el SDK, consulte [Autenticación y acceso](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) en la *Guía de referencia sobre herramientas AWS SDKs y herramientas*. 

## Uso de credenciales de consola
<a name="using-con-creds"></a>

Para el desarrollo local, recomendamos que los nuevos usuarios utilicen sus credenciales de inicio de sesión AWS de Management Console existentes para acceder a AWS los servicios mediante programación. Tras la autenticación basada en el navegador, AWS genera credenciales temporales que funcionan con herramientas de desarrollo locales, como la interfaz de línea de AWS comandos (AWS CLI) y el AWS SDK for Ruby.

Si elige este método, siga las instrucciones [para iniciar sesión para el desarrollo AWS local con las credenciales de la consola mediante la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sign-in.html).

El AWS SDK para Ruby no necesita añadir gemas adicionales (por ejemplo`aws-sdk-signin`) a tu aplicación para usar el inicio de sesión con credenciales de consola.

## Uso de la autenticación del Centro de Identidad de IAM
<a name="using-iam-auth"></a>

Si elige este método, complete el procedimiento de [autenticación del Centro de Identidad de IAM](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html) que se indica en la Guía de *referencia de herramientas AWS SDKs y herramientas*. Una vez completado, el entorno debe contener los siguientes elementos:
+ El AWS CLI, que se utiliza para iniciar una sesión en el portal de AWS acceso antes de ejecutar la aplicación.
+ Un [archivo `config` compartido de AWS](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) que tiene un perfil `[default]` con un conjunto de valores de configuración a los que se puede hacer referencia desde el SDK. Para encontrar la ubicación de este archivo, consulte [Ubicación de los archivos compartidos](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html) en la *Guía de referencia de AWS SDKs and Tools*.
+  El archivo compartido de `config` establece la configuración de [https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html](https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html). Esto establece el valor predeterminado Región de AWS que el SDK usa para AWS las solicitudes. Esta región se usa para las solicitudes de servicio del SDK que no tienen especificadas una región. 
+  El SDK utiliza la [configuración de proveedor de token de SSO](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sso-credentials.html#feature-sso-credentials-profile) del perfil para adquirir las credenciales antes de enviar las solicitudes a AWS. El `sso_role_name` valor, que es un rol de IAM conectado a un conjunto de permisos del Centro de Identidad de IAM, permite el acceso a los Servicios de AWS utilizados en la aplicación.

  El siguiente archivo `config` de ejemplo muestra la configuración de un perfil predeterminado con el proveedor de token de SSO. La configuración `sso_session` del perfil hace referencia a la [sección llamada `sso-session`](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#section-session). La `sso-session` sección contiene la configuración para iniciar una sesión en el portal de AWS acceso.

  ```
  [default]
  sso_session = my-sso
  sso_account_id = 111122223333
  sso_role_name = SampleRole
  region = us-east-1
  output = json
  
  [sso-session my-sso]
  sso_region = us-east-1
  sso_start_url = https://provided-domain.awsapps.com/start
  sso_registration_scopes = sso:account:access
  ```

El AWS SDK para Ruby no necesita añadir gemas adicionales (como `aws-sdk-sso` y`aws-sdk-ssooidc`) a la aplicación para utilizar la autenticación del IAM Identity Center.

### Inicie una sesión en el portal de AWS acceso
<a name="accessportal"></a>

Antes de ejecutar una aplicación para acceder Servicios de AWS, necesita una sesión activa en el portal de AWS acceso para que el SDK utilice la autenticación del IAM Identity Center a fin de resolver las credenciales. En función de la duración de las sesiones configuradas, el acceso terminará por caducar y SDK detectará un error de autenticación. Para iniciar sesión en el portal de AWS acceso, ejecute el siguiente comando en. AWS CLI

```
aws sso login
```

Si sigue la guía y utiliza una configuración de perfil predeterminada, no necesita llamar al comando con una opción `--profile`. Si la configuración del proveedor de token de SSO utiliza un perfil con nombre, el comando es `aws sso login --profile named-profile`.

Para comprobar si ya tiene una sesión activa, ejecute el siguiente comando de AWS CLI.

```
aws sts get-caller-identity
```

Si su sesión está activa, la respuesta a este comando debe indicar la cuenta y el conjunto de permisos del Centro de identidades de IAM configurados en el archivo `config` compartido.

**nota**  
Si ya tiene una sesión activa en el portal de AWS acceso y la ejecuta`aws sso login`, no tendrá que proporcionar credenciales.   
Es posible que el proceso de inicio de sesión le pida que permita el AWS CLI acceso a sus datos. Como AWS CLI se basa en el SDK para Python, los mensajes de permiso pueden contener variaciones del `botocore` nombre.

## Información adicional de autenticación
<a name="credother"></a>

Los usuarios humanos, que también reciben el nombre de *identidades humanas*, son las personas, los administradores, los desarrolladores, los operadores y los consumidores de las aplicaciones. Deben tener una identidad para acceder a sus AWS entornos y aplicaciones. Los usuarios humanos que son miembros de su organización (es decir, usted, el desarrollador) se conocen como *identidades de personal*. 

Utilice credenciales temporales al acceder AWS. Puedes usar un proveedor de identidad para que tus usuarios humanos proporcionen acceso federado a AWS las cuentas asumiendo funciones, que proporcionan credenciales temporales. Si desea administrar el acceso de manera centralizada, se recomienda utilizar (IAM Identity Center) para administrar el acceso a las cuentas y los permisos de esas cuentas. Para obtener más alternativas, consulte lo siguiente:
+ Para obtener más información sobre las prácticas recomendadas, consulte [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.
+ Para crear AWS credenciales de corta duración, consulte [Credenciales de seguridad temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) en la Guía del *usuario de IAM*.
+ Para obtener más información sobre la cadena de proveedores de credenciales de AWS SDK for Ruby y cómo el SDK intenta utilizar automáticamente diferentes métodos de autenticación en una secuencia, consulte[Cadena de proveedores de credenciales](credential-providers.md#credchain). 
+ Para ver los ajustes de configuración del proveedor de credenciales del AWS SDK, consulta los [proveedores de credenciales estandarizados](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html) en la Guía de referencia de *herramientas AWS SDKs y herramientas*.

# Instalación del AWS SDK para Ruby
<a name="setup-install"></a>

Esta sección incluye los requisitos previos y las instrucciones de instalación de AWS SDK para Ruby.

## Requisitos previos
<a name="aws-ruby-sdk-prerequisites"></a>

Antes de usar el AWS SDK para Ruby, debes autenticarte con AWS. Para obtener información acerca de la configuración de la autenticación, consulte [Autenticación con AWS AWS SDK for Ruby](credentials.md).

## Instalación del SDK
<a name="installing-the-sdk"></a>

Puedes instalar el AWS SDK para Ruby como lo harías con cualquier gema de Ruby. Las gemas están disponibles en [RubyGems](https://rubygems.org/gems/aws-sdk/). El AWS SDK for Ruby está diseñado para ser modular y está separado por Servicio de AWS. La instalación de toda la gema `aws-sdk` es larga y puede llevar más de una hora. 

Te recomendamos que instales únicamente las gemas Servicios de AWS que utilices. Se denominan como `aws-sdk-service_abbreviation` y la lista completa se encuentra en la tabla de [servicios compatibles](https://github.com/aws/aws-sdk-ruby/#supported-services) del archivo README de AWS SDK for Ruby. Por ejemplo, la gema para interactuar con el servicio Amazon S3 está disponible directamente en [https://rubygems.org/gems/aws-sdk-s3](https://rubygems.org/gems/aws-sdk-s3).

### Administrador de versiones de Ruby
<a name="installing-rvm"></a>

En lugar de usar el Ruby del sistema, recomendamos usar un administrador de versiones de Ruby como el siguiente: 
+ [RVM](http://rvm.io/)
+ [chruby](https://github.com/postmodern/chruby)
+ [rbenv](https://github.com/rbenv/rbenv)

Por ejemplo, si utilizas un sistema operativo Amazon Linux 2, puedes usar los siguientes comandos para actualizar RVM, enumerar las versiones de Ruby disponibles y, a continuación, elegir la versión que quieres usar para el desarrollo con el AWS SDK para Ruby. La versión mínima de Ruby requerida es 2.5.

```
$ rvm get head
$ rvm list known
$ rvm install ruby-3.1.3
$ rvm --default use 3.1.3
```

### Bundler
<a name="bundler"></a>

 Si utilizas [Bundler](http://bundler.io/), los siguientes comandos instalan la gema AWS SDK for Ruby para Amazon S3:

1. Instale Bundler y cree el archivo `Gemfile`:

   ```
   $ gem install bundler
   $ bundle init
   ```

1. Abre la gema creada `Gemfile` y añade una `gem` línea para cada gema AWS de servicio que vaya a utilizar tu código. Para seguir con el ejemplo de Amazon S3, agregue la siguiente línea de texto al final del archivo:

   ```
   gem "aws-sdk-s3"
   ```

1. Guarde el archivo Gemfile.

1. Instale las dependencias especificadas en su archivo `Gemfile`:

   ```
   $ bundle install
   ```

# Crear una aplicación sencilla con el AWS SDK for Ruby
<a name="hello"></a>

Da la bienvenida a Amazon S3 con el AWS SDK for Ruby. En el siguiente ejemplo se muestra una lista de sus buckets de Amazon S3.

## Escritura del código
<a name="aws-ruby-sdk-hello-world-code"></a>

Copie y pegue el siguiente código en un nuevo archivo de origen. Nombre el archivo `hello-s3.rb`.

```
require 'aws-sdk-s3'

# Wraps Amazon S3 resource actions.
class BucketListWrapper
  attr_reader :s3_resource

  # @param s3_resource [Aws::S3::Resource] An Amazon S3 resource.
  def initialize(s3_resource)
    @s3_resource = s3_resource
  end

  # Lists buckets for the current account.
  #
  # @param count [Integer] The maximum number of buckets to list.
  def list_buckets(count)
    puts 'Found these buckets:'
    @s3_resource.buckets.each do |bucket|
      puts "\t#{bucket.name}"
      count -= 1
      break if count.zero?
    end
    true
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't list buckets. Here's why: #{e.message}"
    false
  end
end

# Example usage:
def run_demo
  wrapper = BucketListWrapper.new(Aws::S3::Resource.new)
  wrapper.list_buckets(25)
end

run_demo if $PROGRAM_NAME == __FILE__
```

AWS El SDK for Ruby está diseñado para ser modular y está separado por Servicio de AWS. Una vez instalada la gema, la instrucción de `require` que aparece en la parte superior del archivo fuente de Ruby importa las clases y los métodos del SDK de AWS para el servicio Amazon S3. Para obtener una lista completa de las gemas de AWS servicio disponibles, consulta la tabla de [servicios compatibles](https://github.com/aws/aws-sdk-ruby/#supported-services) del archivo README de AWS SDK for Ruby.

```
require 'aws-sdk-s3'
```

## Ejecución del programa
<a name="aws-ruby-sdk-hello-world-running"></a>

Abra un comando para ejecutar su programa Ruby. La sintaxis de comando habitual para ejecutar un programa Ruby es: 

```
ruby [source filename] [arguments...]
```

Este ejemplo de código no utiliza argumentos. Para ejecutar este código, introduzca el siguiente comando del sistema: 

```
$ ruby hello-s3.rb
```

## Nota para usuarios de Windows
<a name="aws-ruby-sdk-quick-start-windows"></a>

Cuando utiliza certificados SSL en Windows y ejecuta el código Ruby, podría ver un error similar al siguiente.

```
C:\Ruby>ruby buckets.rb
C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:921:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (Seahorse::Client::NetworkingError)
         from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:921:in `block in connect'

         from C:/Ruby200-x64/lib/ruby/2.0.0/timeout.rb:66:in `timeout'
         from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:921:in `connect'
         from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:862:in `do_start'
         from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:857:in `start'
...
```

Para solucionar este problema, añade la siguiente línea a tu archivo fuente de Ruby, en algún lugar antes de la primera AWS llamada.

```
Aws.use_bundled_cert!
```

Tenga en cuenta que si solo utiliza la gema `aws-sdk-s3` en su programa de Ruby, también tendrá que añadir la gema `aws-sdk-core` para utilizar el certificado agrupado.

## Siguientes pasos
<a name="aws-ruby-sdk-hello-world-next-steps"></a>

Para probar muchas otras operaciones de Amazon S3, consulte el [repositorio de ejemplos de AWS código](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/ruby/example_code//s3) en GitHub.