AWS Config 配信チャネルを再作成するにはどうすればよいですか?

最終更新日: 2022 年 9 月 21 日

AWS Config 配信チャネルを削除しました。どうすれば作り直せますか?

簡単な説明

AWS Config コンソールを使用して AWS Config を設定する場合、設定プロセスは、通知を配信チャネルに送信するように AWS リソースを構成します。AWS Config のセットアップには、Amazon Simple Storage Service (Amazon S3) バケット、Amazon Simple Notification Service (Amazon SNS) トピック、AWS Identity and Access Management (IAM) ロール、および記録するリソースタイプの設定が含まれます。

AWS コマンドラインインターフェイス (AWS CLI) コマンドの delete-delivery-channel を使用して AWS Config 配信チャネルを削除すると、設定レコーダーがオフになります。設定レコーダーを再度オンにしようとすると、「AWS Config cannot start recording because the delivery channel was not found」(配信チャネルが見つからないため AWS Config が記録を開始できません) というエラーが返されます。

注: AWS Config コンソールを使用して配信チャネルを再作成することはできません。

解決方法

次の指示に従って、AWS Config 配信チャネルを手動で再作成し、設定レコーダーをオンにします。

注: 削除した AWS Config 配信チャネルに関連付けられている Amazon S3 バケット、S3 トピック、IAM ロールを削除しなかった場合は、これらのステップを省略できます。

Amazon S3 バケットを作成する

1.    AWS Config サービスと同じリージョンで Amazon S3 コンソールを開き、[Create bucket (バケットの作成)] を選択します。

2.    [Bucket name (バケット名)] に S3 バケットの名前を入力し、[Next (次へ)] を選択します。

3.    [Next (次へ)]、[Next (次へ)]、[Create bucket (バケットの作成)] の順に選択します。

4.    S3 バケットで、ステップ 3 で作成した S3 バケットを選択します。

5.    [Permissions (権限)] を選択してから、[Bucket Policy (バケットポリシー)] を選択します。

6.    次のサンプルバケットポリシーをコピーして貼り付け、[Save (保存)] を選択します。

{
 "Version": "2012-10-17",
 "Statement": [
  {
   "Sid": "AWSConfigBucketPermissionsCheck",
   "Effect": "Allow",
   "Principal": {
    "Service": "config.amazonaws.com"
   },
   "Action": "s3:GetBucketAcl",
   "Resource": "arn:aws:s3:::targetBucketName",
   "Condition": {
    "StringEquals": {
     "AWS:SourceAccount": "sourceAccountID"
    }
   }
  },
  {
   "Sid": "AWSConfigBucketExistenceCheck",
   "Effect": "Allow",
   "Principal": {
    "Service": "config.amazonaws.com"
   },
   "Action": "s3:ListBucket",
   "Resource": "arn:aws:s3:::targetBucketName",
   "Condition": {
    "StringEquals": {
     "AWS:SourceAccount": "sourceAccountID"
    }
   }
  },
  {
   "Sid": "AWSConfigBucketDelivery",
   "Effect": "Allow",
   "Principal": {
    "Service": "config.amazonaws.com"
   },
   "Action": "s3:PutObject",
   "Resource": "arn:aws:s3:::targetBucketName/[optional] prefix/AWSLogs/sourceAccountID/Config/*",
   "Condition": {
    "StringEquals": {
     "s3:x-amz-acl": "bucket-owner-full-control",
     "AWS:SourceAccount": "sourceAccountID"
    }
   }
  }
 ]
}

SNS トピックを作成する

1.    AWS Config サービスと同じリージョンで Amazon SNS コンソールを開き、[Topics (トピック)] を選択します。

2.    [Create topic (トピックの作成)] を選択します。

3.    [Name] (名前) に SNS トピックの名前を入力します。次に、[Create topic] (トピックの作成) を選択します。

4.    [Create subscription (サブスクリプションの作成)] を選択します。

5.    [Protocol] (プロトコル) で、[Email] (E メール) を選択します。

6.    [Endpoint (エンドポイント)] で、この SNS トピックに関連付ける E メールアドレスを入力し、[Create subscription (サブスクリプションの作成)] を選択します。

7.    E メールでサブスクリプションを確定し、[Confirm subscription (サブスクリプションの確定)] を選択します。

8.    サブスクリプションが確定されましたというメッセージが表示されます。

注意:SNS トピックを使用するには、必要な権限があることを確認してください

IAM ロールを作成する

1.    IAM コンソールを開きます。

2.    [Roles (ロール)] を選択し、[Create role (ロールの作成)] を選択します。

3.    [Select type of trusted entity (信頼できるエンティティタイプの選択)] で、[AWS service (AWS のサービス)] を選択します。

4.    [Use cases for other AWS services] (他の AWS のサービスのユースケース) で [Config] を選択します。

5.    [Select your use case (ユースケースの選択)] で、[Config - Customizable (構成: カスタマイズ可能)] を選択し、[Next: Permissions (次: 権限)] を選択します。

6.    [Next: Tags (次: タグ)]、それに続いて [Next: Review (次: レビュー)] を選択します。

