View a markdown version of this page

ElastiCache Amazon SNS 通知の管理 - Amazon ElastiCache

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

ElastiCache Amazon SNS 通知の管理

Amazon Simple Notification Service (Amazon SNS) を使用して重要なクラスターイベントの通知が送信されるように ElastiCache を設定できます。これらの例では、Amazon SNS トピックの Amazon リソースネーム(ARN)を使用してクラスターを設定し、通知を受け取るようにします。

注記
  • このトピックでは、Amazon SNS にサインアップし、Amazon SNS トピックをセットアップおよびサブスクライブしていることを前提としています。これを行う方法の詳細については、「Amazon Simple Notification Service デベロッパーガイド」を参照してください。

  • デフォルトでは、API modify-replication-group は、現在の指定されたグループだけでなく、リージョン内のすべてのグループに影響します。リージョン内の 1 つの特定のグループを他のグループとは異なる方法で設定する場合は、--notification-topic-arn オプションを使用して、そのグループの別のトピックを作成できます。

SNS トピックアクセスポリシーの要件

ElastiCache 通知用に Amazon SNS トピックを設定する場合、トピックのアクセスポリシーは ではなく aws:SourceOwner条件キーを使用する必要がありますaws:SourceAccount。新しく作成された Amazon SNS トピックは、ElastiCache がイベント通知をサポートしていないアクセスポリシーaws:SourceAccountでデフォルトで になります。

Amazon SNS トピックが を使用している場合aws:SourceAccount、ElastiCache はトピックに通知を発行できず、トピックのステータスを自動的に非アクティブに設定します。Global Datastore のフェイルオーバーやその他のクラスターオペレーションにより、このエラーが発生する可能性があります。

ElastiCache 通知が正しく動作することを確認するには、Amazon SNS トピックアクセスポリシーに次のステートメントが含まれていることを確認します。

{ "Statement": [ { "Sid": "AllowElastiCachePublish", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:region:account-id:topic-name", "Condition": { "StringEquals": { "AWS:SourceOwner": "account-id" } } } ] }

フェイルオーバーまたは他のクラスターオペレーション後に ElastiCache が Amazon SNS トピックのステータスを非アクティブとして表示する場合は、トピックのアクセスポリシーを確認し、 を aws:SourceAccountに置き換えますaws:SourceOwner。次に、 ModifyReplicationGroup API オペレーションまたはコンソールを使用して、クラスターで通知を再度有効にします。

これらの条件キーの詳細については、Amazon SNS デベロッパーガイド「aws:SourceAccount vs aws:SourceOwner」を参照してください。

前提条件

ElastiCache の Amazon SNS 通知を設定する前に、次の要件を確認してください。

  • Amazon SNS トピックは、ElastiCache クラスターと同じ AWS リージョンにある必要があります。

  • Amazon SNS トピックは、ElastiCache クラスターと同じ AWS アカウントによって所有されている必要があります。

  • Amazon SNS トピックは、カスタマーマネージド AWS KMS キーで暗号化しないでください。ElastiCache は、カスタマーマネージド AWS KMS キーで暗号化された Amazon SNS トピックへの通知の発行をサポートしていません。

  • Amazon SNS トピックアクセスポリシー (sns:SetTopicAttributes または同等のポリシー) を変更するには、アクセス許可が必要です。

Amazon SNS トピックに発行する ElastiCache アクセス許可の付与

イベント通知を受信するには、Amazon SNS トピックにメッセージを発行するアクセス許可を ElastiCache に付与する必要があります。これを行うには、elasticache.amazonaws.comサービスプリンシパルがメッセージを発行できるようにするリソースベースのポリシーを Amazon SNS トピックに追加します。

次のポリシーは、必要なアクセス許可を ElastiCache に付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowElastiCachePublish", "Effect": "Allow", "Principal": { "Service": "elasticache.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:region:account-id:topic-name", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" } } } ] }

次の表に、ポリシーコンポーネントを示します。

コンポーネント 説明
Principal elasticache.amazonaws.com ElastiCache サービスプリンシパル
アクション sns:Publish 最低限必要なアクセス許可
[リソース] トピック ARN 特定の Amazon SNS トピックの ARN
条件: aws:SourceAccount AWS アカウント ID 特定の AWS アカウントから送信されるリクエストへのアクセスを制限します

アクセス許可の付与 (コンソール)

