【问题标题】:Running a Windows Powershell script on instance launch with Elastic Beanstalk使用 Elastic Beanstalk 在实例启动时运行 Windows Powershell 脚本
【发布时间】:2020-04-21 14:19:56
【问题描述】:

我有一个简单的 Windows Powershell 脚本,我希望它在 Elastic Beanstalk 环境中启动时在 EC2 实例上运行。它只是设置一个自签名 SSL 证书并将其绑定到 IIS 中的默认网站。

我知道这可以通过使用 UserData 单独使用 EC2 实例来完成(如下所示)...但是如何处理在 EB 环境中启动的任何实例?

<powershell>
Import-Module WebAdministration
Set-Location IIS:\SslBindings
New-WebBinding -Name "Default Web Site" -IP "*" -Port 443 -Protocol https
$c = New-SelfSignedCertificate -DnsName "domain.com" -CertStoreLocation cert:\LocalMachine\My
$c | New-Item 0.0.0.0!443
</powershell>

【问题讨论】:

    标签: amazon-web-services powershell amazon-ec2 amazon-elastic-beanstalk


    【解决方案1】:

    我不是 Powershell 专家,但您是否考虑过以下问题:

    • 在源包中创建一个名为 .ebextensions 的文件夹
    • 创建一个任何名称的文件,但它应该具有 .config 扩展名 (例如我的 script.config)并部署它。
    • myscript.confi 的内容应该有两个键,即 Files 和 命令。注意这里的 Yaml 格式可能会关闭并且 可能会导致部署失败
      files:  
            "c:/targetdirectory/my_script.ps1":
               content: |
           <powershell>
           Import-Module WebAdministration
           Set-Location IIS:\SslBindings
           New-WebBinding -Name "Default Web Site" -IP "*" -Port 443 -Protocol https
           $c = New-SelfSignedCertificate -DnsName "domain.com" -CertStoreLocation cert:\LocalMachine\My
           $c | New-Item 0.0.0.0!443
           </powershell> 
               encoding: (encoding format either plain or base64)
      commands:
            run_my_script: 
                  command: ./my_script.ps1
                  cwd: "c:/targetdirectory/"
    

    所以基本上,您只是创建一个包含脚本的文件,然后运行它。 More info is here.

    【讨论】:

    • 我读到了 EB 如何不在乎证书是否是自签名的,但它会查看域吗?我的设置使我无法提前了解环境的域,因此想知道在您的示例中放置类似 domain.com 的通用内容是否可行?
    猜你喜欢
    • 2017-09-15
    • 1970-01-01
    • 2018-08-23
    • 2018-05-09
    • 1970-01-01
    • 2017-03-15
    • 2017-03-11
    • 1970-01-01
    • 2017-08-30
    相关资源
    最近更新 更多