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

AWS MediaStore Java SDK 2 如何启用容器对象公共访问?

MediaStore容器对象开启公共访问的实现方案

AWS Elemental MediaStore 没有S3那样直接通过容器级预定义ACL配置公共访问的机制,要实现类似S3 PUBLIC_READ/PUBLIC_READ_WRITE的效果,需要通过容器策略来配置,具体实现如下:

1. 配置公共读权限(对应S3的PUBLIC_READ)

通过MediaStore客户端调用putContainerPolicy接口,给目标容器添加允许匿名用户读取对象的策略:

MediaStoreClient mediaStoreClient = MediaStoreClient.create();

String containerName = "你的容器名称";
// 策略文档:允许所有匿名用户读取容器内的所有对象
String publicReadPolicy = "{\n" +
    "  \"Version\": \"2012-10-17\",\n" +
    "  \"Statement\": [\n" +
    "    {\n" +
    "      \"Effect\": \"Allow\",\n" +
    "      \"Principal\": \"*\",\n" +
    "      \"Action\": \"mediastore:GetObject\",\n" +
    "      \"Resource\": \"arn:aws:mediastore:你的AWS区域:你的AWS账号ID:container/"+containerName+"/*\"\n" +
    "    }\n" +
    "  ]\n" +
    "}";

PutContainerPolicyRequest request = PutContainerPolicyRequest.builder()
    .containerName(containerName)
    .policy(publicReadPolicy)
    .build();

mediaStoreClient.putContainerPolicy(request);

2. 配置公共读写权限(对应S3的PUBLIC_READ_WRITE)

如果需要允许匿名用户上传、读取、删除对象,修改策略中的Action字段即可:

String publicReadWritePolicy = "{\n" +
    "  \"Version\": \"2012-10-17\",\n" +
    "  \"Statement\": [\n" +
    "    {\n" +
    "      \"Effect\": \"Allow\",\n" +
    "      \"Principal\": \"*\",\n" +
    "      \"Action\": [\n" +
    "        \"mediastore:GetObject\",\n" +
    "        \"mediastore:PutObject\",\n" +
    "        \"mediastore:DeleteObject\"\n" +
    "      ],\n" +
    "      \"Resource\": \"arn:aws:mediastore:你的AWS区域:你的AWS账号ID:container/"+containerName+"/*\"\n" +
    "    }\n" +
    "  ]\n" +
    "}";

关键说明

  • MediaStore 采用IAM策略模型而非S3的ACL模型,没有预定义的 canned ACL 选项,必须手动编写策略文档。
  • 公共读写权限风险极高,仅建议在测试环境或非敏感内容场景下使用;生产环境优先通过IAM角色、预签名URL等方式控制访问。
  • 配置后,匿名用户可直接通过MediaStore的对象端点访问对应资源,无需签名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:48:08