web-dev-qa-db-ja.com

インストール前のAWSコードデプロイエラーは解決できません

そのため、アプリケーション用にCodeDeployをセットアップしようとしていますが、デプロイメントのBeforeInstall部分でエラーが発生し続けます。以下はエラーです。

Error Code UnknownError
Script Name
Message No such file or directory - /opt/codedeploy-agent/deployment-root/06100f1b-5495-42d9-bd01-f33d59fb5deb/d-NL5K1THE8/deployment-archive/appspec.yml
Log Tail

これは、YAMLファイルが間違った場所にあることを意味すると思いました。しかし、それは私のリビジョンのルートディレクトリにあります。より複雑なファイルの代わりに、そのような単純なAppSpecファイルを使用してみました。

    ## YAML Template.
---
version: 0.0
os: linux
files:
  - source: /
    destination: /home/ubuntu/www

これは最初の展開なので、多かれ少なかれ、リビジョン内のすべてのファイルをWebサーバーのパブリックディレクトリに追加する必要があります。

私はこれで髪を引き裂いていて、それは単純な問題だと感じています。 IAMポリシーとロールが正しく、デプロイ先のインスタンスでCodeDeployをセットアップして実行しています。

14
wmfrancia

ある時点でデプロイが成功したと思われるようです。

/ opt/codedeploy-agent/deployment-root/deployment-instructions /に移動し、そこにあるすべてのファイルを削除します。その後、この最後のデプロイは検索されません。

32
Levitron

私はちょうどこの同じ問題を抱えていて、それを理解しました! AppSpecファイルの拡張子が正しいことを確認してください。 yamlではなくymlを使用していましたが、すべてが完全に機能するようになりました。

4
redband

私はそれを次のように機能させました:

さまざまな理由で、いくつかの展開に失敗しました。 CDはEC2インスタンスとパスに保持されます/ opt/codedeploy-agent/deployment-root /失敗したデプロイメントのIDで指定されたフォルダー[非常に長い英数字の針] 。このフォルダーを削除し、[aws UIコンソールから]新しいデプロイを作成して、アプリケーションを再デプロイします。このようにして、間違った場所にあるappspec.ymlファイルが削除されます。これで成功するはずです。

追加通知:

CDは[特定の展開によって作成されていない]ファイルを書き換えませんCodeDeployは、さまざまなCD展開や他のCI/CDツールに干渉したくないため、すでにコード[ファイル]が存在するフォルダーには展開しません。 [ジェンキンスのように]。特定のデプロイメントでコードをすでにデプロイしているパスにのみデプロイされます。

デプロイメントを実行するフォルダーを空にして、CDを介してコードを再デプロイできます。

2
Kostas Demiris

ホストにログインすると、そこのディレクトリにappspec.ymlファイルが表示されますか?そうでない場合は、デプロイされた残りのコードでチェックインされていますか?

0
Chris Munns

この問題も発生しました。私の場合、リビジョンZipファイルはデプロイ時にディレクトリに抽出されます。そのための /opt/codedeploy-agent/deployment-root/xxx/xxx/deployment-archiveには、(実際のリビジョンファイルではなく)リビジョンファイルの親ディレクトリが含まれています。

重要なのは、親ディレクトリなしでリビジョンを圧縮することです。 Macターミナルでは、

cd your-app-directory-containing-appspec
Zip -r app.Zip . 
0
phpd