

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

# を使用したサードパーティーリソース AWS Config の による設定の記録 AWS CLI
<a name="customresources"></a>

サードパーティーのリソース、またはオンプレミスサーバー、SAAS モニタリングツール、バージョン管理システム (GitHub など) などのカスタムリソースタイプの設定を記録します。

 AWS Config コンソール AWS Config と APIs を使用して、サードパーティーリソースの設定データを に公開し、リソースインベントリと設定履歴を表示およびモニタリングできます。 AWS Config を使用してすべてのリソースを管理し、 AWS Config ルールを使用してベストプラクティスに対するコンプライアンスについてリソース設定を評価できます。 AWS Config ルールまたはコンフォーマンスパックを作成して、これらのサードパーティーリソースをベストプラクティス、内部ポリシー、規制ポリシーに照らして評価することもできます。

**注記**  
すべてのリソースタイプを記録する AWS Config ように を設定している場合、 で管理 (作成、更新、または削除) されているサードパーティーリソース CloudFormation は、 で設定項目 AWS Config として自動的に追跡されます。

**前提条件:** サードパーティーリソースまたはカスタムリソースタイプは、 を使用して登録する必要があります CloudFormation。

**Topics**
+ [リソースの追加](customresources-adding.md)
+ [設定項目の記録](add-custom-resource-type-cli.md)
+ [設定項目の読み取り](view-custom-resource-type-cli.md)
+ [リソースの削除](delete-custom-resource-type.md)

# へのサードパーティーリソースの追加 AWS Config
<a name="customresources-adding"></a>

 AWS Configにサードパーティーリソースを追加するには、次の手順に従います。

**Topics**
+ [ステップ 1: 開発環境をセットアップする](#customresources-setupdevenvironment)
+ [ステップ 2: リソースをモデル化する](#customresources-modelresource)
+ [ステップ 3: アーティファクトを生成する](#generateartifactsforcfnsubmit)
+ [ステップ 4: リソースを登録する](#customresources-registerresource)
+ [ステップ 5: リソース設定を公開する](#customresources-publishresourceconfiguration)

## ステップ 1: 開発環境をセットアップする
<a name="customresources-setupdevenvironment"></a>

 CloudFormation AWS CLIをインストールして設定します。 AWS CLI を使用すると、カスタムリソースをモデル化して登録できます。詳細については、[カスタムリソース](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html)および [CloudFormation Command Line Interface とは](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html)を参照してください。

## ステップ 2: リソースをモデル化する
<a name="customresources-modelresource"></a>

リソースタイプの設定に準拠し検証するリソースプロバイダスキーマを作成します。

1. `init` コマンドを使用して、リソースプロバイダプロジェクトを作成し、必要なファイルを生成します。

   ```
   $ cfn init
   Initializing new project
   ```

1. `init` コマンドを実行すると、ウィザードが起動し、リソース名の指定など、プロジェクトの設定手順が示されます。このウォークスルーでは、`MyCustomNamespace::Testing::WordPress` を指定してください。

   ```
   Enter resource type identifier (Organization::Service::Resource): MyCustomNamespace::Testing::WordPress
   ```

1. リソースのパッケージ名を入力します。

   ```
   Enter a package name (empty for default 'com.custom.testing.wordpress'): com.custom.testing.wordpress 
   Initialized a new project in /workplace/user/custom-testing-wordpress
   ```
**注記**  
プロジェクトの依存関係を正しく解決できるようにするために、生成されたプロジェクトを Maven サポートを使用して IDE にインポートできます。  
例えば、IntelliJ IDEA を使用している場合は、次の操作を行う必要があります。  
**[File]** (ファイル) メニューから **[New]** (新規) を選択し、**[Project From Existing Sources]** (既存のソースからのプロジェクト) を選択します。
プロジェクトディレクトリへの移動
**[Import Project]** (プロジェクトのインポート) ダイアログボックスで、**[Import project from external model]** (外部モデルからプロジェクトをインポート)、**[Maven]** の順に選択します。
**[Next]** (次へ) を選択してデフォルトを承諾し、プロジェクトの読み込みを完了します。

1. リソースのスキーマを含む `mycustomnamespace-testing-wordpress.json` ファイルを開きます。次のスキーマをコピーして `mycustomnamespace-testing-wordpress.json` に貼り付けます。

   ```
   {
     "typeName": "MyCustomNamespace::Testing::WordPress",
     "description": "An example resource that creates a website based on WordPress 5.2.2.",
     "properties": {
       "Name": {
         "description": "A name associated with the website.",
         "type": "string",
         "pattern": "^[a-zA-Z0-9]{1,219}\\Z",
         "minLength": 1, "maxLength": 219
       },
       "SubnetId": {
         "description": "A subnet in which to host the website.",
         "pattern": "^(subnet-[a-f0-9]{13})|(subnet-[a-f0-9]{8})\\Z",
         "type": "string"
       },
       "InstanceId": {
         "description": "The ID of the instance that backs the WordPress site.",
         "type": "string"
       },
       "PublicIp": {
         "description": "The public IP for the WordPress site.",
         "type": "string"
       }
     },
     "required": [ "Name", "SubnetId" ],
     "primaryIdentifier": [ "/properties/PublicIp", "/properties/InstanceId" ],
     "readOnlyProperties": [ "/properties/PublicIp", "/properties/InstanceId" ],
     "additionalProperties": false
   }
   ```

1. スキーマを検証します。

   ```
   $ cfn validate
   ```

1. リソースプロバイダパッケージ内の自動生成されたファイルを更新して、リソースプロバイダスキーマの更新を表示します。リソースプロバイダープロジェクトを開始すると、 はリソースプロバイダーのサポートファイルとコード AWS CLI を生成します。コードを再生成して、更新されたスキーマを確認します。

   ```
   $ cfn generate
   ```
**注記**  
Maven を使用する場合、`generate` コマンドは構築プロセスの一部としてコードがコンパイルされる前に自動的に実行されます。そのため、変更内容は生成されたコードと同期しません。  
CloudFormation CLI は、Maven/システムが見つけることができる場所に配置する必要があります。詳細については、[拡張機能を開発するための環境のセットアップ](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html#resource-type-setup)を参照してください。

プロセス全体の詳細については、[CloudFormationで使用するためのモデリングリソースプロバイダー](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-model.html)を参照してください。

## ステップ 3: アーティファクトを生成する
<a name="generateartifactsforcfnsubmit"></a>

次のコマンドを実行して `cfn submit` のアーティファクトを生成します。

```
$ mvn package
```

## ステップ 4: リソースを登録する
<a name="customresources-registerresource"></a>

AWS Config では、リソースプロバイダーハンドラーがリソースの設定追跡を実行する必要はありません。次のコマンドを実行して、リソースを登録します。

```
$ cfn submit
```

詳細については、[CloudFormation 「 テンプレートで使用するリソースプロバイダーの登録](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-register.html)」を参照してください。

## ステップ 5: リソース設定を公開する
<a name="customresources-publishresourceconfiguration"></a>

MyCustomNamespace::Testing::WordPress の設定を特定します。

```
{
  "Name": "MyWordPressSite",
  "SubnetId": "subnet-abcd0123",
  "InstanceId": "i-01234567",
  "PublicIp": "my-wordpress-site.com"
}
```

スキーマバージョン ID を決定します CloudFormation `DescribeType`。

では AWS Config、このリソース設定が受け入れられているかどうかを確認できます。コンプライアンスを評価するには、このリソースを使用して AWS Config ルールを記述します。

(オプション) 設定の記録を自動化するには、定期的または変更ベースの設定コレクターを実装します。

# を使用してサードパーティーリソース AWS Config の設定項目を で記録する AWS CLI
<a name="add-custom-resource-type-cli"></a>

次の手順を使用して、サードパーティーリソースまたはカスタムリソースタイプの構成項目を記録します。

リソースタイプ `MyCustomNamespace::Testing::WordPress` を対応するスキーマに登録してください。

1. コマンドプロンプトまたはターミナルウィンドウを開きます。

1. 次のコマンドを入力します。

   ```
   aws configservice put-resource-config --resource-type MyCustomNamespace::Testing::WordPress --resource-id resource-001 --schema-version-id 00000001 --configuration  '{
     "Id": "resource-001",
     "Name": "My example custom resource.",
     "PublicAccess": false
   }'
   ```

**注記**  
タイプスキーマで定義されているように、 `writeOnlyProperties` は によって記録される前に設定から削除されます AWS Config。つまり、読み取り API から設定を取得する場合、これらの値は存在しません。`writeOnlyProperties` の詳細については、[リソースタイプのスキーマ](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html)を参照してください。

# を使用してサードパーティーリソース AWS Config の設定項目を で読み取る AWS CLI
<a name="view-custom-resource-type-cli"></a>

次の手順を使用して、サードパーティーリソースまたはカスタムリソースタイプの設定項目を読み取ります。

1. コマンドプロンプトまたはターミナルウィンドウを開きます。

1. 次のコマンドを入力します。

   ```
   aws configservice list-discovered-resources --resource-type MyCustomNamespace::Testing::WordPress
   ```

1. [Enter] キーを押します。

   次のような出力が表示されます:

   ```
   {
       "resourceIdentifiers": [
           {
               "resourceType": "MyCustomNamespace::Testing::WordPress",
               "resourceId": "resource-001"
           }
       ]
   }
   ```

1. 次のコマンドを入力します。

   ```
   aws configservice batch-get-resource-config --resource-keys '[ { "resourceType": "MyCustomNamespace::Testing::WordPress", "resourceId": "resource-001" } ]'
   ```

1. [Enter] キーを押します。

   次のような出力が表示されます:

   ```
   {
       "unprocessedResourceKeys": [],
       "baseConfigurationItems": [
           {
               "configurationItemCaptureTime": 1569605832.673,
               "resourceType": "MyCustomNamespace::Testing::WordPress",
               "resourceId": "resource-001",
               "configurationStateId": "1569605832673",
               "awsRegion": "us-west-2",
               "version": "1.3",
               "supplementaryConfiguration": {},
               "configuration": "{\"Id\":\"resource-001\",\"Name\":\"My example custom resource.\",\"PublicAccess\":false}",
               "configurationItemStatus": "ResourceDiscovered",
               "accountId": "AccountId"
           }
       ]
   }
   ```

# AWS Config を使用して からサードパーティーリソースを削除する AWS CLI
<a name="delete-custom-resource-type"></a>

次のコマンドを入力して、サードパーティーリソースを削除します。

```
aws configservice delete-resource-config --resource-type MyCustomNamespace::Testing::WordPress --resource-id resource-002
```

成功すると、コマンドは追加の出力なしで実行されます。