Powershellスクリプトをappspec.yml
ファイルに直接含めることは許容されますか?
version: 0.0
os: windows
files:
- source: ./MyWebsiteFiles
destination: /MyWebsite
hooks:
AfterInstall:
- location: /Scripts/MyScript.ps1
timeout: 300
EC2インスタンスのPowershellコンソールを介して即座に実行されるps1
ファイルを実行していますが、Powershellスクリプトを実行する時点で展開が停止したり失敗したりします。
CodeDeployのドキュメントで確認できるように、appspec.yml
ファイルに含めることができる受け入れ可能なファイルタイプのリストはありません。
ご協力いただきありがとうございます。
受け入れ可能なスクリプトタイプの明確なリストを見つけることはできませんでしたが、答えはYes
のようです-Powershell _.ps1
_スクリプトは受け入れ可能であり、_appspec.yml
_ファイル。
私のPowershellスクリプトは、@ kafkaによるトラブルシューティングページで推奨されているようにコードを追加するまで一貫して機能していなかったため、スクリプトにはその上に次のものが含まれています。
_# Are you running in 32-bit mode?
# (\SysWOW64\ = 32-bit mode)
if ($PSHOME -like "*SysWOW64*")
{
Write-Warning "Restarting this script under 64-bit Windows PowerShell."
# Restart this script under 64-bit Windows PowerShell.
# (\SysNative\ redirects to \System32\ for 64-bit mode)
& (Join-Path ($PSHOME -replace "SysWOW64", "SysNative") powershell.exe) -File `
(Join-Path $PSScriptRoot $MyInvocation.MyCommand) @args
# Exit 32-bit script.
Exit $LastExitCode
}
# Was restart successful?
Write-Warning "Hello from $PSHOME"
Write-Warning " (\SysWOW64\ = 32-bit mode, \System32\ = 64-bit mode)"
Write-Warning "Original arguments (if any): $args"
# Your 64-bit script code follows here...
# ...
#
# I PUT MY SCRIPT HERE
#
_
私のスクリプトがPowershellの64ビットバージョンとのみ互換性があるかどうか、またはそれを見つける方法についてはまだわかりませんが、この変更で動作します。
これが誰かのお役に立てば幸いです。
_.ps1
_スクリプトの実行で直面した問題を強調したいと思います。私の経験から、_ps1
_スクリプトは展開パッケージのルートに配置する必要があります(appspec.ymlファイルと同じフォルダーの場所)そうでない場合、スクリプトの実行に失敗し、デプロイメントがCodeDeployで「成功」と表示されます。これについての詳細 ここ 。
はい、できますが、スクリプトの実行中に発生した変数エラーを設定しない限り、展開は停止しません。
$ErrorActionPreference = ‘Stop’
詳細については、このリンクを参照してください。
https://aws.Amazon.com/premiumsupport/knowledge-center/powershell-cmdlet-errors-codedeploy/