跨AWS账户部署:ECS任务挂载FSx存储时出现FileSystemNotFound错误的技术咨询
解决跨账户ECS访问FSx的FileSystemNotFound问题
首先,这个报错的核心原因是跨账户访问FSx需要双向权限配置:你已经在账户A的EC2实例角色上配置了允许访问账户B FSx的IAM策略,但账户B的FSx文件系统默认会拒绝来自其他账户的请求,必须在账户B侧添加资源策略来授权账户A的角色访问。
1. 在账户B中为FSx文件系统添加资源策略
登录AWS账户B,找到对应的FSx文件系统(fs-0fd8b05f434cf0e72),在“Permissions”标签下添加以下资源策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:role/你的EC2实例角色名称" }, "Action": [ "fsx:DescribeFileSystems", "fsx:AccessFileSystem" ], "Resource": "arn:aws:fsx:eu-west-1:222222222222:file-system/fs-0fd8b05f434cf0e72" } ] }
- 替换
111111111111为账户A的ID - 替换
你的EC2实例角色名称为账户A中EC2宿主机使用的IAM角色名称
这个策略会明确允许账户A的EC2实例角色访问该FSx文件系统,解决“FileSystemNotFound”的核心问题(因为没有资源策略的话,即使IAM策略允许,FSx也会返回不存在的错误)。
2. 验证EC2实例角色的权限配置
确认以下几点:
- EC2实例确实关联了你提到的
AmazonFSxReadOnlyAccess和fsx_mount策略,没有被IAM权限边界或其他策略限制 fsx_mount策略中FSx的资源ARN是正确的(arn:aws:fsx:eu-west-1:222222222222:file-system/fs-0fd8b05f434cf0e72),区域和文件系统ID都匹配
3. 检查区域一致性
确保ECS集群、EC2宿主机和FSx文件系统都在eu-west-1区域:
- FSx是区域级服务,不支持跨区域访问
- 你的SecretsManager在
us-west-2,如果EC2实例在eu-west-1,需要确保fsx_mount策略允许跨区域调用SecretsManager(当前策略已经允许该Secret的GetSecretValue动作,通常跨区域调用是支持的,但如果遇到问题可以检查VPC端点或区域权限)
4. 验证Terraform配置的细节
- 确认
credentials_parameter引用的SecretsManager存储的是有权限访问FSx文件系统的AD账户凭证 - 确保
domain参数和FSx关联的AD域一致
完成以上配置后,重新启动ECS任务,应该就能正常访问跨账户的FSx存储了。
内容的提问来源于stack exchange,提问作者Georgi Koemdzhiev
相关产品推荐
相关产品推荐