7.    [Role name (ロール名)] に名前を入力し、[Create role (ロールの作成)] を選択します。

8.    ステップ 7 で作成したロールを選択し、[Add inline policy (インラインポリシーの追加)] を選択して、[JSON] タブを選択します。

9.    次のサンプルポリシーをコピーして貼り付けます。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Resource": [
        "arn:aws:s3:::arn:aws:s3:::targetBucketName/[optional] prefix/AWSLogs/sourceAccountID-WithoutHyphens/*"
      ],
      "Condition": {
        "StringLike": {
          "s3:x-amz-acl": "bucket-owner-full-control"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketAcl"
      ],
      "Resource": "arn:aws:s3:::targetBucketName"
    },
    {
      "Effect": "Allow",
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:region:account_number:targetTopicName"
    }
  ]
}

KMS キーを作成する

AWS Config によって Amazon S3 バケットに配信されるオブジェクトには、AWS Key Management Service (AWS KMS) ベースの暗号化を使用するのがベストプラクティスです。AWS Config サービスと同じリージョンに KMS キーを作成します。KMS キーに必要な権限があることを確認してください。

オブジェクトを暗号化しない場合は、これらの手順をスキップして、「配信チャネルの作成」セクションに進みます。

1.    AWS KMS コンソールを開きます

2.    ナビゲーションペインから [Customer managed keys] をクリックします。

3.    [キーの作成] を選択します。

4.    [キータイプ] で [対称] を選択し、対称暗号化 KMS キーを作成します。非対称 KMS キーの詳細については、「非対称 KMS キーの作成 (コンソール)」を参照してください。

5.    [キーの使用法] では、[暗号化と復号化] オプションがデフォルトで選択されています。このオプションを確認して、[Next] を選択します。

6.    KMS キーのエイリアスを入力します。次に、[Next (次へ)] を選択します。注意: エイリアス名を aws/ で始めることはできません。

7.    KMS キーを管理できる IAM ユーザーとロールを選択します。次に、[Next (次へ)] を選択します。

8.    暗号化操作でキーを使用できる IAM ユーザーとロールを選択します。次に、[Next (次へ)] を選択します。

9.    [Finish (終了)] を選択して KMS キーを作成します。

10.    ナビゲーションペインから [Customer managed keys (カスタマー管理キー)] を選択します。次に、[Customer managed keys (カスタマー管理キー)] で、作成したキーを選択します。

11.    [Key policy] (キーポリシー) タブで、[Switch to policy view] (ポリシービューへの切り替え) を選択します。次に、[Edit] (編集) を選択します。

12.    AWS Config にカスタム IAM ロールを使用している場合は、このポリシーステートメントを追加のキーポリシーステートメントとしてコピーして貼り付けます。その後、[Save Changes] (変更を保存) を選択します。

{
  "Statement": [
    {
      "Sid": "AWSConfigKMSPolicy",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Effect": "Allow",
      "Resource": "myKMSKeyARN",
      "Principal": {
        "AWS": [
          "arn:aws:iam:account_id:role/my-config-role-name"
        ]
      }
    }
  ]
}

- または -

AWS Config のサービスにリンクされたロール (SLR) を使用している場合は、次のポリシーステートメントを使用して KMS キーポリシーを更新します。

{
  "Statement": [
    {
      "Sid": "AWSConfigKMSPolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "config.amazonaws.com"
      },
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": "myKMSKeyARN",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "sourceAccountID"
        }
      }
    }
  ]
}

配信チャネルを作成する

1.    テキストエディタを使用して、次のサンプルテンプレートをコピーして貼り付け、JSON ファイルとして保存します。ユースケースに合わせて、deliveryFrequency の値を変更できます。暗号化を有効にしない場合は、JSON ファイルで s3KmsKeyArn 値を省略します。

重要: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

{
    "name": "default",
    "s3BucketName": "targetBucketName",
    "s3KeyPrefix": "Optionalprefix",
    "snsTopicARN": "arn:aws:sns:region:account_ID:targetTopicName",
    "s3KmsKeyArn": "arn:aws:kms:region:account_ID:KmsKey",
    "configSnapshotDeliveryProperties": {
        "deliveryFrequency": "Twelve_Hours"
    }
}

: S3 バケットポリシーで PutObject がデフォルトではなく特定のプレフィックスに制限されている場合は、s3KeyPrefix を指定する必要があります。

2.    以下の AWS CLI コマンドを実行します。

$ aws configservice put-delivery-channel --delivery-channel file://deliveryChannel.json

3.    次の AWS CLI コマンドを実行して、配信チャネルが作成されたことを確認します。

$ aws configservice describe-delivery-channels

設定レコーダーを開始する

1.    AWS Config コンソールを開きます。

2.    ナビゲーションペインで、[Settings (設定)] を選択します。

3.    [記録はオフ] で、[オンにする]、[続行] の順に選択します。

- または -

以下の AWS CLI コマンドを実行します。

$ aws configservice start-configuration-recorder --configuration-recorder-name configRecorderName

詳細については、設定レコーダーの管理および AWS Config ルールの管理を参照してください。