2

awsdeploy を使用して、エラスティック Beanstalk ASP.NET MVC アプリケーションをデプロイしています。このアプリケーションには、.msi インストーラー (CRRuntime_64bit_13_0_6.msi) を実行することによってのみインストールできる Crystal Reports が必要です。

展開の一部としてインストーラーを実行するために、次のようなカスタム ターゲットを追加しました。

<!--install msi-->
  <Target Name="InstallCrystalReports" AfterTargets="AddIisSettingAndFileContentsToSourceManifest">
    <Message Text="Install Crystal Reports msi" />
    <ItemGroup>
      <MsDeploySourceManifest Include="runCommand">
        <Path>c:\mypath\installCrystalReports.cmd</Path>
        <waitAttempts>20</waitAttempts>
        <waitInterval>300000</waitInterval>
        <dontUseCommandExe>false</dontUseCommandExe>
        <AdditionalProviderSettings>waitAttempts;waitInterval;dontUseCommandExe</AdditionalProviderSettings>
      </MsDeploySourceManifest>
    </ItemGroup>
  </Target>

インストールには約 1 分かかる場合があり、インストーラーによって作成されたログ ファイルを表示して、正常に開始されたことを確認できます。ただし、runCommand は、エラーで終了する前に最大 5 秒間しか実行できません。waitAttempts と waitInterval を変更しても影響はないようです。

以下は、「C:\Program Files\Amazon\ElasticBeanstalk\logs\AWSDeployment.log」からの抜粋で、awsdeploy/msdeploy がインストールを途中で終了する方法を示しています。

2013-08-19 12:42:11,428 INFO 5 DeploymentLog - C:\mypath>msiexec /i  CRRuntime_64bit_13_0_6.msi /quiet /norestart /l C:\mypath\CRRuntime_64bit_13_0_6.txt 

2013-08-19 12:42:12,426 WARN 1 AWSBeanstalkCfnDeploy.DeploymentUtils - The process 'C:\Windows\system32\cmd.exe' (command line '') is still running. Waiting for 1000 ms (attempt 1 of 5).
2013-08-19 12:42:12,426 WARN 1 DeploymentLog - The process 'C:\Windows\system32\cmd.exe' (command line '') is still running. Waiting for 1000 ms (attempt 1 of 5).
2013-08-19 12:42:13,440 WARN 1 AWSBeanstalkCfnDeploy.DeploymentUtils - The process 'C:\Windows\system32\cmd.exe' (command line '') is still running. Waiting for 1000 ms (attempt 2 of 5).
2013-08-19 12:42:13,440 WARN 1 DeploymentLog - The process 'C:\Windows\system32\cmd.exe' (command line '') is still running. Waiting for 1000 ms (attempt 2 of 5).
2013-08-19 12:42:14,454 WARN 1 AWSBeanstalkCfnDeploy.DeploymentUtils - The process 'C:\Windows\system32\cmd.exe' (command line '') is still running. Waiting for 1000 ms (attempt 3 of 5).
2013-08-19 12:42:14,454 WARN 1 DeploymentLog - The process 'C:\Windows\system32\cmd.exe' (command line '') is still running. Waiting for 1000 ms (attempt 3 of 5).
2013-08-19 12:42:15,468 WARN 1 AWSBeanstalkCfnDeploy.DeploymentUtils - The process 'C:\Windows\system32\cmd.exe' (command line '') is still running. Waiting for 1000 ms (attempt 4 of 5).
2013-08-19 12:42:15,468 WARN 1 DeploymentLog - The process 'C:\Windows\system32\cmd.exe' (command line '') is still running. Waiting for 1000 ms (attempt 4 of 5).
2013-08-19 12:42:16,482 WARN 1 AWSBeanstalkCfnDeploy.DeploymentUtils - The process 'C:\Windows\system32\cmd.exe' (command line '') is still running. Waiting for 1000 ms (attempt 5 of 5).
2013-08-19 12:42:16,482 WARN 1 DeploymentLog - The process 'C:\Windows\system32\cmd.exe' (command line '') is still running. Waiting for 1000 ms (attempt 5 of 5).
2013-08-19 12:42:16,482 ERROR 1 AWSBeanstalkCfnDeploy.DeploymentUtils - Exception during deployment.

インストーラーが正常に実行されるように、タイムアウトを増やす方法はありますか? または、展開の一部としてインストーラーを実行する方法について、他のアイデアはありますか?

4

1 に答える 1

3

AWS Elastic Beanstalk インスタンスに MSI パッケージをインストールする簡単な方法は、.ebextensionsメカニズムを使用することです。

プロジェクトに という名前のフォルダーを作成し.ebextensions、そこに拡張子.config(たとえばinstalls.config) を付けたファイルを配置します。これは、実行するインストールと、デプロイ前に各インスタンスで実行するコマンドを記述した YAML ファイルです。簡単な例は次のようになります

packages:
    msi:
      CrystalReports: http://myfilehost.com/packages/CrystalReports.msi

URL が公的にアクセス可能な場所である場合、MSI を配置できます。これは、たとえば S3 バケットにある可能性があります。

AWS Elastic Beanstalk のカスタマイズ機能の詳細については、http: //docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-windows-ec2.htmlを参照してください。

この機能の概要については、AWS 開発者ブログ ( http://blogs.aws.amazon.com/net/post/Tx1RLX98N5ERPSA/Customizing-Windows-Elastic-Beanstalk-Environments-Part-1 ) を参照してください。

于 2013-08-19T15:35:39.080 に答える