Configuración y uso de SFTP conectores - AWS Transfer Family

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.

Configuración y uso de SFTP conectores

El propósito de un conector es establecer una relación entre su AWS almacenamiento y el SFTP servidor de un socio. Puede enviar archivos desde Amazon S3 a un destino externo propiedad de un socio. También puede usar un SFTP conector para recuperar archivos del SFTP servidor de un socio.

En este tutorial se muestra cómo configurar un SFTP conector y, a continuación, transferir archivos entre el almacenamiento de Amazon S3 y un SFTP servidor.

Un SFTP conector recupera SFTP las credenciales AWS Secrets Manager para autenticarse en un SFTP servidor remoto y establecer una conexión. El conector envía o recupera archivos del servidor remoto y los almacena en Amazon S3. Se utiliza un IAM rol para permitir el acceso al bucket de Amazon S3 y a las credenciales almacenadas en Secrets Manager. Y puedes iniciar sesión en Amazon CloudWatch.

Un diagrama de arquitectura que muestra cómo el SFTP conector interactúa con Secrets Manager, Amazon S3, CloudWatch los registros, las IAM funciones y el SFTP servidor remoto.

Paso 1: Crear los recursos de apoyo necesarios

Puede utilizar SFTP conectores para copiar archivos entre Amazon S3 y cualquier SFTP servidor remoto. Para este tutorial, utilizamos un AWS Transfer Family servidor como SFTP servidor remoto. Necesitamos crear y configurar los siguientes recursos:

Creación de buckets de Amazon S3

Creación de un bucket de Amazon S3
  1. Inicie sesión en la AWS Transfer Family consola en https://console.aws.amazon.com/s3/.

  2. Elija una región e introduzca un nombre.

    Para este tutorial, nuestro cubo está US East (N. Virginia) us-east-1 incluido y el nombre essftp-server-storage-east.

  3. Acepta los valores predeterminados y selecciona Crear depósito.

Para obtener información completa sobre la creación de buckets de Amazon S3, consulte ¿Cómo creo un bucket de S3? en la Guía del usuario de Amazon Simple Storage Service.

Cree un IAM rol con los permisos necesarios

Para el rol de acceso, cree una política con los siguientes permisos.

El siguiente ejemplo concede los permisos necesarios para acceder al DOC-EXAMPLE-BUCKET en Amazon S3 y el secreto especificado almacenado en Secrets Manager.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" }, { "Sid": "GetConnectorSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:region:account-id:secret:aws/transfer/SecretName-6RandomCharacters" } ] }

Sustituya los artículos de la siguiente manera:

  • En DOC-EXAMPLE-BUCKET, que utiliza el tutorials3-storage-east.

  • En region, el tutorial usaus-east-1.

  • En account-id, usa tu Cuenta de AWS ID.

  • En SecretName-6RandomCharacters, estamos a using sftp-connector1 favor del nombre (tendrás tus propios seis caracteres aleatorios para tu secreto).

También debes asegurarte de que esta función contenga una relación de confianza que permita al conector acceder a tus recursos cuando atienda las solicitudes de transferencia de los usuarios. Para obtener más información sobre cómo establecer una relación de confianza, consulte Para establecer una relación de confianza.

nota

Para ver los detalles del rol que vamos a usar en el tutorial, consulteFunción combinada de usuario y de acceso.

Cree y almacene un secreto en AWS Secrets Manager

Necesitamos almacenar un secreto en Secrets Manager para almacenar las credenciales de usuario de su SFTP conector. Puedes usar una contraseña, una clave SSH privada o ambas. Para el tutorial, usaremos una clave privada.

nota

Cuando guardas secretos en Secrets Manager, Cuenta de AWS incurres en cargos. Para obtener más información acerca de los precios, consulte Precios de AWS Secrets Manager.

Antes de comenzar el procedimiento para almacenar el secreto, recupere y formatee su clave privada. La clave privada debe corresponder a la clave pública que está configurada para el usuario en el SFTP servidor remoto. Para nuestro tutorial, la clave privada debe corresponder a la clave pública que está almacenada para nuestro usuario de prueba en el SFTP servidor Transfer Family que utilizamos como servidor remoto.

Para ello, ejecute el siguiente comando:

jq -sR . path-to-private-key-file

Por ejemplo, si el archivo de clave privada se encuentra en~/.ssh/sftp-testuser-privatekey, el comando es el siguiente.

jq -sR . ~/.ssh/sftp-testuser-privatekey

Esto devuelve la clave en el formato correcto (con caracteres de nueva línea incrustados) a la salida estándar. Copie este texto en alguna parte, ya que tendrá que pegarlo en el siguiente procedimiento (en el paso 6).

