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

如何通过CloudFormation为AWS Kinesis流添加基于资源的策略

解决Kinesis流通过CloudFormation添加基于资源的策略问题

首先明确:AWS没有AWS::Kinesis::StreamPolicy这个CloudFormation资源类型,你遇到的无效类型提示就是因为这个原因。和Lambda用AWS::Lambda::Permission单独配置资源策略不同,Kinesis流的基于资源的策略需要直接附加在AWS::Kinesis::Stream资源上,通过其Policy属性来配置。

正确的配置方案

方案1:创建Kinesis流时同时附加资源策略

直接在AWS::Kinesis::Stream资源中添加Policy属性,示例如下:

Resources:
  MyKinesisStream:
    Type: AWS::Kinesis::Stream
    Properties:
      Name: !Ref StreamName
      ShardCount: 1
      Policy:
        Version: '2012-10-17'
        Statement:
          - Sid: StreamWriteStatementID
            Effect: Allow
            Principal:
              AWS:
                - !Ref SourceAccountNumber
                - !Sub 'arn:aws:iam::${SourceAccountNumber}:role/${SourceIAMRole}'
            Action:
              - 'kinesis:DescribeStreamSummary'
              - 'kinesis:ListShards'
              - 'kinesis:PutRecord'
              - 'kinesis:PutRecords'
            Resource: !GetAtt MyKinesisStream.Arn

方案2:为已有Kinesis流更新资源策略

如果Kinesis流已经存在,你可以在CloudFormation中引入该流,并更新其Policy属性。注意需保持原有分片数等配置,避免意外修改:

Resources:
  ExistingKinesisStream:
    Type: AWS::Kinesis::Stream
    Properties:
      Name: ExistingStreamName
      ShardCount: 1 # 保持原有分片数
      Policy:
        Version: '2012-10-17'
        Statement:
          - Sid: StreamWriteStatementID
            Effect: Allow
            Principal:
              AWS:
                - !Ref SourceAccountNumber
                - !Sub 'arn:aws:iam::${SourceAccountNumber}:role/${SourceIAMRole}'
            Action:
              - 'kinesis:DescribeStreamSummary'
              - 'kinesis:ListShards'
              - 'kinesis:PutRecord'
              - 'kinesis:PutRecords'
            Resource: !GetAtt ExistingKinesisStream.Arn

关键说明

  • 资源策略中的Resource必须指向当前Kinesis流的ARN,确保权限范围准确。
  • 若要允许外部账户的多个主体访问,可在Principal.AWS下添加多个ARN或账户ID。
  • 部署前验证策略语法和权限范围,避免过度授权或权限不足。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 19:46:01