Amazon SNS トピックに発行するアクセス許可を ElastiCache に付与するには (コンソール)
  1. https://console.aws.amazon.com/sns/ で Amazon Simple Notification Service コンソールを開きます。

  2. ナビゲーションペインで、[トピック] を選択してください。

  3. トピックを選択し、編集を選択します。

  4. アクセスポリシーセクションを展開します。

  5. JSON エディタで、前述のポリシーステートメントを追加します。

  6. [Save changes] (変更の保存) をクリックします。

アクセス許可の付与 (AWS CLI)

アクセスポリシーを という名前のファイルに保存しsns-policy.json、次のコマンドを実行します。

Linux、macOS、Unix の場合:

aws sns set-topic-attributes \ --topic-arn arn:aws:sns:region:account-id:topic-name \ --attribute-name Policy \ --attribute-value file://sns-policy.json \ --region region

Windows の場合:

aws sns set-topic-attributes ^ --topic-arn arn:aws:sns:region:account-id:topic-name ^ --attribute-name Policy ^ --attribute-value file://sns-policy.json ^ --region region

ポリシーが正しく適用されたことを確認するには、次のコマンドを実行します。

Linux、macOS、Unix の場合:

aws sns get-topic-attributes \ --topic-arn arn:aws:sns:region:account-id:topic-name \ --query 'Attributes.Policy' \ --output text \ --region region

Windows の場合:

aws sns get-topic-attributes ^ --topic-arn arn:aws:sns:region:account-id:topic-name ^ --query 'Attributes.Policy' ^ --output text ^ --region region

Amazon SNS トピックを追加する

以下のセクションでは、 AWS コンソール、、 AWS CLIまたは ElastiCache API を使用して Amazon SNS トピックを追加する方法を示します。

Amazon SNS トピックを追加する (コンソール)

以下の手順は、クラスターの Amazon SNS トピックを追加する方法を示しています。Valkey または Redis OSS を使用してステップ 2 でレプリケーショングループの Amazon SNS トピックを追加する場合、クラスターを選択する代わりに、レプリケーショングループを選択します。次に、以降の同じステップに従います。

注記

このプロセスは、Amazon SNS トピックの変更に使用できます。

クラスターの Amazon SNS トピックを追加または変更するには (コンソール)
  1. にサインイン AWS マネジメントコンソール し、https://console.aws.amazon.com/elasticache/ で ElastiCache コンソールを開きます。

  2. クラスター で、Amazon SNS トピック ARN を追加または変更するクラスターを選択します。

  3. 変更を選択します。

  4. クラスターを変更SNS 通知のトピック で、追加する SNS トピックを選択します。または、手動 ARN 入力 を選択して Amazon SNS トピックの ARN を入力します。

  5. [Modify] (変更) を選択します。

Amazon SNS トピックを追加する (AWS CLI)

クラスターの Amazon SNS トピックを追加または変更するには、 AWS CLI コマンド を使用しますmodify-cache-cluster

次のコード例では、Amazon SNS トピック ARN を my-cluster に追加します。

Linux、macOS、Unix の場合:

aws elasticache modify-cache-cluster \ --cache-cluster-id my-cluster \ --notification-topic-arn arn:aws:sns:us-west-2:123456789xxx:ElastiCacheNotifications

Windows の場合:

aws elasticache modify-cache-cluster ^ --cache-cluster-id my-cluster ^ --notification-topic-arn arn:aws:sns:us-west-2:123456789xx:ElastiCacheNotifications

詳細については、「modify-cache-cluster」を参照してください。

Amazon SNS トピックを追加する(ElastiCache API)

クラスターの Amazon SNS トピックを追加または変更するには、以下のパラメータを指定して ModifyCacheCluster アクションを呼び出します。

  • CacheClusterId=my-cluster

  • TopicArn=arn%3Aaws%3Asns%3Aus-west-2%3A565419523791%3AElastiCacheNotifications

https://elasticache.amazon.com/ ?Action=ModifyCacheCluster &ApplyImmediately=false &CacheClusterId=my-cluster &NotificationTopicArn=arn%3Aaws%3Asns%3Aus-west-2%3A565419523791%3AElastiCacheNotifications &Version=2014-12-01 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20141201T220302Z &X-Amz-Algorithm=&AWS;4-HMAC-SHA256 &X-Amz-Date=20141201T220302Z &X-Amz-SignedHeaders=Host &X-Amz-Expires=20141201T220302Z &X-Amz-Credential=<credential> &X-Amz-Signature=<signature>

詳細については、「ModifyCacheCluster」を参照してください。

Amazon SNS 通知の有効化と無効化

クラスターでは、通知を有効または無効にすることができます。次の手順は、Amazon SNS 通知を無効にする方法を示しています。

Amazon SNS 通知の有効化と無効化(コンソール)