Para almacenar las credenciales de usuario en Secrets Manager para un SFTP conector
  1. Inicie sesión en AWS Management Console y abra la AWS Secrets Manager consola en https://console.aws.amazon.com/secretsmanager/.

  2. En el panel de navegación izquierdo, seleccione Secretos.

  3. En la página Secretos, seleccione Almacenar un nuevo secreto.

  4. En la página Seleccionar tipo de secreto, en Tipo de secreto, seleccione Otro tipo de secreto.

  5. En la sección de Pares clave-valor, seleccione la pestaña Clave/valor.

    • Clave: introduzca Username.

    • valor: introduzca el nombre de nuestro usuario,sftp-testuser.

  6. Para introducir la clave, le recomendamos que utilice la pestaña Texto sin formato.

    1. Seleccione Añadir fila y, a continuación, introduzcaPrivateKey.

    2. Elija la pestaña Texto sin formato. El campo ahora contiene el siguiente texto:

      {"Username":"sftp-testuser","PrivateKey":""}
    3. Pegue el texto de su clave privada (guardado anteriormente) entre las comillas dobles vacías («»).

      La pantalla debería tener el siguiente aspecto (los datos clave aparecen atenuados).

      El secreto en texto plano, con el nombre de usuario y la clave privada.
  7. Elija Next (Siguiente).

  8. En la página Configurar el secreto, introduzca un nombre para el secreto. En este tutorial, asignamos un nombre al secretoaws/transfer/sftp-connector1.

  9. Seleccione Siguiente y, a continuación, acepte los valores predeterminados de la página Configurar rotación. A continuación, elija Siguiente.

  10. En la página de Revisión, elija Guardar para crear y almacenar el secreto.

Paso 2: Crear y probar un SFTP conector

En esta sección, creamos un SFTP conector que utiliza todos los recursos que hemos creado anteriormente. Para obtener más información, consulte Configure SFTP los conectores.

Para crear un SFTP conector
  1. Abra la AWS Transfer Family consola en https://console.aws.amazon.com/transfer/.

  2. En el panel de navegación izquierdo, seleccione Conectores y, a continuación, seleccione Crear conector.

  3. Elija SFTPel tipo de conector para crear un SFTP conector y, a continuación, elija Siguiente.

    La consola Transfer Family, que muestra la página Crear conector, donde se elige el tipo de conector. SFTPestá seleccionado.
  4. En la sección de Configuración del conector, proporcione la siguiente información:

    • Para el URL, introduzca el URL del SFTP servidor remoto. Para el tutorial, ingresamos al servidor Transfer Family que estamos usando como SFTP servidor remoto. URL

      sftp://s-1111aaaa2222bbbb3.server.transfer.us-east-1.amazonaws.com

      Reemplazar 1111aaaa2222bbbb3 con tu ID de servidor de Transfer Family.

    • Para el rol de acceso, ingresa el rol que creamos anteriormente,sftp-connector-role.

    • Para la función de registro, elijaAWSTransferLoggingAccess.

      nota

      AWSTransferLoggingAccesses una política AWS gestionada. Esta política se describe en detalle enAWS política gestionada: AWSTransferLoggingAccess.

    La consola de SFTP conectores Transfer Family, que muestra los ajustes de configuración del conector.
  5. En la sección SFTPConfiguración, proporcione la siguiente información:

    • Para las credenciales de Connector, elija el nombre del recurso de Secrets Manager que contiene SFTP las credenciales. Para el tutorial, elijaaws/transfer/sftp-connector1.

    • En el caso de las claves de host de confianza, pegue la parte pública de la clave de host. Puede recuperar esta clave ejecutándola ssh-keyscan para su SFTP servidor. Para obtener más información sobre cómo formatear y almacenar la clave de host de confianza, consulta la SftpConnectorConfigdocumentación sobre tipos de datos.

    La consola de SFTP conectores Transfer Family, que muestra los ajustes SFTPde configuración.
  6. Una vez que haya confirmado todos los ajustes, elija Crear conector para crear el SFTP conector.

Tras crear un SFTP conector, le recomendamos que lo pruebe antes de intentar transferir cualquier archivo con el nuevo conector.

Test a connector using the console
Para probar un SFTP conector
  1. Abra la AWS Transfer Family consola en https://console.aws.amazon.com/transfer/.

  2. En el panel de navegación izquierdo, seleccione Conectores y seleccione un conector.

  3. En el menú Acciones, seleccione Evento de prueba.

    La consola Transfer Family, que muestra un SFTP conector seleccionado, y la acción Probar conexión Probar conexión resaltada.

