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

如何通过CloudFormation为现有Redshift集群添加角色

给现有Redshift集群通过CloudFormation添加IAM角色的方法

核心思路

要给现有Redshift集群添加新IAM角色,你需要在CloudFormation模板中引用现有集群ID,并更新其IamRoles属性——注意必须包含原有的所有角色+新角色,否则会覆盖掉之前已关联的角色。

具体步骤

  1. 编写CloudFormation模板
    模板需要定义AWS::Redshift::Cluster资源,指定ExistingClusterId指向你的现有集群,同时在IamRoles里列出所有要保留的旧角色和新增的角色ARN。示例模板如下:

    AWSTemplateFormatVersion: '2010-09-09'
    Resources:
      MyExistingRedshiftCluster:
        Type: AWS::Redshift::Cluster
        Properties:
          ExistingClusterId: "your-cluster-identifier"
          IamRoles:
            - "arn:aws:iam::123456789012:role/old-redshift-role-1"
            - "arn:aws:iam::123456789012:role/old-redshift-role-2"
            - "arn:aws:iam::123456789012:role/new-redshift-role" # 新增的角色
    

    替换your-cluster-identifier为你的Redshift集群ID,把旧角色ARN和新角色ARN都准确填入。

  2. 配置新角色的信任策略
    新增的IAM角色必须允许Redshift服务扮演它,信任策略示例:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "redshift.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

    同时根据业务需求,给角色附加Redshift所需的权限策略(比如S3数据访问、Glue元数据读取权限等)。

  3. 部署CloudFormation模板

    • 用AWS CLI部署:
      aws cloudformation deploy --template-file your-template.yaml --stack-name add-redshift-role-stack --capabilities CAPABILITY_NAMED_IAM
      
    • 用AWS控制台部署:进入CloudFormation服务,创建新堆栈,上传模板文件,按提示完成参数配置后启动部署。

关键注意事项

  • 不要遗漏原有角色:如果IamRoles只填新角色,CloudFormation会移除之前所有关联的角色,可能导致依赖原有角色的任务失败。
  • 验证关联结果:部署完成后,可登录Redshift集群执行SELECT * FROM stv_iam_roles;,确认新角色是否成功关联。
  • 后续更新:如果还要添加更多角色,只需更新模板里的IamRoles列表,再执行CloudFormation堆栈更新即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:24:11