代码之家  ›  专栏  ›  技术社区  ›  Ali Ahsan

模板包含错误:无效的模板资源属性“Fn::ImportValue”

  •  0
  • Ali Ahsan  · 技术社区  · 8 年前

    我有一个模板,可以在云形成YAML中创建IAM角色。我需要下一个模板中的服务Anr,但我遇到了这个错误。

    模板包含错误:无效的模板资源属性“Fn::ImportValue”

    IAMStack公司

    Resources: CodeDeployTrustRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Sid: '1' Effect: Allow Principal: Service: - codedeploy.us-east-1.amazonaws.com - codedeploy.us-west-2.amazonaws.com Action: sts:AssumeRole Path: "/" CodeDeployRolePolicies: Type: AWS::IAM::Policy Properties: PolicyName: CodeDeployPolicy PolicyDocument: Statement: - Effect: Allow Resource: - "*" Action: - ec2:Describe* - Effect: Allow Resource: - "*" Action: - autoscaling:CompleteLifecycleAction - autoscaling:DeleteLifecycleHook - autoscaling:DescribeLifecycleHooks - autoscaling:DescribeAutoScalingGroups - autoscaling:PutLifecycleHook - autoscaling:RecordLifecycleActionHeartbeat Roles: - Ref: CodeDeployTrustRole InstanceRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Effect: Allow Principal: Service: - ec2.amazonaws.com Action: - sts:AssumeRole Path: "/" InstanceRolePolicies: Type: AWS::IAM::Policy Properties: PolicyName: InstanceRole PolicyDocument: Statement: - Effect: Allow Action: - autoscaling:Describe* - autoscaling:EnterStandby - autoscaling:ExitStandby - cloudformation:Describe* - cloudformation:GetTemplate - s3:Get* Resource: "*" Roles: - Ref: InstanceRole InstanceRoleInstanceProfile: Type: AWS::IAM::InstanceProfile Properties: Path: "/" Roles: - Ref: InstanceRole Outputs: CodeDeployServiceRoleARN: Value: Fn::GetAtt: - CodeDeployTrustRole - Arn

    ================================================================================== CodeDeploystack

    --- AWSTemplateFormatVersion: '2010-09-09' Description: This template will create an s3bucket Resources: S3Bucket: Type: AWS::S3::Bucket Properties: AccessControl: PublicRead BucketName: CodeDeploy CodeDeployApplication: Type: 'AWS::CodeDeploy::Application' Properties: ComputePlatform: ec2 DeploymentGroup: Type: AWS::CodeDeploy::DeploymentGroup Properties: ApplicationName: !Ref CodeDeployApplication Deployment: Description: First time IgnoreApplicationStopFailures: true Revision: RevisionType: S3 S3Location: Bucket: Ref: S3Bucket ServiceRoleArn: 'Fn::ImportValue': !Sub '${IAMStack}-CodeDeployServiceRoleARN' Outputs: S3BucketName: Value: Ref: S3Bucket Description: Name of S3 bucket

    2 回复  |  直到 8 年前
        1
  •  0
  •   Jonatan    8 年前

    我尝试用导入函数重写第二个模板。你能试试这样的东西吗:

    AWSTemplateFormatVersion: '2010-09-09' Description: This template will create an s3bucket Resources: S3Bucket: Type: AWS::S3::Bucket Properties: AccessControl: PublicRead BucketName: CodeDeploy CodeDeployApplication: Type: "AWS::CodeDeploy::Application" Properties: ComputePlatform: ec2 DeploymentGroup: Type: AWS::CodeDeploy::DeploymentGroup Properties: ApplicationName: !Ref CodeDeployApplication Deployment: Description: First time IgnoreApplicationStopFailures: true Revision: RevisionType: S3 S3Location: !Ref S3Bucket ServiceRoleArn: Fn::ImportValue: Fn::Sub "${IAMStack}-CodeDeployServiceRoleARN" Outputs: S3BucketName: Value: !Ref S3Bucket Description: Name of S3 bucket

    我想你的版本中可能有一些引用被删掉了。

        2
  •  0
  •   Ali Ahsan    8 年前

    问题已解决,我只需更改区域