スキップしてコンテンツを表示

暗号化された SNS トピックで CloudWatch アラームを設定する方法を教えてください。

所要時間2分
0

暗号化された Amazon Simple Notification Service (Amazon SNS) トピックを使用して Amazon CloudWatch アラームを設定したいと考えています。

簡単な説明

CloudWatch アラームで暗号化された Amazon SNS トピックを含む Amazon SNS 通知を配信するには、AWS Key Management Service (AWS KMS) のカスタマーマネージドキーを使用する必要があります。暗号化にデフォルトの AWS マネージドキーである alias/aws/sns を使用した場合、CloudWatch アラームはアラームアクションを開始することができません。その場合、[アラーム履歴] セクションに次のようなエラーが表示されます。

"Failed to execute action arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME.Received error: "CloudWatch Alarms does not have authorization to access the SNS topic encryption key.""

注: Amazon SNS のデフォルトの AWS KMS キーポリシーでは、CloudWatch アラームは kms:Decryptkms:GenerateDataKey API コールの実行を許可されていません。AWS マネージドキーのポリシーを手動で編集することはできません。

解決策

暗号化された Amazon SNS トピックを使用して CloudWatch アラームを設定するには、次の手順を実行します。

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

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

  3. [タイプ][スタンダード] を選択し、トピック名と表示名を作成します。

  4. [暗号化 - オプション] 設定を展開し、[暗号化] を有効にします。

  5. カスタマーマネージドキーを選択します。

  6. キーポリシーを手動で編集し、暗号化 Amazon SNS トピックにメッセージを発行するためのアクセス許可である DecryptGenerateDataKey を CloudWatch アラームに付与します。

    {      
    "Sid": "Allow_CloudWatch_for_CMK",  
      "Effect": "Allow",  
      "Principal": {  
        "Service": [  
          "cloudwatch.amazonaws.com"  
        ]  
      },  
      "Action": [  
        "kms:Decrypt",  
        "kms:GenerateDataKey*"  
      ],  
      "Resource": "*"  
    }
  7. (オプション) ポリシーの制限を厳格にするには、Condition 要素を含めます。例えば、次のポリシーの Condition コンテキストキーでは、組織 o-123456789 によるアクションのみが許可されます。

    "Resource": "*"
     "Condition": {
        "StringEquals": {
         "aws:SourceOrgID": "o-123456789"
      }
  8. Amazon SNS トピックのアクセスポリシーに Publish アクセス許可が含まれており、CloudWatch アラームが Amazon SNS トピックにメッセージを発行できることを確認します。

    {     
    "Sid": "Allow_Publish_Alarms",  
      "Effect": "Allow",  
      "Principal": {  
        "Service": [  
          "cloudwatch.amazonaws.com"  
        ]  
      },  
      "Action": "sns:Publish",  
      "Resource": "arn:aws:sns:example-region:example-account-id:example-topic"}

    注: お使いのものでそれぞれ、example-region を AWS リージョンに、example-account-id をアカウント ID に、example-topic をトピック名に置き換えます。

  9. [トピックの作成] を選択します。

  10. 次のいずれかに基づいて CloudWatch アラームを作成します。<br id=hardline_break/> 静的しきい値<br id=hardline_break/> メトリクスの数式<br id=hardline_break/> Metrics Insights のクエリ<br id=hardline_break/> 接続されているデータソース<br id=hardline_break/> 異常検知

関連情報

Using Amazon CloudWatch alarms (Amazon CloudWatch アラームを使用する)

Encrypting messages published to Amazon SNS with AWS KMS (Amazon SNS に発行されたメッセージを AWS KMS で暗号化する)

CloudWatch アラームトリガーに関する SNS 通知が届かないのはなぜですか?

コメントはありません

関連するコンテンツ