

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 引導 Amazon ECS Linux 容器執行個體傳遞資料
<a name="bootstrap_container_instance"></a>

當您啟動 Amazon EC2 執行個體時，可以將使用者資料傳送到 EC2 執行個體。此資料可用來執行常見的自動化組態任務，甚至在執行個體啟動時，執行指令碼。對於 Amazon ECS，使用者資料的最常用案例是將組態資訊傳送到 Docker 常駐程式和 Amazon ECS 容器代理程式。

您可以將多種類型的使用者資料傳遞給 Amazon EC2，包含雲端 boothook、shell 指令碼和 `cloud-init` 指令。如需這些和其他格式類型的詳細資訊，請參閱 [Cloud-Init 文件](https://cloudinit.readthedocs.io/en/latest/explanation/format.html)。

若要在使用 Amazon EC2 啟動精靈時傳遞此使用者資料，請參閱[啟動 Amazon ECS Linux 容器執行個體](launch_container_instance.md)。

您可以設定容器執行個體，在容器代理程式組態或 Docker 常駐程式組態中傳遞資料。

## Amazon ECS 容器代理程式
<a name="bootstrap_container_agent"></a>

Amazon ECS 最佳化 AMI 的 Linux 變體會在容器代理程式啟動時，於 `/etc/ecs/ecs.config` 檔案中尋找代理程式組態資料。您可以使用 Amazon EC2 使用者資料在啟動時指定此組態資料。如需可用 Amazon ECS 容器代理程式組態變數的詳細資訊，請參閱 [Amazon ECS 容器代理程式組態](ecs-agent-config.md)。

若只要設定單一代理程式組態變數 (例如叢集名稱)，請使用 **echo** 將變數複製至組態檔案：

```
#!/bin/bash
echo "ECS_CLUSTER=MyCluster" >> /etc/ecs/ecs.config
```

如有多個變數要寫入 `/etc/ecs/ecs.config`，請使用以下 `heredoc` 格式。此格式會將開頭為 **cat** 和 `EOF` 之行間的所有項目寫入組態檔案。

```
#!/bin/bash
cat <<'EOF' >> /etc/ecs/ecs.config
ECS_CLUSTER=MyCluster
ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}
ECS_LOGLEVEL=debug
ECS_WARM_POOLS_CHECK=true
EOF
```

若要設定自訂執行個體屬性，請設定 `ECS_INSTANCE_ATTRIBUTES` 環境變數。

```
#!/bin/bash
cat <<'EOF' >> ecs.config
ECS_INSTANCE_ATTRIBUTES={"envtype":"prod"}
EOF
```

## Docker 常駐程式
<a name="bootstrap_docker_daemon"></a>

您可以使用 Amazon EC2 使用者資料指定 Docker 常駐程式組態資訊。如需組態選項的詳細資訊，請參閱 [Docker 常駐程式文件](https://docs.docker.com/reference/cli/dockerd/)。

**注意**  
AWS 不支援自訂 Docker 組態，因為它們有時可能會與未來的 Amazon ECS 變更或功能衝突，而不會出現警告。

在下例中，自訂選項會新增到 Docker 常駐程式組態檔案，`/etc/docker/daemon.json`，然後在執行個體啟動時在使用者資料中指定它。

```
#!/bin/bash
cat <<EOF >/etc/docker/daemon.json
{"debug": true}
EOF
systemctl restart docker --no-block
```

在下例中，自訂選項會新增到 Docker 常駐程式組態檔案，`/etc/docker/daemon.json`，然後在執行個體啟動時在使用者資料中指定它。此範例顯示如何停用 Docker 常駐程式組態檔案中的 Docker 代理。

```
#!/bin/bash
cat <<EOF >/etc/docker/daemon.json
{"userland-proxy": false}
EOF
systemctl restart docker --no-block
```