我想对无法启动 Amazon Elastic Compute Cloud (Amazon EC2) 实例的亚马逊机器映像 (AMI) 进行故障排除。
简短描述
当您从 AMI 启动实例时,您可能会收到以下错误消息之一:
- “Error launching AMI: In order to use the AWS Marketplace product you need to accept the terms and subscribe.”
- “Error: The instance configuration for this AWS Marketplace product is not supported.”
或者,您的实例可能会在启动后立即停止。当您加密实例的 Amazon Elastic Block Store (Amazon EBS) 卷时,通常会出现此问题。
解决方法
对“you need to accept the terms and subscribe”错误进行故障排除
您可以从使用 AWS Marketplace AMI 创建的实例创建或启动新的 AMI 和快照。与您共享这些实例的账户必须订阅该 AWS Marketplace AMI。如果共享账户未订阅原始 AWS Marketplace AMI,则无法从新 AMI 启动实例。您也无法连接根据该 AMI 的快照创建的 EBS 卷。
要解决此问题,请打开错误消息中的链接,将账户订阅 AMI。然后,同意 AMI 的条款。或者,使用 AWS Marketplace 控制台订阅 AMI。
对“instance configuration for this AWS Marketplace product is not supported”错误进行故障排除
您可以按供应商限制 AWS Marketplace AMI,以仅允许特定的实例类型。如果您尝试启动不支持的实例类型,则会收到“instance configuration for this AWS Marketplace product is not supported”错误消息。
有关支持的实例类型的信息,请访问 AWS Marketplace 页面上的 AMI。确保您使用支持的 AMI 实例类型。
对加密 EBS 卷问题进行故障排除
AWS Identity and Access Management (IAM) 用户必须有权访问 AWS Key Management Service (AWS KMS) 加密密钥才能启动实例。否则,实例启动将失败。
要解决此问题,请确认您已正确地与目标账户共享了 AMI。要共享 AMI,源账户的 IAM 用户或角色必须拥有 AMI 的 ModifyImageAttribute 权限。IAM 策略示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:ModifyImageAttribute"
],
"Resource": [
"arn:aws:ec2:us-east-1::image/12345678"
]
}
]
}
**注意:**将 arn:aws:ec2:us-east-1::image/12345678 替换为 AMI Amazon 资源名称 (ARN)。
在源账户中,完成以下步骤,与目标账户共享 AWS KMS 密钥:
- 打开 AWS KMS 控制台。
- 在导航窗格中,选择 Customer managed keys(客户自主管理型密钥),然后选择您的 AWS KMS 密钥。
- 在 Other AWS accounts(其他 AWS 账户)下,选择 Add other AWS accounts(添加其他 AWS 账户),然后选择 Add another AWS account(添加另一个 AWS 账户)。
- 对于 arn:aws:iam::,输入您的目标账户的 ID。例如 1234567890。
- 选择 Save changes(保存更改)。
在目标账户中,确认 IAM 用户或角色具有所需的加密权限。策略示例:
{ "Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:DescribeKey",
"kms:ReEncrypt*",
"kms:Decrypt",
"kms:GenerateDataKeyWithoutPlainText"
],
"Resource": [
"arn:aws:kms:us-east-1:Source-Account:key/key-id"
]
},
{
"Effect": "Allow",
"Action": "kms:CreateGrant",
"Resource": [
"arn:aws:kms:us-east-1:Source-Account:key/key-id"
],
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": true
}
}
}
]
}
**注意:**将 us-east-1 替换为您的 AWS 区域,将 Source-Account 替换为源账户 ID,将 key-id 替换为 AWS KMS 密钥 ID。
要测试您的配置,请使用加密 AMI 启动您的 EC2 实例。当您使用共享加密 AMI 时,您可以使用自己的 AWS KMS 密钥或源 AWS KMS 进行批量加密。最佳做法是使用目标账户中的 AWS KMS 对卷进行重新加密,以防出现源密钥泄露或权限撤销问题。
有关详细信息,请参阅如何跨账户共享加密的 AMI 以启动加密的 EC2 实例。