我启动附加了加密卷的​ EC2 实例,但该实例没有启动,该实例从挂起状态立即转为停止状态。我如何解决此问题?

如果您使用 AWS Key Management Service (AWS KMS) 来保护集成服务中的数据,那么在指定 IP 地址条件运算符时,或在同一访问策略语句中指定 aws:SourceIp 条件键时,请务必小心。将加密的 Amazon Elastic Block Store (Amazon EBS) 卷附加到 Amazon Elastic Compute Cloud (Amazon EC2) 实例会引发 Amazon EC2 向 AWS KMS 发送请求以解密卷的加密数据密钥。该请求来自与 EC2 实例关联的 IP 地址,而不是用户的 IP 地址。​如果设置了 SourceIp 条件,则会拒绝解密请求,实例将失败。

要检查这是不是原因,请为您的实例运行 describe-instances 命令。如果您收到以下错误消息,则很可能设置了通过​ AWS KMS 请求解密的 sourceIp 条件:

"StateReason": {
  "Message": "Client.InternalError: Client error on launch", 
  "Code": "Client.InternalError"
  },

如果您使用 AWS KMS 来保护集成服务中的数据,那么在指定 IP 地址条件运算符时,或在同一访问策略语句中指定 aws:SourceIp 条件键时,请务必小心。将加密的 EBS 卷附加到 EC2 实例会引发 Amazon EC2 向 AWS KMS 发送请求以解密卷的加密数据密钥。该请求来自与 EC2 实例关联的 IP 地址,而不是用户的 IP 地址。​如果设置了 sourceIp 条件,则会拒绝请求,实例将失败。

使用条件 kms:ViaService。​AWS KMS 允许代表您从该服务进行交互。

注意:具有已登录用户的 EC2 实例无法与此条件交互;只有代表您的服务可以。此交互记录在 AWS CloudTrail 中以供您查看。

"userIdentity": {
  "sessionContext": {
    "sessionIssuer": {
      "accountId": "450822418798",
      "principalId": "450822418798:aws:ec2-infrastructure",
      "userName": "aws:ec2-infrastructure",
      "arn": "arn:aws:iam::450822418798:role/aws:ec2-infrastructure",
      "type": "Role"
     },
…
    "eventType": "AwsApiCall",
    "@log_group": "CloudTrail/AllRegionLogGroup",
    "awsRegion": "eu-west-1",
    "requestParameters": {
      "encryptionContext": {
        "aws:ebs:id": "vol-0ca158925aa9c1883"
      }    
},

在此示例中,向 AWS KMS 提供 API 调用的 CloudTrail 条目。这是通过 aws:ec2-infrastructure 调用的,而不是从特定 IP 地址调用的。在将策略添加到允许 AWS KMS 与 EC2 交互的用户后,API 调用可以完成。


此页面对您有帮助吗? |

返回 AWS Support 知识中心

需要帮助?请访问 AWS 支持中心

发布时间:2017 年 7 月 3 日

更新时间:2018 年 7 月 18 日