

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

# 使用 設定 Amazon EC2 安全群組和執行個體類型 AWS CLI
<a name="using-features.managing.ec2.aws-cli"></a>

您可以使用 AWS 命令列界面 (AWS CLI) 在 Elastic Beanstalk 環境中設定 Amazon EC2 執行個體。

## 使用 設定 EC2 安全群組 AWS CLI
<a name="using-features.managing.ec2.aws-cli.security-groups"></a>

本主題提供適用於單一執行個體和負載平衡 （多執行個體） 環境的不同 EC2 安全群組組態範例。如需這些範例中選項的詳細資訊，請參閱 [aws：autoscaling：launchconfiguration](command-options-general.md#command-options-general-autoscalinglaunchconfiguration)。

**備註**  
根據預設，建立環境操作會提供 EC2 安全群組。根據預設，它也會建立具有應用程式負載平衡器的環境。  
更新環境操作可用來使用布林值選項 停用或啟用您環境的預設 EC2 安全群組`DisableDefaultEC2SecurityGroup`。*範例 5* 顯示如果您先前已修改環境，如何將環境設回預設安全組態。

下列範例顯示取消預設 EC2 安全群組的 [create-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/create-environment.html) 命令，並改為提供自訂安全群組。由於 `DisableDefaultEC2SecurityGroup`選項設定為 `true`，因此不會建立 Elastic Beanstalk 通常與 EC2 執行個體建立關聯的預設 EC2 安全群組。因此，您必須為其他安全群組提供 `SecurityGroups`選項。

請注意， [aws:elasticbeanstalk:environment](command-options-general.md#command-options-general-elasticbeanstalkenvironment)`EnvironmentType`選項設定為 `SingleInstance`。若要建立單一執行個體環境，您必須指定此選項，因為 `LoadBalanced`是預設的 `EnvironmentType`。由於此環境不包含負載平衡器，因此我們不需要指定負載平衡器安全群組。

**Example 1 — 具有自訂 EC2 安全群組的新單一執行個體環境 （命名空間選項內嵌）**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2023 v6.5.0 applrunning Node.js 22" \
--option-settings \
Namespace=aws:elasticbeanstalk:environment,OptionName=EnvironmentType,Value=SingleInstance \
Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \
Namespace=aws:autoscaling:launchconfiguration,OptionName=DisableDefaultEC2SecurityGroup,Value=true \
Namespace=aws:autoscaling:launchconfiguration,OptionName=SecurityGroups,Value=sg-abcdef01, sg-abcdef02 \
Namespace=aws:autoscaling:launchconfiguration,OptionName=EC2KeyName,Value=my-keypair
```





或者，您也可以使用 `options.json` 檔案來指定命名空間選項，而非透過內嵌方式一併包含於其中。

**Example 2 — 具有自訂 EC2 安全群組的新單一執行個體環境 (`options.json`檔案中的命名空間選項）**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2023 v6.5.0 running Node.js 22" \
--option-settings file://options.json
```

**Example**  

```
### example options.json ###
[
  { "Namespace" : "aws:elasticbeanstalk:environment", 
    "OptionName" : "EnvironmentType", 
    "Value" : "SingleInstance" 
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "IamInstanceProfile",
    "Value": "aws-elasticbeanstalk-ec2-role"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "DisableDefaultEC2SecurityGroup",
    "Value": "true"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "SecurityGroups",
    "Value": "sg-abcdef01, sg-abcdef02"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "EC2KeyName",
    "Value": "my-keypair"
  }
]
```

下列範例會建立負載平衡的環境。它會指定[aws:elasticbeanstalk:environment](command-options-general.md#command-options-general-elasticbeanstalkenvironment)命名空間選項`LoadBalancerType`設定為 `application`。由於我們使用 `DisableDefaultEC2SecurityGroup`選項停用預設 EC2 安全群組，因此我們需要再次為 EC2 執行個體提供自己的自訂安全群組，並使用 [aws:autoscaling:launchconfiguration](command-options-general.md#command-options-general-autoscalinglaunchconfiguration)`SecurityGroups`選項，如上一個範例。由於此環境具有用於路由流量的負載平衡器，因此我們也必須為負載平衡器提供安全群組。

若要建立具有傳統負載平衡器但組態相同的 環境，請將[aws:elasticbeanstalk:environment](command-options-general.md#command-options-general-elasticbeanstalkenvironment)命名空間選項的組態更新`LoadBalancerType`為 `classic`。

不同的負載平衡器類型具有不同的命名空間，其中包含指定安全群組的選項：


+ 應用程式負載平衡器 – [aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2)`SecurityGroups`選項
+ 傳統負載平衡器 – [aws:elb:loadbalancer](command-options-general.md#command-options-general-elbloadbalancer)`SecurityGroups`選項
+ 網路負載平衡器 – 由於網路負載平衡器沒有安全群組，請使用 VPC 識別符設定 EC2 安全群組。如需詳細資訊，請參閱《[Network Load Balancer 使用者指南》中的更新 Network Load Balancer 的安全群組](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-security-groups.html)。 **

**Example 3 — 具有自訂 EC2 安全群組的新多執行個體環境 (`options.json`檔案中的命名空間選項）**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2023 v6.5.0 running Node.js 22" \
--option-settings file://options.json
```

**Example**  

```
### example options.json ###
[
  { 
    "Namespace" : "aws:elasticbeanstalk:environment", 
    "OptionName" : "EnvironmentType", 
    "Value" : "LoadBalanced" 
  },
  { 
  "Namespace" : "aws:elasticbeanstalk:environment",
    "OptionName" : "LoadBalancerType",
    "Value" : "application"
  },
  {
    "Namespace" : "aws:elbv2:loadbalancer",
    "OptionName" : "SecurityGroups",
    "Value" : "sg-abcdefghikl012345"
  }, 
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "IamInstanceProfile",
    "Value": "aws-elasticbeanstalk-ec2-role"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "DisableDefaultEC2SecurityGroup",
    "Value": "true"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "SecurityGroups",
    "Value": "sg-abcdef01, sg-abcdef02"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "EC2KeyName",
    "Value": "my-keypair"
  }
]
```

您可以使用 [update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 命令停用現有環境的預設 EC2 安全群組。下列範例命令會停用預設 EC2 安全群組，並指派環境的 EC2 執行個體自訂 EC2 安全群組。

根據環境是否平衡負載，以及負載平衡器的類型，使用範例 4(a)、4(b) 或 4(c) 中的範例`options.jason`檔案。組態檔案 4(a) 指定單一執行個體環境的安全群組。由於它不需要負載平衡器，我們只會提供 EC2 執行個體的安全群組。組態檔案 4(b) 和 4(c) 會指定應用程式負載平衡器和傳統負載平衡器的安全群組。在這些情況下，我們也需要指定負載平衡器的安全群組。

**Example 4 — 更新現有環境以停用預設 EC2 安全群組 (`options.json`檔案中的命名空間選項）**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2023 v6.5.0 running Node.js 22" \
--option-settings file://options.json
```

**Example 4(a) — 單一執行個體環境的組態檔案 （無負載平衡器）**  

```
### example options.json ###
[
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "DisableDefaultEC2SecurityGroup",
    "Value": "true"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "SecurityGroups",
    "Value": "sg-abcdef01, sg-abcdef02"
  }
]
```

若要更新使用應用程式負載平衡器的環境，請使用 `aws:elbv2:loadbalancer` 命名空間來指定負載平衡器的安全群組。

**Example 4(b) — 具有應用程式負載平衡器的環境組態檔案**  

```
### example options.json ###
[
  {
    "Namespace" : "aws:elbv2:loadbalancer",
    "OptionName" : "SecurityGroups",
    "Value" : "sg-abcdefghikl012345"
  }, 
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "DisableDefaultEC2SecurityGroup",
    "Value": "true"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "SecurityGroups",
    "Value": "sg-abcdef01, sg-abcdef02"
  }
]
```

若要更新使用傳統負載平衡器的環境，請使用 `aws:elb:loadbalancer` 命名空間來指定負載平衡器的安全群組。

**Example 4(c) — 具有傳統負載平衡器的環境組態檔案**  

```
### example options.json ###
[
  {
    "Namespace" : "aws:elb:loadbalancer",
    "OptionName" : "SecurityGroups",
    "Value" : "sg-abcdefghikl012345"
  }, 
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "DisableDefaultEC2SecurityGroup",
    "Value": "true"
  },
  {
    "Namespace": "aws:autoscaling:launchconfiguration",n
    "OptionName": "SecurityGroups",
    "Value": "sg-abcdef01, sg-abcdef02"
  }
]
```

若要使用 Elastic Beanstalk 指派的預設安全群組將環境恢復為預設行為和組態，請使用 [update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 命令將 `DisableDefaultEC2SecurityGroup` 設定為 `false`。對於多執行個體環境，Elastic Beanstalk 也會處理您環境負載平衡器的安全群組和網路流量規則。

下列範例適用於單一執行個體或多執行個體 （負載平衡） 環境：

**Example 5 — 使用預設安全群組將環境更新回 (`options.json`檔案中的命名空間選項）**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2023 v6.5.0 running Node.js 22" \
--option-settings file://options.json
```

**Example**  

```
### example options.json ###
[
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "DisableDefaultEC2SecurityGroup",
    "Value": "false"
  }
]
```

## 使用 設定 EC2 與執行個體類型 AWS CLI
<a name="using-features.managing.ec2.aws-cli.instance-types"></a>

本主題提供在您環境中設定 EC2 執行個體類型的範例。

前兩個範例都是建立新環境。該命令會指定以 arm64 處理器架構為基礎的 Amazon EC2 執行個體類型 t4g.small。Elastic Beanstalk 會根據區域、平台版本和執行個體類型，為 EC2 執行個體提供預設的映像 ID (AMI)。執行個體類型會與處理器架構相互對應。`solution-stack-name` 參數會套用至平台版本。

**Example 1 — 建立以 arm64 為基礎的新環境 (命名空間選項內嵌)**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \
--option-settings \
Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \
Namespace=aws:ec2:instances,OptionName=InstanceTypes,Value=t4g.small
```



或者，您也可以使用 `options.json` 檔案來指定命名空間選項，而非透過內嵌方式一併包含於其中。

**Example 2 — 建立以 arm64 為基礎的新環境 (命名空間選項位於 `options.json` 檔案中)**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \
--option-settings file://options.json
```

**Example**  

```
### example options.json ###
[
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "IamInstanceProfile",
    "Value": "aws-elasticbeanstalk-ec2-role"
  },
  {
    "Namespace": "aws:ec2:instances",
    "OptionName": "InstanceTypes",
    "Value": "t4g.small"
  }
]
```





接下來的兩個範例會使用 [update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 命令，更新現有環境的組態。在這個範例中，我們要新增另一個同樣是以 arm64 處理器架構為基礎的執行個體類型。為現有環境新增的所有執行個體類型都必須具備相同的處理器架構。如果您想要將現有的執行個體類型取代為來自不同架構的執行個體類型，您可以這麼做。但請確定命令中的所有執行個體類型都具有相同類型的架構。

**Example 3 — 更新以 arm64 為基礎的現有環境 (命名空間選項內嵌)**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \
--option-settings \
Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \
Namespace=aws:ec2:instances,OptionName=InstanceTypes,Value=t4g.small,t4g.micro
```



或者，您也可以使用 `options.json` 檔案來指定命名空間選項，而非透過內嵌方式一併包含於其中。

**Example 4 — 更新以 arm64 為基礎的現有環境 (命名空間選項位於 `options.json` 檔案)**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \
--option-settings file://options.json
```

**Example**  

```
### example options.json ###
[
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "IamInstanceProfile",
    "Value": "aws-elasticbeanstalk-ec2-role"
  },
  {
    "Namespace": "aws:ec2:instances",
    "OptionName": "InstanceTypes",
    "Value": "t4g.small, t4g.micro"
  }
]
```





接下來的兩個範例會顯示更多 [create-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/create-environment.html) 命令，但不會提供 `InstanceTypes` 的值。若未指定 `InstanceTypes` 值，Elastic Beanstalk 預設為採用 x86 處理器架構。環境 EC2 執行個體的映像 ID (AMI) 會根據區域、平台版本和預設的執行個體類型而採取不同預設。執行個體類型會與處理器架構相互對應。

**Example 5 — 建立以 x86 為基礎的新環境 (命名空間選項內嵌)**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \
--option-settings \
Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role
```



或者，您也可以使用 `options.json` 檔案來指定命名空間選項，而非透過內嵌方式一併包含於其中。

**Example 6 — 建立以 x86 為基礎的新環境 (命名空間選項位於 `options.json` 檔案中)**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \
--option-settings file://options.json
```

**Example**  

```
### example options.json ###
[
  {
    "Namespace": "aws:autoscaling:launchconfiguration",
    "OptionName": "IamInstanceProfile",
    "Value": "aws-elasticbeanstalk-ec2-role"
  }
]
```