amazon-web-services - CloudFormation 没有执行我的命令?

标签 amazon-web-services aws-cloudformation

我正在通过 CloudFormation 执行命令,但它不起作用。另外,我在日志中没有收到任何错误。能够使用此模板创建实例和 EBS,但命令未执行。

这是我正在使用的模板:

{
  "Description" : "AWS CloudFormation Sample Template 
   EC2InstanceWithSecurityGroupSampleAndEBS",
"Resources": {
    "Ec2Instance": {
        "Type": "AWS::EC2::Instance",
        "Properties": {
            "KeyName": "123",
            "ImageId": "280a1kk",
            "InstanceType": "t1.micro",
            "NetworkInterfaces" : [{
                  "GroupSet"                 : ["ds"],
                  "AssociatePublicIpAddress" : "true",
                  "DeviceIndex"              : "0",
                  "DeleteOnTermination"      : "true",
                  "SubnetId"                 : "7f"
                  }
                ],
            "BlockDeviceMappings": [
                 {
                  "DeviceName": "/dev/sdm",
                  "Ebs": {
                      "VolumeType": "io1",
                      "Iops": 300,
                      "DeleteOnTermination": true,
                      "VolumeSize": 100
                      }
                }
              ],
           },
        "Metadata": {
          "AWS::CloudFormation::Init": {
             "config": {
               "commands": {
                   "1_mkfs": {
                     "command" : "mkfs -t ext4 /dev/xvdm\n"
                   },
                   "2_mkdir": {
                      "command" : "mkdir /mntfirm\n"
                   },
                   "3_mount": {
                      "command" : "mount /dev/xvdm /mntfirm"
                   }
               }
            }
         }
      }
    }
   }
  }

请帮帮我。

最佳答案

您需要安装 cfn bootstrap 并执行命令,试试这个

   {
   "Description":"AWS CloudFormation Sample Template EC2InstanceWithSecurityGroupSampleAndEBS",
   "Resources":{
      "Ec2Instance":{
         "Metadata":{
            "AWS::CloudFormation::Init":{
               "configSets" : {
            "InstallAndRun" : [ "config" ]
          },
               "config":{
                  "commands":{
                     "1_mkfs":{
                        "command":"mkfs -t ext4 /dev/xvdm\n"
                     },
                     "2_mkdir":{
                        "command":"mkdir /mntfirm\n"
                     },
                     "3_mount":{
                        "command":"mount /dev/xvdm /mntfirm"
                     }
                  }
               }
            }
         },
         "Type":"AWS::EC2::Instance",
         "Properties":{

            "ImageId":"AMI",
            "InstanceType":"t1.micro",
            "KeyName": "KEY",
            "NetworkInterfaces":[
               {
                  "GroupSet":[
                     "sg-xxx"
                  ],
                  "AssociatePublicIpAddress":"true",
                  "DeviceIndex":"0",
                  "DeleteOnTermination":"true",
                  "SubnetId":"subnet-xxx"
               }
            ],
            "BlockDeviceMappings":[
               {
                  "DeviceName":"/dev/sdm",
                  "Ebs":{
                     "VolumeType":"io1",
                     "Iops":300,
                     "DeleteOnTermination":true,
                     "VolumeSize":100
                  }
               }
            ],
            "UserData":{
               "Fn::Base64":{
                  "Fn::Join":[
                     "",
                     [
                        "#!/bin/bash -xe\n",
                        "apt-get install -y python-setuptools\n",
                        "mkdir -p /opt/aws/bin\n",
                        "wget https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n",
                        "easy_install --script-dir /opt/aws/bin aws-cfn-bootstrap-latest.tar.gz\n",
                        "apt-get update\n",
                        "# Install the files and packages from the metadata\n",
                        "/opt/aws/bin/cfn-init -v ",
                        "         --stack ",
                        {
                           "Ref":"AWS::StackName"
                        },
                        "         --resource Ec2Instance ",
                        "         --config InstallAndRun ",
                        "         --region ",
                        {
                           "Ref":"AWS::Region"
                        },
                        "\n",
                        "# Signal the status from cfn-init\n",
                        "/opt/aws/bin/cfn-signal -e $? ",
                        "         --stack ",
                        {
                           "Ref":"AWS::StackName"
                        },
                        "         --resource Ec2Instance ",
                        "         --region ",
                        {
                           "Ref":"AWS::Region"
                        },
                        "\n"
                     ]
                  ]
               }
            }
         }
      }
   }
} 

所有事件都会记录到系统日志

关于amazon-web-services - CloudFormation 没有执行我的命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51184341/

相关文章:

amazon-web-services - 如何解决 Terraform 资源错误 UnauthorizedOperation : This operation does not support shared VPCs

aws-cloudformation - 如何正确将EFS文件系统ID传递给cloudformation模板?

amazon-web-services - 允许特定的 api 网关服务承担角色

java - AWS Java 开发工具包 : check if an object exists with a specific version in an S3 bucket

amazon-web-services - 从 SQS 队列中选择性地读取消息

amazon-web-services - CloudFormation可以输出数组吗

aws-cloudformation - Cloudformation 堆栈创建策略

amazon-web-services - 使用 CloudFormation 和 SNS 支持的 CustomResources 挂起堆栈

amazon-web-services - MSK 没有安全性,当创建从 IoT Core 到 Kafka 的规则操作时,它要求我选择安全性,我可以避免这种情况吗?

amazon-web-services - CloudFormation ElasticIP 参数