Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 获取错误“;一个或多个Fn::子内在函数don';t指定预期参数";在CloudFormation中尝试使用UserData中的变量时_Amazon Web Services_Amazon Ec2_Amazon Cloudformation - Fatal编程技术网

Amazon web services 获取错误“;一个或多个Fn::子内在函数don';t指定预期参数";在CloudFormation中尝试使用UserData中的变量时

Amazon web services 获取错误“;一个或多个Fn::子内在函数don';t指定预期参数";在CloudFormation中尝试使用UserData中的变量时,amazon-web-services,amazon-ec2,amazon-cloudformation,Amazon Web Services,Amazon Ec2,Amazon Cloudformation,我在尝试使用时遇到此错误!在CloudFormation中的UserData中包含变量的Sub: 模板错误:一个或多个Fn::子内在函数未指定预期参数。指定一个字符串作为第一个参数,并指定一个可选的第二个参数,以指定要在字符串中替换的值的映射 为什么会出现这个错误 这是我的代码: LinuxEC2Instance: Type: AWS::EC2::Instance Properties: UserData: Fn::Base64: !Sub - arn_id: !If [

我在尝试使用时遇到此错误!在CloudFormation中的UserData中包含变量的Sub:

模板错误:一个或多个Fn::子内在函数未指定预期参数。指定一个字符串作为第一个参数,并指定一个可选的第二个参数,以指定要在字符串中替换的值的映射

为什么会出现这个错误

这是我的代码:

LinuxEC2Instance:
Type: AWS::EC2::Instance
Properties:
  UserData:
    Fn::Base64: !Sub
      - arn_id: !If [TestEnvironment, 'id1', 'id2']
      - key: !If [TestEnvironment, 'key1', 'key2']
      - |
        ARN_ID=${arn_id}
        KEY=${key}
        
        echo $ARN_ID 
        echo $KEY
要设置的第一个参数必须是字符串。因此,您应该更改
UserData
中的顺序。例如:

    Fn::Base64: 
      !Sub
        - |
          #!/bin/bash -xe
       
          ARN_ID=${arn_id}
          KEY=${key}
        
          echo $ARN_ID 
          echo $KEY
        - arn_id: !If [TestEnvironment, 'id1', 'id2']
          key: !If [TestEnvironment, 'key1', 'key2']

嗨,马辛,我已经试过了,信息保持不变…@Benny哦,是的。我更新了答案。第二个参数应该是一个对象。嘿,Marcin,这不会执行任何操作。。。。至少我看不到任何东西被执行。。。知道为什么吗?@Benny通常你会把
#/bin/bash
开始时。我更新了答案