Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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 创建堆栈时运行bash脚本_Amazon Web Services_Amazon Ec2_Amazon Cloudformation - Fatal编程技术网

Amazon web services 创建堆栈时运行bash脚本

Amazon web services 创建堆栈时运行bash脚本,amazon-web-services,amazon-ec2,amazon-cloudformation,Amazon Web Services,Amazon Ec2,Amazon Cloudformation,我正在设计一个AWS堆栈,其中包含多个实例,这些实例运行由几个任务组成的少量服务。其中一个服务使用NFS存储配置,在创建堆栈时需要设置一次此配置 我想出了一种在创建堆栈时运行一次配置脚本的方法: 配置需要配置自身以运行单个任务的服务 任务启动时,检查配置是否存在。如果没有,请运行配置脚本,然后更新所需的任务计数,以便创建其他实例 (1) 是避免竞争条件所必需的 虽然这很有效,但我觉得这是一种非常简单的实现方法:在创建堆栈时运行一次bash脚本。有更好的方法吗?您可以使用属性为terminate(

我正在设计一个AWS堆栈,其中包含多个实例,这些实例运行由几个任务组成的少量服务。其中一个服务使用NFS存储配置,在创建堆栈时需要设置一次此配置

我想出了一种在创建堆栈时运行一次配置脚本的方法:

  • 配置需要配置自身以运行单个任务的服务
  • 任务启动时,检查配置是否存在。如果没有,请运行配置脚本,然后更新所需的任务计数,以便创建其他实例
  • (1) 是避免竞争条件所必需的


    虽然这很有效,但我觉得这是一种非常简单的实现方法:在创建堆栈时运行一次bash脚本。有更好的方法吗?

    您可以使用属性为
    terminate
    (在脚本执行后终止实例)的资源运行一次性Bash脚本,并将属性设置为堆栈中最后创建的资源(因此创建EC2实例并在最后执行Bash脚本):


    通过“任务”和“服务”,您指的是ECS,还是完全其他什么?一些代码示例将有助于澄清您对当前方法的描述。
    Description: Run a bash script once when a stack is created.
    Mappings:
      # amzn-ami-hvm-2016.09.1.20161221-x86_64-gp2
      RegionMap:
        us-east-1:
          "64": "ami-9be6f38c"
    Resources:
      MyResource:
        Type: AWS::SNS::Topic
      WebServer:
        Type: AWS::EC2::Instance
        DependsOn: MyResource
        Properties:
          ImageId: !FindInMap [ RegionMap, !Ref "AWS::Region", 64]
          InstanceType: m3.medium
          InstanceInitiatedShutdownBehavior: terminate
          UserData:
            "Fn::Base64":
              !Sub |
                #!/bin/bash
                # [Contents of bash script here...]
                shutdown -h now