You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Amplify Storage私有scope配置:如何让管理员/版主访问客户私有文件

解决方案

你要实现的权限逻辑不需要切换存储scope,仅需调整S3桶策略、对应Cognito用户组的IAM权限,再配合前端调用参数即可,具体操作如下:

步骤1:配置Cognito用户组的IAM权限

你提前为Admins、Moderators、Customers三个用户组配置了独立的IAM角色,只需为不同角色追加对应S3路径的访问权限:

  • Admins组角色:添加S3全量操作权限,允许访问路径为arn:aws:s3:::<你的存储桶名称>/private/*,开放操作包括s3:GetObject、s3:PutObject、s3:DeleteObject
  • Moderators组角色:添加S3只读权限,允许访问路径为arn:aws:s3:::<你的存储桶名称>/private/*,仅开放操作s3:GetObject
  • Customers组角色:保留默认权限,仅允许访问路径arn:aws:s3:::<你的存储桶名称>/private/${cognito-identity.amazonaws.com:sub}/*,开放操作s3:GetObject、s3:PutObject,移除s3:DeleteObject权限避免用户删除自有文件

步骤2:修改S3桶策略放行组权限

Amplify默认的S3桶策略会限制private路径仅文件所属用户可访问,你需要在桶策略中追加两条优先级更高的放行规则,允许Admins、Moderators组的角色访问所有private路径下的文件,避免默认规则拦截跨用户访问请求。

步骤3:调整前端文件访问逻辑

管理员、版主访问其他用户上传的私有文件时,调用Amplify Storage的相关方法需要额外传入文件所属用户的identityId参数:

// 拉取指定用户上传的私有文件
const fileUrl = await Storage.get('工单附件名称.png', {
  level: 'private',
  identityId: '<文件所属用户的Cognito Identity ID>'
})

建议你在工单数据表中新增字段存储附件上传用户的Cognito Identity ID,方便后续权限校验和文件拉取。

步骤4:固化自定义配置避免被覆盖

为避免后续执行amplify push时自定义的策略被Amplify默认配置覆盖,可通过Amplify Override功能固化配置:

  1. 执行命令amplify override storage生成存储覆写文件
  2. 在生成的override.ts文件中添加自定义桶策略规则,示例如下:
import { AmplifyS3ResourceTemplate } from '@aws-amplify/cli-extensibility-helper';

export function override(resources: AmplifyS3ResourceTemplate) {
  // 放行管理员组所有private路径权限
  resources.s3Bucket.bucketPolicy.addResource(
    "arn:aws:s3:::${bucketName}/private/*",
    ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<你的AWS账号ID>:role/<Admins组对应的IAM角色名称>"
      }
    }
  );
  // 放行版主组private路径只读权限
  resources.s3Bucket.bucketPolicy.addResource(
    "arn:aws:s3:::${bucketName}/private/*",
    ["s3:GetObject"],
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<你的AWS账号ID>:role/<Moderators组对应的IAM角色名称>"
      }
    }
  );
}
  1. 执行amplify push提交配置即可生效。

内容的提问来源于stack exchange,提问作者marcotw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:54:07