El sistema devuelve un mensaje que indica si la prueba se supera o no. Si la prueba no es satisfactoria, el sistema muestra un mensaje de error en función del motivo por el que no se ha realizado la prueba.

El panel de conexión de prueba del SFTP conector, que muestra una prueba satisfactoria.
El panel de conexión de prueba del SFTP conector muestra una prueba fallida: el mensaje de error indica que la función de acceso del conector es incorrecta.
Test a connector using the CLI

Para probar un conector mediante el AWS Command Line Interface, ejecute el siguiente comando en una línea de comandos (sustituya connector-id con su ID de conector actual):

aws transfer test-connection --connector-id c-connector-id

Si la prueba se realiza correctamente, se devuelven las siguientes líneas:

{ "Status": "OK", "StatusMessage": "Connection succeeded" }

Si la prueba no tiene éxito, recibirá un mensaje de error descriptivo, por ejemplo:

{ "Status": "ERROR", "StatusMessage": "Unable to assume the configured access role" }

Paso 3: envíe y recupere archivos mediante el SFTP conector

Para simplificar, asumimos que ya tiene archivos en su bucket de Amazon S3.

nota

En el tutorial se utilizan buckets de Amazon S3 para las ubicaciones de almacenamiento de origen y destino. Si su SFTP servidor no utiliza el almacenamiento de Amazon S3, siempre que aparezca sftp-server-storage-east en los siguientes comandos, puede sustituir la ruta por una ruta a las ubicaciones de los archivos accesibles desde su SFTP servidor.

  • Enviamos al SFTP servidor un archivo con el nombre SEND-to-SERVER.txt del almacenamiento de Amazon S3.

  • Recuperamos un archivo con el nombre RETRIEVE-to-S3.txt del SFTP servidor al almacenamiento de Amazon S3.

nota

En los siguientes comandos, sustituya connector-id con su ID de conector.

En primer lugar, enviamos un archivo desde nuestro bucket de Amazon S3 al SFTP servidor remoto. Desde una línea de comandos, ejecuta el siguiente comando:

aws transfer start-file-transfer --connector-id c-connector-id --send-file-paths "/s3-storage-east/SEND-to-SERVER.txt" / --remote-directory-path "/sftp-server-storage-east/incoming"

Su sftp-server-storage-east depósito ahora debería tener este aspecto.

El depósito SFTP del servidor con el archivo recién transferido.

Si no ves el archivo como esperabas, comprueba CloudWatch los registros.

Para comprobar tus CloudWatch registros
  1. Abre la CloudWatch consola de Amazon en https://console.aws.amazon.com/cloudwatch/

  2. Selecciona Grupos de registros en el menú de navegación de la izquierda.

  3. Introduzca el ID de su conector en la barra de búsqueda para buscar los registros.

  4. Seleccione el flujo de registro que se devuelve de la búsqueda.

  5. Amplíe la entrada de registro más reciente.

Si se realiza correctamente, la entrada de registro tendrá el siguiente aspecto:

{ "operation": "SEND", "timestamp": "2023-12-18T15:26:57.346283Z", "connector-id": "connector-id", "transfer-id": "transfer-id", "file-transfer-id": "transfer-id/file-transfer-id", "url": "sftp://server-id.server.transfer.us-east-1.amazonaws.com", "file-path": "/s3-storage-east/SEND-to-SERVER.txt", "status-code": "COMPLETED", "start-time": "2023-12-18T15:26:56.915864Z", "end-time": "2023-12-18T15:26:57.298122Z", "account-id": "500655546075", "connector-arn": "arn:aws:transfer:us-east-1:500655546075:connector/connector-id", "remote-directory-path": "/sftp-server-storage-east/incoming" }

Si la transferencia del archivo ha fallado, la entrada de registro contiene un mensaje de error que especifica el problema. Las causas más comunes de los errores son los problemas con los IAM permisos y las rutas de archivo incorrectas.

A continuación, recuperamos un archivo del SFTP servidor y lo colocamos en un bucket de Amazon S3. Desde una línea de comandos, ejecute el siguiente comando:

aws transfer start-file-transfer --connector-id c-connector-id --retrieve-file-paths "/sftp-server-storage-east/RETRIEVE-to-S3.txt" --local-directory-path "/s3-storage-east/incoming"

Si la transferencia se realiza correctamente, su bucket de Amazon S3 contiene el archivo transferido, como se muestra aquí.

El bucket de Amazon S3 con el archivo recién transferido.

Si se realiza correctamente, la entrada de registro tendrá el siguiente aspecto:

