web-dev-qa-db-ja.com

AWS IAM Cloudformation YAMLテンプレートエラー: 'null'値は許可されていません

クロスアカウントの読み取り専用アクセスを許可するIAMロールのCloudformationテンプレートに取り組んでいます。読み取り専用アクセスにも管理ポリシーを使用します。これまでにいくつかのエラーを解決しましたが、テンプレートを検証しようとすると、「null」の値はテンプレートでは許可されていません」というエラーが発生します。スペースや構文の問題だと思いますが、最初からcloudformationテンプレートを作成してYAMLを使用するのは初めてなので、確信が持てません。

AWSTemplateFormatVersion: '2010-09-09'
Description: AWS CloudFormation template IAM Role for New Relic to have read access to AWS account
Resources:
  NewRelicInfrastructure-IntegrationsRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
      Version: '2012-10-17'
      Statement:
        Effect: Allow
        Principal:
          AWS: 11111111
        Action: sts:AssumeRole
        Condition:
          StringEquals:
          sts:ExternalId: '11111'
  Path: '/'
  ManagedPolicyArns: arn:aws:iam::aws:policy/ReadOnlyAccess
  RoleName: NewRelicInfrastructure-Integrations2
7
Kyle Mcadams

インデントが修正されました。AssumeRolePolicyDocumentで何かを指定していましたが、YAMLシンタックは正しくありませんでした。これは機能しました:

AWSTemplateFormatVersion: '2010-09-09'
Description: AWS CloudFormation template IAM Role for New Relic to have read access to AWS account
Resources:
  NewRelicInfrastructureIntegrationsRole: 
    Type: AWS::IAM::Role
    Properties:
      Path: '/managed/'
      ManagedPolicyArns: 
        - 'arn:aws:iam::aws:policy/ReadOnlyAccess'
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - 
          Action: sts:AssumeRole  
          Effect: Allow
          Principal:
            AWS: 1111111111111
          Condition:
            StringEquals:
              sts:ExternalId: '11111'
      RoleName: NewRelicInfrastructureIntegrationsRole
4
Kyle Mcadams

問題はAssumeRolePolicyDocument:にあります。必須ですが、空のままにしました。 PathではなくManagedPolicyArnsの下にRoleNameResourcesPropertiesがあるインデントの問題もあります。

試してください:

AWSTemplateFormatVersion: '2010-09-09'
Description: AWS CloudFormation template IAM Role for New Relic to have read access to AWS account
Resources:
  NewRelicInfrastructure-IntegrationsRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          Effect: Allow
          Principal:
            AWS: 11111111
          Action: sts:AssumeRole
          Condition:
            StringEquals:
            sts:ExternalId: '11111'
      Path: '/'
      ManagedPolicyArns: arn:aws:iam::aws:policy/ReadOnlyAccess
      RoleName: NewRelicInfrastructure-Integrations2
1
kichik

YAMLインタープリターをオンラインで使用して、yamlファイルでnull値を取得している可能性がある場所を示します。間違ったインデントがnull値になる可能性があるため、それらを見つけるのは困難です。yamlインタープリターは、jsonでその値を取得している場所を示します。

0
Kenzo