を使用して Amazon SNS 通知を無効にするには AWS マネジメントコンソール
  1. にサインイン AWS マネジメントコンソール し、https://console.aws.amazon.com/elasticache/ で ElastiCache コンソールを開きます。

  2. Memcached を実行しているクラスターのリストを表示するには、左のナビゲーションペインで、[Memcached] を選択します。

    Valkey または Redis OSS を実行しているクラスターのリストを表示するには、左のナビゲーションペインで、[Valkey] または [Redis OSS] を選択します。

  3. 通知を変更するクラスターの左側にあるボックスを選択します。

  4. [Modify] (変更) を選択します。

  5. クラスターを変更SNS 通知のトピック で、通知を無効にする を選択します。

  6. [Modify] (変更) を選択します。

Amazon SNS 通知の有効化と無効化(AWS CLI)

Amazon SNS 通知を無効にするには、以下のパラメータを指定して modify-cache-cluster コマンドを使用します。

Linux、macOS、Unix の場合:

aws elasticache modify-cache-cluster \ --cache-cluster-id my-cluster \ --notification-topic-status inactive

Windows の場合:

aws elasticache modify-cache-cluster ^ --cache-cluster-id my-cluster ^ --notification-topic-status inactive
注記

クラスターがレプリケーショングループに属している場合、SNS 通知を有効化または無効化するには CLI コマンド modify-replication-group を使用する必要があります。

Amazon SNS 通知の有効化と無効化(ElastiCache API)

Amazon SNS 通知を無効にするには、以下のパラメータを指定して ModifyCacheCluster アクションを呼び出します。

  • CacheClusterId=my-cluster

  • NotificationTopicStatus=inactive

この呼び出しにより、以下のような出力が返されます。

https://elasticache.us-west-2.amazonaws.com/ ?Action=ModifyCacheCluster &ApplyImmediately=false &CacheClusterId=my-cluster &NotificationTopicStatus=inactive &Version=2014-12-01 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20141201T220302Z &X-Amz-Algorithm=&AWS;4-HMAC-SHA256 &X-Amz-Date=20141201T220302Z &X-Amz-SignedHeaders=Host &X-Amz-Expires=20141201T220302Z &X-Amz-Credential=<credential> &X-Amz-Signature=<signature>

Amazon SNS トピックポリシーのセキュリティのベストプラクティス

Amazon SNS トピックポリシーを保護するには、次のベストプラクティスに従ってください。

  • クロスアカウント混乱した代理攻撃を防ぐために、必ず aws:SourceAccount条件キーを含めてください。

  • 個々の AWS アカウント ID ではなく、elasticache.amazonaws.comサービスプリンシパルを使用します。 IDs

  • 追加の条件キー"Principal": {"AWS": "*"}なしで を使用しないでください。

  • 最低限必要なアクセス許可のみを付与します (sns:Publish のみ)。

  • Amazon SNS トピックアクセスポリシーを定期的に監査します。

通知が機能していることの確認

Amazon SNS トピックポリシーを設定し、トピックを ElastiCache クラスターに追加したら、通知が機能していることを確認します。

  1. クラスターの設定変更など、ElastiCache イベントをトリガーします。

  2. Amazon SNS サブスクリプションエンドポイント (E メール、Lambda 関数、または SQS キュー) で通知メッセージを確認します。

  3. Amazon SNS コンソールで、サブスクリプションのステータスが Confirmed と表示されていることを確認します。

Amazon SNS 通知のトラブルシューティング

ElastiCache から Amazon SNS 通知を受信していない場合は、以下を確認してください。

リージョンの不一致

Amazon SNS トピックが ElastiCache クラスターと同じ AWS リージョンにあることを確認します。

アカウントの所有権

Amazon SNS トピックが ElastiCache クラスターと同じ AWS アカウントによって所有されていることを確認します。

条件のアカウント ID が正しくない

aws:SourceAccount 値が正確な 12 桁の AWS アカウント ID であることを確認します。

KMS 暗号化

Amazon SNS トピックがカスタマーマネージド AWS KMS キーで暗号化されていないことを確認します。ElastiCache は、カスタマーマネージド AWS KMS 暗号化を使用したトピックへの発行をサポートしていません。

トピック ARN の不一致

ポリシーの Amazon SNS トピック ARN が ElastiCache クラスターにアタッチされたトピックの ARN と正確に一致することを確認します。

未確認のサブスクリプション

Amazon SNS サブスクリプションが確認済みステータスであることを確認します。

アクセス権限の不足

トピックのアクセスポリシーを変更するsns:SetTopicAttributesアクセス許可があることを確認します。