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.
Este tutorial ilustra cómo configurar un método de Amazon API Gateway y usarlo como proveedor de identidad personalizado para cargar archivos a un AWS Transfer Family servidor. En este tutorial solo se utiliza la plantilla de pila básica
Temas
- Requisitos previos
- Paso 1: Crea una CloudFormation pila
- Paso 2: Compruebe la configuración del método API Gateway para su servidor
- Paso 3: visualización de los detalles del servidor de Transfer Family
- Paso 4: comprobación de que el usuario puede conectarse al servidor
- Paso 5: Pruebe la SFTP conexión y la transferencia de archivos
- Paso 6: limitación del acceso al bucket
- Actualice Lambda si utiliza Amazon EFS
Requisitos previos
Antes de crear los recursos de Transfer Family en AWS CloudFormation, cree su almacenamiento y su rol de usuario.
Cómo especificar el almacenamiento y crear un rol de usuario
Según el almacenamiento que utilice, consulte la siguiente documentación:
Para crear un bucket de Amazon S3, consulte ¿Cómo se crea un bucket de S3? en la Guía del usuario de la consola de Amazon Simple Storage Service.
-
Para crear un sistema de EFS archivos de Amazon, consulteConfigurar un sistema de EFS archivos de Amazon.
-
Para crear un rol de usuario, consulte Crea un IAM rol y una política
Introduzca los detalles de su almacenamiento y su rol de usuario al crear su pila AWS CloudFormation en la siguiente sección.
Paso 1: Crea una CloudFormation pila
Para crear una AWS CloudFormation pila a partir de la plantilla proporcionada
Abre la AWS CloudFormation consola en https://console.aws.amazon.com/cloudformation.
-
Seleccione Crear pila y seleccione Con recursos nuevos (estándar).
-
En Requisito previo: preparar plantilla, elija La plantilla está lista.
-
Copia este enlace, plantilla de pila básica
, y pégalo en el URL campo Amazon S3. -
Haga clic en Next (Siguiente).
-
Especifique los parámetros, incluido un nombre para la pila. Asegúrese de hacer lo siguiente:
Sustituya los valores predeterminados por UserNamey UserPassword.
-
Para UserHomeDirectoryello, introduzca los detalles del almacenamiento (ya sea un bucket de Amazon S3 o un EFS sistema de archivos de Amazon) que creó anteriormente.
-
Sustituya la función UserRoleArnde usuario predeterminada por la que creó anteriormente. El rol AWS Identity and Access Management (IAM) debe tener los permisos adecuados. Para ver un ejemplo de política de IAM roles y segmentos, consultePaso 6: limitación del acceso al bucket.
-
Si desea autenticarse con una clave pública en lugar de una contraseña, introduzca su clave pública en el campo UserPublicKey1. La primera vez que se conecte al servidor utilizandoSFTP, proporcionará la clave privada en lugar de una contraseña.
-
Seleccione Siguiente y, a continuación, vuelva a seleccionar Siguiente en la página Configurar opciones de pila.
-
Revise los detalles de la pila que esté creando y, a continuación, seleccione Crear pila.
nota
En la parte inferior de la página, en la sección Capacidades, debes reconocer que AWS CloudFormation podría crear IAM recursos.
Paso 2: Compruebe la configuración del método API Gateway para su servidor
nota
Para mejorar la seguridad, puede configurar un firewall de aplicaciones web. AWS WAF es un firewall de aplicaciones web que le permite supervisar las HTTPS solicitudes HTTP y las solicitudes que se reenvían a Amazon API Gateway. Para obtener más información, consulte Agregue un cortafuegos de aplicaciones web.
Para comprobar la configuración del método API Gateway para su servidor e implementarlo
-
Abra la consola API Gateway en https://console.aws.amazon.com/apigateway/
. -
Elija la plantilla básica de Transfer Custom Identity Provider API que generó la AWS CloudFormation plantilla.
-
En el panel Recursos, elija y GET, a continuación, elija Solicitud de método.
-
En Acciones, elija Implementar API. Para la Etapa de implementación, elija prod y, a continuación, elija Implementar.
Una vez que el método API Gateway se haya implementado correctamente, consulte su rendimiento en la sección Stage Editor.
nota
Copia la URL dirección de invocación que aparece en la parte superior de la página. Lo necesitará para el siguiente paso.
Paso 3: visualización de los detalles del servidor de Transfer Family
Al utilizar la plantilla para crear una AWS CloudFormation pila, se crea automáticamente un servidor Transfer Family.
Visualización de los detalles del servidor de Transfer Family
Abre la AWS CloudFormation consola en https://console.aws.amazon.com/cloudformation
. Elija la pila que ha creado.
Elija la pestaña Recursos.
El servidor ARN se muestra en la columna de ID física de la TransferServerfila. El ID del servidor está contenido enARN, por ejemplo, s-11112222333344445.
Abra la AWS Transfer Family consola en y https://console.aws.amazon.com/transfer/
, en la página Servidores, elija el nuevo servidor. El ID del servidor coincide con el ID que se muestra para el TransferServerrecurso en AWS CloudFormation.
Paso 4: comprobación de que el usuario puede conectarse al servidor
Comprobación de que el usuario puede conectarse al servidor, mediante la consola Transfer Family
Abra la AWS Transfer Family consola en https://console.aws.amazon.com/transfer/
. -
En la página Servidores, elija su nuevo servidor, elija Acciones y, a continuación, elija Probar.
-
Introduzca el texto de sus credenciales de inicio de sesión en el campo Nombre de usuario y en el campo Contraseña. Estos son los valores que estableció al implementar la AWS CloudFormation pila.
-
En Protocolo de servidor, seleccione y SFTP, en IP de origen, introduzca
127.0.0.1
. -
Seleccione Probar.
Si la autenticación del usuario se realiza correctamente, la prueba devuelve una
StatusCode: 200
HTML respuesta y un JSON objeto que contiene los detalles de las funciones y los permisos del usuario. Por ejemplo:{ "Response": "{\"Role\": \"arn:aws:iam::
123456789012
:role/my-user-role
\",\"HomeDirectory\": \"/${transfer:HomeBucket}/\"}", "StatusCode": 200, "Message": "", "Url": "https://1a2b3c4d5e
.execute-api.us-east-2
.amazonaws.com/prod/servers/s-1234abcd5678efgh0
/users/myuser
/config" }Si la prueba no se realiza correctamente, añada una de las políticas AWS gestionadas por API Gateway a la función que está utilizando para su API función.
Paso 5: Pruebe la SFTP conexión y la transferencia de archivos
Para probar la SFTP conexión
-
En Linux o macOS, abra un terminal de comandos.
-
Ingrese uno de los siguientes comandos en función de si utiliza una contraseña o un par de claves para la autenticación.
-
Si utiliza una contraseña, introduzca este comando:
sftp -o PubkeyAuthentication=no
myuser
@server-ID
.server.transfer.region-code
.amazonaws.com.rproxy.goskope.comEscriba la contraseña cuando se le solicite.
-
Si utiliza un par de claves, introduzca este comando:
sftp -i
private-key-file
myuser
@server-ID
.server.transfer.region-code
.amazonaws.com
nota
Para estos comandos
sftp
, inserte el código de la Región de AWS donde está ubicado su servidor de Transfer Family. Por ejemplo, si su servidor está en el este de EE. UU. (Ohio), introduzcaus-east-2
. -
-
Cuando aparezca
sftp>
, asegúrese de que puede cargar (put
), descargar (get
) y ver directorios y archivos (pwd
yls
).
Paso 6: limitación del acceso al bucket
Puede limitar quién accede a un bucket específico de Amazon S3. El siguiente ejemplo muestra la configuración que se debe usar en la CloudFormation pila y en la política que seleccione para el usuario.
En este ejemplo, configuramos los siguientes parámetros para la AWS CloudFormation pila:
CreateServer:
true
UserHomeDirectory:
/myuser-bucket
UserName:
myuser
UserPassword:
MySuperSecretPassword
importante
Este es un ejemplo de contraseña. Al configurar el método API Gateway, asegúrese de introducir una contraseña segura.
UserPublicKey1:
your-public-key
UserRoleArn:
arn:aws:iam::
role-id
:role/myuser-api-gateway-role
El UserPublicKey1 es una clave pública que ha generado como parte de un par de claves pública/privada.
es exclusivo del rol de usuario que cree. La política asociada a role-id
myuser-api-gateway-role
es la siguiente:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::myuser-bucket"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObjectAcl",
"s3:GetObject",
"s3:DeleteObjectVersion",
"s3:DeleteObject",
"s3:PutObjectAcl",
"s3:GetObjectVersion"
],
"Resource": "arn:aws:s3:::myuser-bucket/*"
}
]
}
Para conectarse al servidor medianteSFTP, introduzca uno de los siguientes comandos en la línea de comandos.
Si utiliza una contraseña para autenticarse, ejecute el siguiente comando:
sftp -o PubkeyAuthentication=no
myuser
@transfer-server-ID
.server.transfer.region-id
.amazonaws.com.rproxy.goskope.comEscriba la contraseña cuando se le solicite.
-
Si utiliza un par de claves para autenticarse, ejecute el siguiente comando:
sftp -i
private-key-file
myuser@transfer-server-ID
.server.transfer.region-id
.amazonaws.com
nota
Para estos sftp
comandos, utilice el ID de Región de AWS la ubicación del servidor Transfer Family. Por ejemplo, si su servidor está en el este de EE. UU. (Ohio), utilice us-east-2
.
Cuando sftp
aparezca la línea de comandos, accederá a su directorio de inicio, que podrá ver ejecutando el comando pwd
. Por ejemplo:
sftp> pwd
Remote working directory: /myuser-bucket
El usuario no puede ver ningún directorio situado por encima del directorio de inicio. Por ejemplo:
sftp> pwd
Remote working directory: /myuser-bucket
sftp> cd ..
sftp> ls
Couldn't read directory: Permission denied
Actualice Lambda si utiliza Amazon EFS
Si seleccionaste Amazon EFS como opción de almacenamiento para tu servidor Transfer Family, tendrás que editar la función lambda de tu pila.
Cómo agregar un perfil posix a la función de Lambda
Abra la consola Lambda en. https://console.aws.amazon.com/lambda/
-
Elija la función de Lambda que ha creado. La función Lambda tiene el formato de
stack-name
-GetUserConfigLambda-lambda-identifier
, dondestack-name
es el nombre de la CloudFormation pila ylambda-identifier
es el identificador de la función. -
En la pestaña Código, seleccione index.js para ver el código de la función.
-
En
response
, añada la siguiente línea entrePolicy
yHomeDirectory
:PosixProfile: {"Uid":
uid-value
, "Gid":gid-value
},¿Dónde está el
uid-value
ygid-value
son números enteros, 0 o mayores, que representan el ID de usuario y el ID de grupo, respectivamente.Por ejemplo, después de agregar el perfil Posix, el campo de respuesta podría tener el siguiente aspecto:
response = { Role: 'arn:aws:iam::123456789012:role/api-gateway-transfer-efs-role', // The user will be authenticated if and only if the Role field is not blank Policy: '', // Optional JSON blob to further restrict this user's permissions PosixProfile: {"Gid": 65534, "Uid": 65534}, HomeDirectory: '/fs-fab2c234' // Not required, defaults to '/' };