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

如何使用AWS CDK为S3存储桶配置跨多AWS账户写入的资源策略

解决方案

你当前使用AnyPrincipal作为授权主体会开放所有AWS身份的访问权限,不符合只允许指定账户访问的要求,需要替换为指定账户的主体对象。

正确实现步骤

  • 首先从IAM模块导入AccountPrincipal类
  • 定义你需要授权的付款账户ID列表
  • 构造资源策略时将账户ID映射为AccountPrincipal实例传入主体列表

完整代码示例:

// 导入依赖
import { AccountPrincipal, Effect, PolicyStatement } from 'aws-cdk-lib/aws-iam';

// 替换为你实际的付款账户A、B的12位AWS账户ID
const allowedPayerAccounts = ['111122223333', '444455556666'];

accessLogsBucket.addToResourcePolicy(
  new PolicyStatement({
    effect: Effect.ALLOW,
    actions: [
      "s3:ReplicateObject",
      "s3:ReplicateDelete"
    ],
    principals: allowedPayerAccounts.map(accountId => new AccountPrincipal(accountId)),
    resources: [
      accessLogsBucket.arnForObjects("*")
    ]
  })
);

可选补充说明

  • 如果你需要允许这些账户执行常规写入操作而非仅跨区域复制操作,可以在actions数组中追加s3:PutObject等所需权限
  • 你创建存储桶时已经开启了版本控制、禁止公共访问,符合日志存储桶的安全最佳实践
  • 部署前可以执行cdk diff命令查看生成的资源策略是否和你预期的JSON示例完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:39:03