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

时间:2018-02-21 13:01:17

标签: amazon-web-services yaml amazon-cloudformation

我有一个模板,可以在Cloud Formation 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 个答案:

答案 0 :(得分:0)

我尝试使用导入功能重写第二个模板。你能尝试这样的事吗:

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

我认为你的版本可能会有一些引用。

答案 1 :(得分:0)

问题已修复,我只是更改了区域