簡體   English   中英

AWS CloudFormation:如何在 AWS::IAM::Policy 中引用另一個堆棧中定義的角色

[英]AWS CloudFormation: How to refer a role defined in another stack inside AWS::IAM::Policy

Cloudformation 堆棧 1:

AWSTemplateFormatVersion: 2010-09-09
Metadata:
  'AWS::CloudFormation::Designer':
    c311c237-d7a4-4fac-a838-8a5a37a4b083:
      size:
        width: 60
        height: 60
      position:
        x: 127
        'y': 160
      z: 0
Resources:
  ECSRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Statement:
          - Effect: Allow
            Principal:
              Service: [ecs.amazonaws.com]
            Action: ['sts:AssumeRole']
      Path: /
      Policies:
        - PolicyName: ecs-service
          PolicyDocument:
            Statement:
              - Effect: Allow
                Action:
                  - 'ec2:AttachNetworkInterface'
                  - 'ec2:CreateNetworkInterface'
                  - 'ec2:CreateNetworkInterfacePermission'
                  - 'ec2:DeleteNetworkInterface'
                  - 'ec2:DeleteNetworkInterfacePermission'
                  - 'ec2:Describe*'
                  - 'ec2:DetachNetworkInterface'
                  - 'elasticloadbalancing:DeregisterInstancesFromLoadBalancer'
                  - 'elasticloadbalancing:DeregisterTargets'
                  - 'elasticloadbalancing:Describe*'
                  - 'elasticloadbalancing:RegisterInstancesWithLoadBalancer'
                  - 'elasticloadbalancing:RegisterTargets'
                Resource: '*'

Outputs:
  ECSTaskRoleId:
    Description: ECSRoleId
    Value: !GetAtt
      - ECSRole
      - RoleId
    Export:
      Name: !Join [ ':', [ !Ref 'AWS::StackName', ECSTaskRoleId ] ]
  ECSTaskRoleIdECSRole:
    Description: The ARN of the ECS role
    Value: !GetAtt 'ECSRole.Arn'
    Export:
      Name: !Join [ ':', [ !Ref 'AWS::StackName', 'ECSRole' ] ]

**

堆棧 2:**

Resources:
  SNSRWPolicy:
    Type: 'AWS::IAM::Policy'
    Properties:
      Role :
        - Fn::ImportValue: 'testk2:ECSTaskRoleId'
      PolicyName: test-snspolicy
      PolicyDocument:
        Statement:
          - Effect: Allow
            Action:
              - 'sns:Publish'
              - 'kms:Decrypt'
              - 'kms:GenerateDataKey'
     
    Metadata:
      'AWS::CloudFormation::Designer':
        id: c5c7c890-30c7-470d-9233-57b8bd630856

我收到以下錯誤

找不到名為 AROA3RRAFXNEDPVQKOLIW 的角色。 (服務:AmazonIdentityManagement;狀態代碼:404;錯誤代碼:NoSuchEntity;請求 ID:d5ad937f-94c3-458e-a803-0c37258e05f1;代理:null)

如何導入 IAM::Role 以在另一個堆棧中附加策略? CloudFormation 初學者:(

問題是 Type: 'AWS::IAM::Policy' property Roles 需要 Role name不是 role ID

CloudFormation 對名稱和 ID 非常敏感。 因此,請始終確保您提及正確的財產。

Outputs:
  ECSTaskRole:
    Description: The ECSRole name
    Value: !Ref ECSRole

因此,在導出時,它將導出名稱,而 importValue 將正確采用該名稱。

AWS::IAM::策略角色

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM