

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# を使用したリソースの更新 AWS クラウドコントロール API
<a name="resource-operations-update"></a>

`update-resource` コマンドを使用して、既存のリソースを更新します。これには、Cloud Control API を使用してもともとプロビジョニングされていなかったリソースも含まれます。

**重要**  
Cloud Control API を使用して、他のサービスによってアクティブに管理されているリソースを更新しないことを強くお勧めします。これを行うと、予期しない結果につながる可能性があります。例えば、Cloud Control API を使用して、現在 CloudFormation スタックの一部であるリソースを更新しないでください。

既存のリソースを更新するには、リソースの識別子を指定する必要があります。リソースの識別子の決定方法の詳細については、「[リソースのプライマリ識別子の使用](resource-identifier.md#resource-identifier-using)」を参照してください。

リソースを更新すると、リソースプロパティの値が変更されます。リソースのプロパティはリソースタイプスキーマで定義されます。これには、そのプロパティが必須かどうか、有効な値、プロパティのその他の制約が含まれます。リソースプロパティ定義の表示の詳細については、「[リソースタイプのスキーマの表示](resource-types.md#resource-types-schemas)」を参照してください。

## パッチドキュメントの作成
<a name="resource-operations-update-patch"></a>

リソースを更新するには、まず JSON パッチドキュメントに含まれるパッチオペレーションのリストとして更新を定義します。このパッチドキュメントは、「[RFC 6902 - JavaScript Object Notation (JSON) Patch](https://datatracker.ietf.org/doc/html/rfc6902)」で定義されている標準に準拠している必要があります。

各パッチオペレーションでは、特定のリソースプロパティの 1 回の更新が定義されます。以下は必須プロパティです。
+ `op`: オペレーションのタイプ。Cloud Control API は、RFC 6902 で定義されているすべてのオペレーション (`add`、`remove`、`replace`、`move`、`copy`、`test`) をサポートします。
+ `path`: リソーススキーマの `properties` セクションを基準とした、リソースプロパティへのパス。

オペレーションによっては、追加のプロパティが必要になる場合があります。詳細については、「RFC 6902」を参照してください。

`update-resource` コマンドを使用するときは、パッチドキュメントを文字列としてインラインで指定することも、ファイルの場所を指定することもできます。

次の例では、 という名前の[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html)リソースの保持ポリシー`CloudControlApiLogGroup`を 90 日に更新します。

```
$ aws cloudcontrol update-resource --type-name AWS::Logs::LogGroup \
    --identifier CloudControlApiLogGroup \
    --patch-document '[{"op":"replace","path":"RetentionInDays","value":90}]'
```

## Cloud Control API がリソースを更新する方法
<a name="resource-operations-update-how"></a>

Cloud Control API は、リソースを更新するために、まずリソースの現在の状態を取得し、次に 2 ステッププロセスでリソースを更新します。
+ Cloud Control API は、更新リクエストで指定されたパッチオペレーションとリソースの現在の状態を組み合わせて、更新後のリソースの目的の状態を生成します。オペレーションは、パッチドキュメントに表示されている順序でシーケンシャルに適用されます。シーケンス内の各オペレーションは、リソースの現在の状態に適用され、結果のリソースの状態が次のオペレーションの対象になります。

  この時点で、次の場合、更新リクエスト全体が失敗します。
  + リクエストに含まれているパッチオペレーションが無効です。
  + `op` タイプ `test` のパッチオペレーションが失敗しています。

  このような場合は更新リクエスト全体が失敗し、Cloud Control API はリソースを更新しません。
+ その後、Cloud Control API はリソースタイプの更新ハンドラーを呼び出してリソースを更新します。

  更新ハンドラーがいずれかの時点で失敗しても、Cloud Control API はリソースを以前の状態にロールバックしません。

たとえば、 [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html)リソースを更新するために定義されている次のパッチドキュメントを考えてみましょう。このドキュメントには 2 つのパッチオペレーションが含まれています。最初のオペレーションはタイプ `test` で、リソースの保持ポリシーが 3653 日に設定されているかどうかを確認します。そのようになっていたら、リソースはテストに合格となり、Cloud Control API は次のオペレーションに進みます。このオペレーションにより、現在の保持ポリシーの値が 180 日に置き換えられます。リソースの保持ポリシーが 3653 日以外の値に設定されている場合、最初の `test` オペレーションは失敗となり、Cloud Control API は 2 番目の `replace` オペレーションを実行しません。

```
[
  {
    "op": "test",
    "path": "/RetentionInDays",
    "value":3653
  },
  {
    "op": "replace",
    "path": "/RetentionInDays",
    "value":180
  }
]
```

## リソース更新リクエストの進行状況の追跡
<a name="resource-operations-update-progress"></a>

`update-resource` コマンドは、リソースオペレーションリクエストの現在のステータスを追跡するために使用できる `ProgressEvent` オブジェクトを返します。詳細については、「[リソースオペレーションリクエストの進行状況の追跡](resource-operations-manage-requests.md#resource-operations-manage-requests-track)」を参照してください。