

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# レシピを使用したスクリプトの実行
<a name="workingcookbook-extend-scripts"></a>

**重要**  
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、[AWS re:Post](https://repost.aws/) または[AWS プレミアムサポート](https://aws.amazon.com/support)を通じて AWS サポート チームにお問い合わせください。

必要なカスタマイズタスクを実行するスクリプトがすでにある場合、通常、レイヤーを拡張する最も簡単な方法は、スクリプトを実行する簡単なレシピを実装することです。その後、適切なライフサイクルイベント (通常は Setup または Deploy) にレシピを割り当てることも、`execute_recipes` スタックコマンドを使用してレシピを手動で実行することもできます。

以下の例では Linux インスタンスでシェルスクリプトを実行しますが、Windows PowerShell スクリプトなど他のタイプのスクリプトにも同じ方法を使用できます。

```
cookbook_file "/tmp/lib-installer.sh" do
  source "lib-installer.sh"
  mode 0755
end

execute "install my lib" do
  command "sh /tmp/lib-installer.sh"
end
```

`cookbook_file` リソースは、クックブックの `files` ディレクトリのサブディレクトリに保存されたファイルを表します。このファイルはインスタンスの指定した場所に転送されます。この例では、シェルスクリプト `lib-installer.sh` をインスタンスの `/tmp` ディレクトリに転送し、ファイルのモードを `0755` に設定します。詳細については、「[cookbook\$1file](https://docs.chef.io/chef/resources.html#cookbook-file)」を参照してください。

`execute` リソースは、シェルコマンドなどのコマンドを表します。この例では `lib-installer.sh` を実行します。詳細については、「[execute](https://docs.chef.io/chef/resources.html#execute)」を参照してください。

スクリプトをレシピに組み込んで実行することもできます。次の例では Bash スクリプトを実行しますが、Chef では Csh、Perl、Python、Ruby もサポートしています。

```
script "install_something" do
  interpreter "bash"
  user "root"
  cwd "/tmp"
  code <<-EOH
    #insert bash script
  EOH
end
```

`script` リソースはスクリプトを表します。この例では Bash インタープリタを指定し、ユーザーを `"root"` に、作業ディレクトリを `/tmp` にそれぞれ設定します。次に、`code` ブロックで Bash スクリプトを実行します。このブロックには、行を必要な数だけ含めることができます。詳細については、「[script](https://docs.chef.io/chef/resources.html#script)」を参照してください。

レシピを使用してスクリプトを実行する方法の詳細については、「[例 7: コマンドとスクリプトの実行](cookbooks-101-basics-commands.md)」を参照してください。Windows インスタンスで PowerShell スクリプトを実行する方法の例については、「[Windows PowerShell スクリプトを実行する](cookbooks-101-opsworks-opsworks-powershell.md)」を参照してください。