无法使用 python 在 aws cdk 中编写策略文档

2024-05-10

您好,我正在开发 AWS CDK。我正在努力制定政策。下面是我的代码。

MWSECSServiceRole = iam.Role(self, 'MWSECSServiceRole',
          assumed_by=iam.ServicePrincipal('ecs.amazonaws.com'))

        MWSECSServiceRole.add_to_policy(iam.PolicyStatement(
        effect=iam.Effect.ALLOW,
        resources=["arn:aws:elasticloadbalancing:*:{AccountId}:loadbalancer/app/mws-*","arn:aws:elasticloadbalancing:*:{AccountId}:listener-rule/app/mws-*","arn:aws:elasticloadbalancing:*:{AccountId}:listener/app/mws-*","arn:aws:elasticloadbalancing:*:{AccountId}:targetgroup/mws-*"],
        actions=["elasticloadbalancing:DeregisterInstancesFromLoadBalancer","elasticloadbalancing:DeregisterTargets","elasticloadbalancing:RegisterInstancesWithLoadBalancer","elasticloadbalancing:RegisterTargets"]
        ))

        MWSECSServiceRole.add_to_policy(iam.PolicyStatement(
        effect=iam.Effect.ALLOW,
        resources=["*"],
        actions=["ec2:AuthorizeSecurityGroupIngress","ec2:Describe*","elasticloadbalancing:Describe*"]
        ))

这将生成下面的云形成模板。

MWSECSServiceRoleDefaultPolicyD5E258B0:
    Type: AWS::IAM::Policy
    Properties:
      PolicyDocument:
        Statement:
          - Action:
              - elasticloadbalancing:DeregisterInstancesFromLoadBalancer
              - elasticloadbalancing:DeregisterTargets
              - elasticloadbalancing:RegisterInstancesWithLoadBalancer
              - elasticloadbalancing:RegisterTargets
            Effect: Allow
            Resource:
              - arn:aws:elasticloadbalancing:*:{AccountId}:loadbalancer/app/mws-*
              - arn:aws:elasticloadbalancing:*:{AccountId}:listener-rule/app/mws-*
              - arn:aws:elasticloadbalancing:*:{AccountId}:listener/app/mws-*
              - arn:aws:elasticloadbalancing:*:{AccountId}:targetgroup/mws-*
          - Action:
              - ec2:AuthorizeSecurityGroupIngress
              - ec2:Describe*
              - elasticloadbalancing:Describe*
            Effect: Allow
            Resource: "*"
        Version: "2012-10-17"
      PolicyName: MWSECSServiceRoleDefaultPolicyD5E258B0
      Roles:
        - Ref: MWSECSServiceRole966AC1F9
    Metadata:
      aws:cdk:path: LocationCdkStack-cdkstack/MWSECSServiceRole/DefaultPolicy/Resource

当我尝试部署时,它会抛出以下错误。

The policy failed legacy parsing (Service: AmazonIdentityManagement; Status Code: 400; Error Code: MalformedPolicyDocument; Request ID: e54462f7-f0bc-4a8c-9ec4-9530125113ec)

有人可以帮我确定这个问题吗?任何帮助,将不胜感激。谢谢


我建议您使用以下方式构建您的 ARNStack.format_arn https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.core/Stack.html#aws_cdk.core.Stack.format_arn:

my_resource = core.Stack.of(self).format_arn(
  service="elasticloadbalancing",
  resource="loadbalancer",
  resource_name="app/mws-*"
)

也可以看看ARN 操纵 https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.core.README.html#arn-manipulation.

或者,您可以连接字符串并使用core.Stack.of(self).account https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.core/Stack.html#aws_cdk.core.Stack.account:

my_resource = "arn:aws:elasticloadbalancing:*:" + core.Stack.of(self).account + ":loadbalancer/app/mws-*"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用 python 在 aws cdk 中编写策略文档 的相关文章

随机推荐