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

Template contains errors.: Invalid template resource property 'Fn::ImportValue'

我有一个在云形成 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

============================================= ===================================== 代码部署堆栈

--- 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

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

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

我认为您的版本中可能有一些引述不正确。

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