跳至内容

如何配置我的 Transfer Family 服务器以使用其他 AWS 账户中的 Amazon EFS 文件系统?

2 分钟阅读
0

我希望我的 AWS 账户中的 AWS Transfer Family 服务器访问另一个账户中的 Amazon Elastic File System (Amazon EFS) 文件系统。我还想为我的 Transfer Family 服务器设置对 Amazon EFS 文件系统的跨账户访问权限。

解决方案

**注意:**如果您在运行 AWS CLI 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

要配置您的 Transfer Family 服务器,请在账户 A 中创建一个可访问账户 B 中文件系统的 AWS Identity and Access Management (IAM) 角色。然后,在账户 A 中创建一个配置了该 IAM 角色的 Transfer Family 服务器用户。确认账户 A 中的 Transfer Family 服务器用户可以访问账户 B 中的文件系统。

**注意:**AWS Transfer Family 控制台仅显示同一账户中的 Amazon EFS 文件系统。要将您的 Transfer Family 服务器与其他账户中的文件系统一起使用,请使用 AWS CLI 或 AWS SDK。

在账户 A 中创建一个可访问文件系统的 IAM 角色

为您的服务器用户创建 IAM 角色。对于角色的 IAM 策略,请使用以下策略语句:

{  
  "Version": "2012-10-17",  
  "Statement": [  
    {  
      "Sid": "RootFileSystemAccess",  
      "Effect": "Allow",  
      "Action": [  
        "elasticfilesystem:ClientRootAccess",  
        "elasticfilesystem:ClientMount",  
        "elasticfilesystem:ClientWrite"  
      ],  
      "Resource": "arn:aws:elasticfilesystem:region:accountB-id:file-system/file-system-id"  
    }  
  ]  
}

在账户 B 的文件系统中添加一个策略,向账户 A 的 IAM 角色授予权限:

{  
  "Sid": "EFS-TransferFamily",  
  "Effect": "Allow",  
  "Principal": {  
    "AWS": "arn:aws:iam::AccounA-id:role/RoleName"  
  },  
  "Action": [  
    "elasticfilesystem:ClientRootAccess",  
    "elasticfilesystem:ClientWrite",  
    "elasticfilesystem:ClientMount"  
  ],  
  "Resource": "arn:aws:elasticfilesystem:region:accountB-id:file-system/file-system-id"  
}

在账户 A 中创建一个具有该 IAM 角色的 Transfer Family 服务器用户

运行以下 create-user AWS CLI 命令以创建 Transfer Family 用户:

aws transfer create-user --user-name "sftp" --server-id "SERVER-ID" --role "arn:aws:iam::accountA-id:role/RoleName" --home-directory "/file-system-id/username"

该命令将返回服务器 ID 和用户名。

输出示例:

{  
  "ServerId":  "MY_SERVER_ID",  
  "UserName":  "MY_SERVER_USER_NAME"  
}

验证账户 A 中的 Transfer Family 服务器用户是否可以访问账户 B 中的文件系统

完成以下步骤:

  1. 以您创建的用户身份连接到您的服务器。您可以运行以下 sftp OpenSSH 命令进行连接:

    sftp -i myserveruser MY_SERVER_USER_NAME@MY_SERVER_ID.server.transfer.us-east-1.amazonaws.com
  2. 列出存储桶的主目录。如果您使用 OpenSSH,请运行 ls 命令:

    ls

如果该命令返回主目录,则表明您的服务器用户对 Amazon EFS 文件系统具有跨账户访问权限。

相关信息

创建支持 SFTP 的服务器

创建文件系统策略

如何配置我的 AWS Transfer Family 服务器以使用其他 AWS 账户中的 Amazon S3 存储桶?

为 Transfer Family 配置跨账户访问权限

AWS 官方已更新 6 个月前