我希望 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 中的檔案系統
請完成下列步驟:
-
以您建立的使用者身分連線至您的伺服器。您可以執行以下 sftp OpenSSH 命令來連線:
sftp -i myserveruser MY_SERVER_USER_NAME@MY_SERVER_ID.server.transfer.us-east-1.amazonaws.com
-
列出儲存貯體的主目錄。如果您使用 OpenSSH,請執行 ls 命令:
ls
如果命令傳回主目錄,則您的伺服器使用者可以跨帳戶存取 Amazon EFS 檔案系統。
相關資訊
建立啟用 SFTP 的伺服器
建立檔案系統政策
如何設定我的 AWS Transfer Family 伺服器,以使用位於另一個 AWS 帳戶中的 Amazon S3 儲存貯體?
為 Transfer Family 設定跨帳戶存取權