AWS CloudFormation 创建 RDS 集群并将其 ARN 添加到同一模板中的策略

AWS CloudFormation create RDS cluster and add its ARN to a policy in the same template

我正在创建一个 RDS cluster,并且在同一个模板中创建一个策略,该策略具有允许对该集群执行特定操作的某些权限。

Statement:
  - Effect: Allow
    Actions:
      - 'rds-data:BatchExecuteStatement'
      - 'rds-data:ExecuteStatement'
    Resource: 'arn:aws:rds:us-east-1:1111111111:cluster:production-mycluster-rdscluster-no1yzvzs29sq'

问题是 AWS::RDS::DBCluster 不支持 Fn::GetAtt ARN,而且,由于 RDS 在 ARN 的末尾添加了那个随机字符串,在这个例子中 no1yzvzs29sq 我不知道如何在名称的 "whitelist" 部分使用通配符之类的东西。

我想要类似的东西 arn:aws:rds:us-east-1:1111111111:cluster:production-mycluster-rdscluster-*

但是没用。我将不胜感激!

基于docs

Amazon RDS Data API does not support specifying a resource ARN in the Resource element of an IAM policy statement. To allow access to Amazon RDS Data API, specify “Resource”: “*” in your policy.

所以在这一点上,您似乎受困于看起来像

的政策
Statement:
  - Effect: Allow
    Actions:
      - 'rds-data:BatchExecuteStatement'
      - 'rds-data:ExecuteStatement'
    Resource: '*'

您可以根据集群名称自行构建ARN

例如:

Statement:
  - Effect: Allow
    Actions:
      - 'rds-data:BatchExecuteStatement'
      - 'rds-data:ExecuteStatement'
    Resource: !Sub 'arn:${AWS::Partition}:rds:${AWS::Region}:${AWS::AccountId}:cluster:${MyDBCluster}'