перекрестная ссылка на облачную информацию не работает - PullRequest
0 голосов
/ 07 сентября 2018

Я создал шаблон политики и вывел ARN:

Resources:

   # Codebuild Policies
   CodeBuildServiceRolePolicy1:
     Type: AWS::IAM::ManagedPolicy
     Properties: 
       Description: 'This service role enables AWS CodePipeline to interact with other AWS services, including AWS CodeBuild, on your behalf'
       Path: "/"
       PolicyDocument: 
         Version: "2012-10-17"
         Statement: 
           - Resource: "*"
             Effect: "Allow"
             Action:
...

Outputs:

   StackName:
   Value: !Ref AWS::StackName

   CodeBuildServiceRolePolicy:
     Description: The ARN of the ManagedPolicy1
     Value: !Ref CodeBuildServiceRolePolicy1
     Export:
       Name: !Sub '${EnvironmentName}-CodeBuildServiceRolePolicy1' 

Теперь я хочу импортировать эти политики в шаблон с ролями и

# Codebuilding  service role
CodeBuildRole:
  Type: AWS::IAM::Role
  Properties:
    RoleName: !Sub ${EnvironmentName}-CodeBuildRole
    AssumeRolePolicyDocument:
      Statement:
      - Action: ["sts:AssumeRole"]
        Effect: Allow
        Principal:
          Service: [codebuild.amazonaws.com]
    Version: "2012-10-17"
    Path: / 
    Policies:
    - PolicyDocument:
        Fn::ImportValue:
          !Sub ${EnvironmentName}-CodeBuildServiceRolePolicy1' 

Но это не удалось. Я получаю сообщение об ошибке, что не так?

Мерси заранее

A

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Решение состоит в том, чтобы использовать тип ресурса AWS: AWS::IAM::ManagedPolicy вместо AWS::IAM::Policy. Если вы используете AWS::IAM::ManagedPolicy, вы можете экспортировать ARN политики следующим образом

 CodeBuildServiceRolePolicy:
   Description: ARN of the managed policy
   Value: !Ref CodeBuildServiceRolePolicy

и импортируйте его в другой шаблон с fn::ImportValue или fn::GetAtt Использование AWS::IAM::Policy позволяет только создавать встроенные политики , на которые нельзя ссылаться .

0 голосов
/ 07 сентября 2018

Вы пытались сослаться на созданную вами управляемую политику с помощью первого стека, используя функцию! Ref?

CF для полиса:

AWSTemplateFormatVersion: "2010-09-09"
Resources:
  CodeBuildServiceRolePolicy1:
    Type: AWS::IAM::ManagedPolicy
    Properties: 
    Path: "/"
    PolicyDocument: 
    ...
    Outputs:
      CodeBuildServiceRolePolicy:
        Value: !Ref CodeBuildServiceRolePolicy1.Arn

CF на роль:

AWSTemplateFormatVersion: "2010-09-09"
Parameters:
  PolicyName: 
    Type: String
  Resources: 
    CodeBuildRole: 
      Type: "AWS::IAM::Role"
      Properties: 
        Path: "/"
        Policies: !Ref PolicyName

Также ознакомьтесь с документами для Cloudformation IAM и CloudFormation Функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...