3

在此先感謝!CloudFormation Elasticsearch服務 - 相同資源上的資源之間的循環依賴關係

我一直停留在這個問題上的年齡並不能找到解決辦法......

基本上我想要實現我的elasticsearch服務相同的訪問策略,但是當我嘗試重新創建此在cloudformation我收到一個循環依賴錯誤..我知道什麼導致錯誤Fn :: GetAtt的引用彈性搜索DomainArn。

所以我的問題是我該如何去實現這個聲明而不必引用我的elk域名?

模板包含錯誤:資源之間的循環依賴關係:[XXXXXX]

"XXXXXX": { 
      "Type": "AWS::Elasticsearch::Domain", 
      "Properties": { 
       "AccessPolicies": { 
        "Version": "2012-10-17", 
        "Statement": [ 
         { 
          "Effect": "Allow", 
          "Principal": { 
           "AWS": { 
            "Fn::GetAtt": ["myuser", "Arn"] 
           } 
          }, 
          "Action": "es:*", 
          "Resource": { 
           "Fn::GetAtt": ["XXXXXX", "DomainArn"] 
          } 
         }, 
         { 
          "Sid": "", 
          "Effect": "Allow", 
          "Principal": { 
           "AWS": "*" 
          }, 
          "Action": "es:*", 
          "Resource": { 
           "Fn::GetAtt": ["XXXXXX", "DomainArn"] 
          }, 
          "Condition": { 
           "IpAddress": { 
            "aws:SourceIp": [ 
             "xx.xx.xx.xx", 
             "xx.xx.xx.xx" 
            ] 
           } 
          } 
         } 
        ] 
       }, 
       "DomainName": "XXXXXX", 
       "EBSOptions": { 
        "EBSEnabled": "True", 
        "VolumeSize": 10, 
        "VolumeType": "gp2" 
       }, 
       "ElasticsearchClusterConfig": { 
        "InstanceCount": 1, 
        "InstanceType": "t2.small.elasticsearch" 
       }, 
       "ElasticsearchVersion": "5.1", 
       "SnapshotOptions": { 
        "AutomatedSnapshotStartHour": 0 
       }, 
       "Tags": { 
        "Key": "name", 
        "Value": "XXXXXX" 
       } 
      } 
     }, 

回答

6

而不是使用Fn::GetAtt檢索域ARN,使用Fn:Sub使用規則here構建ARN(向下滾動到「使用以下語法來指定Amazon ES的域資源「)。

{ "Fn::Sub":"arn:aws:es:${AWS::Region}:${AWS::AccountId}:domain/XXXXXX" } 
+0

非常感謝!沒有更多驗證錯誤! –