{ "operation": "RETRIEVE", "timestamp": "2023-12-18T15:36:40.017800Z", "connector-id": "c-connector-id", "transfer-id": "transfer-id", "file-transfer-id": "transfer-id/file-transfer-id", "url": "sftp://s-server-id.server.transfer.us-east-1.amazonaws.com", "file-path": "/sftp-server-storage-east/RETRIEVE-to-S3.txt", "status-code": "COMPLETED", "start-time": "2023-12-18T15:36:39.727626Z", "end-time": "2023-12-18T15:36:39.895726Z", "account-id": "500655546075", "connector-arn": "arn:aws:transfer:us-east-1:500655546075:connector/c-connector-id", "local-directory-path": "/s3-storage-east/incoming" }

Procedimientos para crear un servidor Transfer Family para usarlo como SFTP servidor remoto

A continuación, describimos los pasos para crear un servidor Transfer Family que sirva como SFTP servidor remoto para este tutorial. Tenga en cuenta lo siguiente:

  • Usamos un servidor Transfer Family para representar un SFTP servidor remoto. Los usuarios típicos de SFTP conectores tienen su propio SFTP servidor remoto. Consulte Crear un SFTP servidor Transfer Family y un usuario.

  • Como utilizamos un servidor Transfer Family, también utilizamos un usuario gestionado por el servicioSFTP. Y, para simplificar, combinamos los permisos que este usuario necesita para acceder al servidor Transfer Family con los permisos que necesita para usar nuestro conector. De nuevo, la mayoría de los casos de uso de SFTP conectores tienen un SFTP usuario independiente que no está asociado a un servidor Transfer Family. Consulte Crear un SFTP servidor Transfer Family y un usuario.

  • Para el tutorial, dado que utilizamos el almacenamiento de Amazon S3 para nuestro SFTP servidor remoto, necesitamos crear un segundo depósito para poder transferir archivos de un depósito a otro. s3-storage-east

Crear un SFTP servidor Transfer Family y un usuario

La mayoría de los usuarios no necesitarán crear un SFTP servidor Transfer Family y un usuario, ya que ya tienes un SFTP servidor con usuarios y puedes usar este servidor para transferir archivos de ida y vuelta. Sin embargo, para este tutorial, para simplificar, utilizamos un servidor Transfer Family para que funcione como SFTP servidor remoto.

Siga el procedimiento descrito en Cree un SFTP servidor habilitado para crear un servidor y Paso 3: agregar un usuario de servicio administradas añadir un usuario. Estos son los detalles del usuario que vamos a utilizar para el tutorial:

  • Cree su usuario gestionado por el servicio,. sftp-testuser

    • Configure el directorio principal en /sftp-server-storage-east/sftp-testuser

    • Al crear el usuario, se almacena una clave pública. Más adelante, cuando crees el secreto en Secrets Manager, tendrás que proporcionar la clave privada correspondiente.

  • Función:sftp-connector-role. Para el tutorial, utilizamos el mismo IAM rol tanto para nuestro SFTP usuario como para acceder al SFTP conector. Al crear conectores para su organización, es posible que tenga funciones de usuario y de acceso independientes.

  • Clave de host del servidor: debe usar la clave de host del servidor al crear el conector. Puede recuperar esta clave ejecutándola ssh-keyscan para su servidor. Por ejemplo, si el identificador de su servidor es s-1111aaaa2222bbbb3 y su punto final está activadous-east-1, el siguiente comando recupera la clave de host del servidor:

    ssh-keyscan s-1111aaaa2222bbbb3.server.transfer.us-east-1.amazonaws.com

    Copie este texto en alguna parte, ya que tendrá que pegarlo en el Paso 2: Crear y probar un SFTP conector procedimiento.

Función combinada de usuario y de acceso

Para el tutorial, utilizamos un único rol combinado. Usamos este rol tanto para nuestro SFTP usuario como para acceder al conector. El siguiente ejemplo contiene los detalles de este rol, por si desea realizar las tareas del tutorial.

El siguiente ejemplo concede los permisos necesarios para acceder a nuestros dos buckets en Amazon S3 y al secreto denominado aws/transfer/sftp-connector1 almacenado en Secrets Manager. En el tutorial, este rol recibe un nombresftp-connector-role.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::sftp-server-storage-east", "arn:aws:s3:::s3-storage-east" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": [ "arn:aws:s3:::sftp-server-storage-east/*", "arn:aws:s3:::s3-storage-east/*" ] }, { "Sid": "GetConnectorSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:us-east-1:500655546075:secret:aws/transfer/sftp-connector1-6RandomCharacters" } ] }

Para obtener información completa sobre la creación de roles para Transfer Family, siga el procedimiento descrito en Creación de un rol de usuario Para crear un rol.