

# 個々のスタックリソースのドリフトを検出
<a name="detect-drift-resource"></a>

スタック全体ではなく、スタック内の特定のリソースの変動を検出できます。これは、特定のリソースが意図されたテンプレート構成に一致しているかどうかを再度判断するだけでよい場合に特に役立ちます。

リソースでドリフト検出を実行すると、CloudFormation は、必要に応じて、スタックドリフトステータス全体および [**Last drift check time**] (前回のドリフトチェック時刻) も更新します。たとえば、スタックに `IN_SYNC` のドリフトステータスがあることを想定します。CloudFormation はそのスタックに含まれる 1 つ以上のリソースに対してドリフト検出を実行し、CloudFormation はそれらのリソースの 1 つ以上がドリフトしたことを検出します。CloudFormation はスタックドリフトのステータスを `DRIFTED` に更新します。逆に、ドリフトリソースが 1 つあることでドリフトステータスが `DRIFTED` になっているスタックがあるとします。そのリソースを意図したプロパティ値に戻し、リソースで再度ドリフトを検出した場合、CloudFormation はリソースのドリフトステータスとスタックのドリフトステータスの両方を `IN_SYNC` に更新するため、スタック全体でドリフトを再度検出する必要はありません。

**AWS マネジメントコンソール を使用して個々のリソースの変動を検出するには**

1. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) で CloudFormation コンソール を開きます。

1. スタックのリストから、リソースを含むスタックを選択します。CloudFormation により、そのスタックのスタックの詳細が表示されます。

1. 左のナビゲーションペインの [**スタック**] で、[**スタックアクション**] を選択し、[**ドリフトの検出**] を選択します。

1. [**リソースのドリフトステータス**] でリソースを選択し、[**リソースのドリフトを検出**] を選択します。

   CloudFormation は選択されたリソースに対してドリフト検出を実行します。成功すると、CloudFormation は必要に応じてリソースのドリフトステータスと全体的なスタックドリフトステータスを更新します。CloudFormation は、ドリフト検出がリソースおよびスタック全体で最後に実行された時刻のタイムスタンプも更新します。リソースが変更されている場合、CloudFormation はリソースの意図した値と現在のプロパティ値に関する詳細なドリフト情報を表示します。

1. リソースのドリフト検出結果を確認します。

   1. 変更されたリソースの詳細を表示します。

     1. 変更されたリソースを選択した状態で、[**View drift details (ドリフトの詳細を表示)**] を選択します。

       CloudFormation により、リソースのドリフトの詳細が表示され、リソースの意図した値と現在のプロパティ値、およびその 2 つの差異が示されます。

       違いを強調表示するには、[**違い**] セクションでプロパティ名を選択します。
       + 追加されたプロパティは **[Details]** (詳細) セクションの **[Current]** (最新の) 列で緑色で強調表示されます。
       + 削除されたプロパティは **[Details]** (詳細) セクションの **[Expected]** (期待される) 列で赤色で強調表示されます。
       + 値が変更されたプロパティは、[**Expected**] 列と [**最新の**] 列の両方で黄色で強調表示されます。  
![\[[ドリフト詳細] ページの [リソースドリフトステータス] セクションには、ドリフト検出をサポートするスタックに各リソースのドリフト情報が含まれています。詳細には、ドリフトステータス、意図した値、現在のプロパティ値などがあります。\]](http://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/images/console-stacks-drifts-drift-details-differences-1.png)

**AWS CLI を使用して個々のリソースの変動を検出するには**
+ 
**重要**  
古いデータが使用されることのないようにするため、スタックリソースの **[前回のドリフトチェック時刻]** をチェックして、リソースのドリフト結果に表示されるタイムスタンプより前の時刻になっていることを確認します。

  **detect-stack-resource-drift** を使用して個々のリソースの変動を検出するには AWS CLI コマンドを使用します。リソースの論理 ID とそれが含まれているスタックを指定します。

  次の例では、特定のスタックリソースの `my-drifted-resource` に対してドリフト検出オペレーションが実行されます。レスポンスは、値が変更された 2 つのプロパティに関する詳細を含む、リソースが変更されたことを確認する情報を返します。

  ```
  aws cloudformation detect-stack-resource-drift \
      --stack-name my-stack-with-resource-drift \
      --logical-resource-id my-drifted-resource
  ```

  出力:

  ```
  {
      "StackResourceDrift": {
          "StackId": "arn:aws:cloudformation:us-east-1:099908667365:stack/my-stack-with-resource-drift/489e5570-df85-11e7-a7d9-50example", 
          "ActualProperties": "{\"ReceiveMessageWaitTimeSeconds\":0,\"DelaySeconds\":120,\"RedrivePolicy\":{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:099908667365:my-stack-with-resource-drift-DLQ-1BCY7HHD5QIM3\",\"maxReceiveCount\":12},\"MessageRetentionPeriod\":345600,\"MaximumMessageSize\":262144,\"VisibilityTimeout\":60,\"QueueName\":\"my-stack-with-resource-drift-Queue-494PBHCO76H4\"}", 
          "ResourceType": "AWS::SQS::Queue", 
          "Timestamp": "2018-03-26T18:54:28.462Z", 
          "PhysicalResourceId": "https://sqs.us-east-1.amazonaws.com/099908667365/my-stack-with-resource-drift-Queue-494PBHCO76H4", 
          "StackResourceDriftStatus": "MODIFIED", 
          "ExpectedProperties": "{\"ReceiveMessageWaitTimeSeconds\":0,\"DelaySeconds\":20,\"RedrivePolicy\":{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:099908667365:my-stack-with-resource-drift-DLQ-1BCY7HHD5QIM3\",\"maxReceiveCount\":10},\"MessageRetentionPeriod\":345600,\"MaximumMessageSize\":262144,\"VisibilityTimeout\":60,\"QueueName\":\"my-stack-with-resource-drift-Queue-494PBHCO76H4\"}", 
          "PropertyDifferences": [
              {
                  "PropertyPath": "/DelaySeconds", 
                  "ActualValue": "120", 
                  "ExpectedValue": "20", 
                  "DifferenceType": "NOT_EQUAL"
              }, 
              {
                  "PropertyPath": "/RedrivePolicy/maxReceiveCount", 
                  "ActualValue": "12", 
                  "ExpectedValue": "10", 
                  "DifferenceType": "NOT_EQUAL"
              }
          ], 
          "LogicalResourceId": "my-drifted-resource"
      }
  }
  ```