

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

# Amazon EC2 Auto Scaling の Amazon SNS 通知オプション
<a name="ec2-auto-scaling-sns-notifications"></a>

アプリケーションに影響を与える重要なイベントを通知するように Auto Scaling グループを設定できます。通知を使用すると、ポーリングが不要になり、ポーリングによる `RequestLimitExceeded` エラーが発生することもなくなります。

Amazon EC2 Auto Scaling に関する通知を受け取るには、次の 2 つの方法があります。
+ **Amazon Simple Notiﬁcation Service** – Auto Scaling グループがインスタンスを起動または終了したときに、Amazon SNS で通知を送信できます。Amazon SNS 通知は、オン/オフの切り替えのみが可能です。詳細については、「[Amazon SNS と Amazon EC2 Auto Scaling](#amazon-sns-and-ec2-auto-scaling)」を参照してください。
+ **Amazon EventBridge** – EventBridge は、指定された条件に一致し、Amazon SNS を含むさまざまなターゲットに送信される、より高度なイベント駆動型の通知を提供します。EventBridge で、より広範な Auto Scaling イベントをモニタリングし、より正確なモニタリングを実現することも可能です。詳細については、「[Auto Scaling イベントの処理に EventBridge を使用する](automating-ec2-auto-scaling-with-eventbridge.md)」を参照してください。

オプションで、ライフサイクルフックの通知を使用して、起動時または終了時にインスタンスに対してカスタムアクションを実行できます。ライフサイクルフックで使用する通知を設定する方法の詳細については、「[Amazon EC2 Auto Scaling のライフサイクルフック](lifecycle-hooks.md)」を参照してください。

## Amazon SNS と Amazon EC2 Auto Scaling
<a name="amazon-sns-and-ec2-auto-scaling"></a>

このセクションでは、Amazon SNS を使用して、Auto Scaling グループがインスタンスを起動または終了するタイミングをモニタリングする方法について説明します。

例えば、`autoscaling: EC2_INSTANCE_TERMINATE` 通知タイプを使用するように Auto Scaling グループを設定する場合、Auto Scaling グループがインスタンスを終了すると、E メール通知が送信されます。この E メールには、インスタンス ID やインスタンスを終了した理由など、終了したインスタンスの詳細が含まれます。

Amazon EC2 Auto Scaling がグループにインスタンスを追加または削除すると、これらの変更に関する通知がインスタンスごとに 1 つずつ送信されます。ただし、これらの通知の配信はベストエフォート型であるため、例えば、その後のヘルスチェックが失敗した場合など、最初の通知の後もインスタンスが引き続き失敗する可能性があります。ヘルスチェックプロセスの詳細については、「[Auto Scaling グループでのインスタンスのヘルスチェック](ec2-auto-scaling-health-checks.md)」を参照してください。

Amazon SNS 全般の詳細については、「[Amazon Simple Notification Service デベロッパーガイド](https://docs.aws.amazon.com/sns/latest/dg/)」を参照してください。

**Contents**
+ [SNS 通知](#auto-scaling-sns-notifications)
+ [Amazon EC2 Auto Scaling の Amazon SNS 通知を設定する](#as-configure-sns)
  + [Amazon SNS トピックを作成します。](#as-sns-create-topic)
  + [Amazon SNS トピックを購読します。](#as-sns-subscribe-topic)
  + [Amazon SNS サブスクリプションを確認する](#as-sns-confirm-subscription)
  + [通知を送信するように Auto Scaling グループを設定する](#as-configure-asg-for-sns)
  + [通知をテストする](#testing-hook-notifications)
  + [通知設定を削除する](#delete-settingupnotifications)
+ [暗号化された Amazon SNS トピックのキーポリシー](#sns-kms-permissions)

### SNS 通知
<a name="auto-scaling-sns-notifications"></a>

Amazon EC2 Auto Scaling は、以下のイベントが発生したときの Amazon SNS 通知の送信をサポートしています。


| [Event] (イベント) | 説明 | 
| --- | --- | 
| `autoscaling:EC2_INSTANCE_LAUNCH` | インスタンスの起動成功 | 
| `autoscaling:EC2_INSTANCE_LAUNCH_ERROR` | インスタンスの起動失敗 | 
| `autoscaling:EC2_INSTANCE_TERMINATE` | インスタンスの削除成功 | 
| `autoscaling:EC2_INSTANCE_TERMINATE_ERROR` | インスタンスの削除失敗 | 

メッセージには、次に示す情報が含まれます。
+ `Event` – イベント。
+ `AccountId` - Amazon Web Services のアカウント ID
+ `AutoScalingGroupName` - Auto Scaling グループの名前。
+ `AutoScalingGroupARN` – Auto Scaling グループの ARN。
+ `EC2InstanceId` - EC2 インスタンスの ID。

例えば、以下のようになります。

```
Service: AWS Auto Scaling
Time: 2016-09-30T19:00:36.414Z
RequestId: 4e6156f4-a9e2-4bda-a7fd-33f2ae528958
Event: autoscaling:EC2_INSTANCE_LAUNCH
AccountId: 123456789012
AutoScalingGroupName: my-asg
AutoScalingGroupARN: arn:aws:autoscaling:region:123456789012:autoScalingGroup...
ActivityId: 4e6156f4-a9e2-4bda-a7fd-33f2ae528958
Description: Launching a new EC2 instance: i-0598c7d356eba48d7
Cause: At 2016-09-30T18:59:38Z a user request update of AutoScalingGroup constraints to ...
StartTime: 2016-09-30T19:00:04.445Z
EndTime: 2016-09-30T19:00:36.414Z
StatusCode: InProgress
StatusMessage: 
Progress: 50
EC2InstanceId: i-0598c7d356eba48d7
Details: {"Subnet ID":"subnet-id","Availability Zone":"zone"}
Origin: AutoScalingGroup
Destination: EC2
```

### Amazon EC2 Auto Scaling の Amazon SNS 通知を設定する
<a name="as-configure-sns"></a>

Amazon SNS を使用して E メール通知を送信するには、最初に*トピック*を作成してから、そのトピックと共に E メールアドレスを登録する必要があります。

#### Amazon SNS トピックを作成します。
<a name="as-sns-create-topic"></a>

 SNS トピックとは、論理アクセスポイント、つまり Auto Scaling グループが通知を送信するために使用する通信チャネルです。トピックの名前を指定することにより、トピックを作成します。

トピック名を作成する際には、名前が次の要件を満たしている必要があります。
+ 1 ～ 256 文字
+ 大文字および小文字の ASCII 文字、数字、アンダースコア、またはハイフンが含まれている 

詳細については、[Amazon Simple 通知サービス デベロッパーガイド](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html)の「*Amazon SNS トピックの作成*」を参照してください。

#### Amazon SNS トピックを購読します。
<a name="as-sns-subscribe-topic"></a>

Auto Scaling グループがトピックに送信した通知を受信するには、そのトピックにエンドポイントを登録する必要があります。この手順では、**エンドポイント** に、Amazon EC2 Auto Scaling からの通知を受信する E メールアドレスを指定します。

詳細については、[Amazon Simple 通知サービス デベロッパーガイド](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)の「*Amazon SNS トピックへのサブスクライブ*」を参照してください。

#### Amazon SNS サブスクリプションを確認する
<a name="as-sns-confirm-subscription"></a>

Amazon SNS は、前のステップで指定した E メールアドレスに確認メールを送信します。

次のステップに進む前に、 AWS Notifications からの E メールを開き、リンクを選択してサブスクリプションを確認するようにしてください。

確認メッセージが表示されます AWS。Amazon SNS は、通知を受信し、通知を E メールとして指定された E メールアドレスに送信するように設定されました。

#### 通知を送信するように Auto Scaling グループを設定する
<a name="as-configure-asg-for-sns"></a>

Auto Scaling グループは、インスタンスの起動または終了などのスケーリングイベントが発生したときに Amazon SNS に通知を送信するように設定することができます。Amazon SNS は、インスタンスに関する情報が含まれた通知を、ユーザーが指定する E メールアドレスに送信します。

**Auto Scaling グループの Amazon SNS 通知を設定する (コンソール)**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) でAmazon EC2 コンソールを開き、ナビゲーションペインで [**Auto Scaling グループ**] を選択します。

1. Auto Scaling グループの隣にあるチェックボックスを選択します。

   ページ下部に分割ウィンドウが開き、選択したグループの情報が表示されます。

1. **[Activity]** (アクティビティ) タブで、**[Activity notifications]** (アクティビティ通知)、**[Create notification]** (通知の作成) の順に選択します。

1. [**Create notifications**] ペインで、以下の作業を行います。

   1. **[SNS Topic]** (SNS トピック) で、SNS トピックを選択します。

   1. **[Event types]** (イベントタイプ) で、通知を送信するイベントを選択します。

   1. **[作成]** を選択します。

**Auto Scaling グループの Amazon SNS 通知を設定する (AWS CLI)**  
以下の [put-notification-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-notification-configuration.html) コマンドを使用します。

```
aws autoscaling put-notification-configuration --auto-scaling-group-name {{my-asg}} --topic-arn {{arn}} --notification-types "autoscaling:EC2_INSTANCE_LAUNCH" "autoscaling:EC2_INSTANCE_TERMINATE"
```

#### 通知をテストする
<a name="testing-hook-notifications"></a>

起動イベントの通知を生成するには、Auto Scaling グループの希望容量を 1 増やして、Auto Scaling グループを更新します。インスタンスを起動してから数分以内に通知を受け取ります。

**希望する容量を変更するには (コンソール)**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) でAmazon EC2 コンソールを開き、ナビゲーションペインで [**Auto Scaling グループ**] を選択します。

1. Auto Scaling グループの横にあるチェックボックスを選択します。

   [**Auto Scaling グループ**] ページの下部に分割ペインが開き、選択したグループに関する情報が表示されます。

1. [**詳細**] タブで、[**グループの詳細**]、[**編集**] の順に選択します。

1. [**Desired capacity (希望するキャパシティ)**] の場合は、現在の値を 1 ずつ増やします。この値が [**Maximum capacity (最大容量)**] を超える場合は、[**Maximum capacity (最大容量)**] の値を 1 ずつ増やす必要があります。

1. **[更新]** を選択します。

1. 数分後、イベントの通知が届きます。このテスト用に起動した追加のインスタンスが必要なくなった場合は、[**Desired capacity (希望する容量)**] を 1 減らすことができます。数分後、イベントの通知が届きます。

#### 通知設定を削除する
<a name="delete-settingupnotifications"></a>

Amazon EC2 Auto Scaling 通知設定が使用されなくなった場合は、設定を削除できます。

**Amazon EC2 Auto Scaling 通知設定を削除する (コンソール)**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) でAmazon EC2 コンソールを開き、ナビゲーションペインで [**Auto Scaling グループ**] を選択します。

1. Auto Scaling スケーリンググループを選択します。

1. **[Activity]** (アクティビティ) タブで、削除する通知の横にあるチェックボックスをオンにしてから、**[Actions]** (アクション)、**[Delete]** (削除) の順に選択します。

**Amazon EC2 Auto Scaling 通知設定を削除する (AWS CLI)**  
次の **delete-notification-configuration** コマンドを使用します。

```
aws autoscaling delete-notification-configuration --auto-scaling-group-name {{my-asg}} --topic-arn {{arn}}
```

Auto Scaling グループに関連付けられている Amazon SNS トピックとすべてのサブスクリプションの削除については、「*Amazon Simple Notification Service デベロッパーガイド*」の「[Deleting an Amazon SNS subscription and topic](https://docs.aws.amazon.com/sns/latest/dg/sns-delete-subscription-topic.html)」を参照してください。

### 暗号化された Amazon SNS トピックのキーポリシー
<a name="sns-kms-permissions"></a>

指定した Amazon SNS トピックは、 AWS Key Management Service で作成されたカスタマーマネージドキーで暗号化される場合があります。暗号化されたトピックに発行するための許可を Amazon EC2 Auto Scaling に付与するには、まず KMS キーを作成してから、次のステートメントを KMS キーのポリシーに追加する必要があります。サンプルの ARN を、キーへのアクセスが許可されている適切なサービスにリンクされたロールの ARN に置き換えます。詳細については、「*Amazon Simple Notification Service デベロッパーガイド*」の「[Configuring AWS KMS permissions](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html#sns-what-permissions-for-sse)」を参照してください。

この例では、ポリシーステートメントにより、**[AWSServiceRoleForAutoScaling]** という名前のサービスにリンクされたロールに、カスタマーマネージドキーを使用するための許可が付与されます。Amazon EC2 Auto Scaling のサービスにリンクされたロールの詳細については、「[Amazon EC2 Auto Scaling のサービスにリンクされたロール](autoscaling-service-linked-role.md)」を参照してください。

```
{
  "Sid": "Allow service-linked role use of the customer managed key",
  "Effect": "Allow",
  "Principal": {
    "AWS": "{{arn:aws:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling}}"
  },
  "Action": [
    "kms:GenerateDataKey*",
    "kms:Decrypt"
  ],
  "Resource": "*"
}
```

Amazon EC2 Auto Scaling が暗号化されたトピックにパブリッシュできるようにするキーポリシーでは、`aws:SourceArn` および `aws:SourceAccount` 条件キーはサポートされていません。