Amazon Pinpoint で AWS End User Messaging の音声メッセージ用にログ記録を設定する方法を教えてください。
Amazon Pinpoint を使用して送信する音声メッセージのステータスをログに記録したいです。
解決策
Amazon Pinpoint の音声メッセージのステータスを記録するには、設定セットとイベントの宛先を作成します。次に、イベントの宛先を設定セットにマップします。この設定を使用して、Amazon Pinpoint 経由で送信した音声メッセージに関する応答情報を取得します。
Amazon Pinpoint 音声イベントの宛先には、次の AWS リソースを設定できます。
- Amazon Simple Notification Service (Amazon SNS) トピック
- Amazon CloudWatch Logs
- Amazon Data Firehose デリバリーストリーム
イベントの宛先を設定するには、AWS End User Messaging API または AWS SDK を使用します。
注: 次の音声メッセージ記録設定は、AWS End User Messaging にのみ適用されます。Amazon Pinpoint SMS と Voice v1 については、「Amazon Pinpoint SMS と Voice v1 API で Amazon Pinpoint 音声メッセージのログ記録を設定する方法を教えてください」を参照してください。
Amazon SNS トピックを Amazon Pinpoint 音声イベントの宛先として設定する
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
次の手順を実行します。
-
create-configuration-set コマンドを実行し、設定セットを作成します。
aws pinpoint-sms-voice-v2 create-configuration-set --configuration-set-name VoiceSNS注: VoiceSNS は、設定セットの名前に置き換えます。
-
音声メッセージを記録する対象のエンドポイントを Amazon SNS トピックにサブスクライブします。SNS トピックは、新しいトピックも既存のトピックも使用できます。
-
SNS トピックアクセスポリシーに次のアクセス許可を追加して、AWS End User Messaging 音声サービスがログを配信できるようにします。
{ "Effect": "Allow", "Principal": { "Service": "sms-voice.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-1:ACCOUNT_ID:pinpointsmsvoice", "Condition": { "StringEquals": { "aws:SourceAccount": "ACCOUNT_ID" }, "ArnLike": { "aws:SourceArn": "arn:aws:sms-voice:us-east-1:ACCOUNT_ID:configuration-set/VoiceSNS" } } }注: us-east-1 を AWS リージョンに、pinpointsmsvoice を SNS トピックの名前に、ACCOUNT_ID を AWS アカウント ID に置き換えます。
-
テキストエディタで、MatchingEventTypes 用の matching.json という名前の入力リクエストファイルを作成します。受信するイベントを指定するか、"ALL" を指定してすべてのイベントを受信します。
[ "ALL" ] -
イベントの宛先を configuration-set-name にマッピングするには、create-event-destination コマンドを実行します。
aws pinpoint-sms-voice-v2 create-event-destination --configuration-set-name VoiceSNS --event-destination-name VoiceSNS --matching-event-types file://matching.json --sns-destination TopicArn=arn:aws:sns:us-east-1:ACCOUNT_ID:pinpointsmsvoice注: us-east-1 を AWS リージョンに、ACCOUNT_ID をアカウント ID に、pinpointsmsvoice を SNS トピックの名前に置き換えます。
-
設定をテストするには、SendVoiceMessage V2 API 操作を使用して Amazon Pinpoint の音声メッセージを送信します。数分後、SNS トピックにサブスクライブしたエンドポイントにイベントが表示されます。
CloudWatch Logs を Amazon Pinpoint の音声イベントの宛先として設定する
次の手順を実行します。
-
create-configuration-set コマンドを実行し、設定セットを作成します。
aws pinpoint-sms-voice-v2 create-configuration-set --configuration-set-name VoiceCW注: VoiceCW は、設定セットの名前に置き換えます。
-
ロググループを作成するには、create-log-group コマンドを実行します。
aws logs create-log-group --log-group-name /aws/pinpoint/voice注: log-group-name は実際のロググループの名前に置き換えます。コマンドの出力で、後のステップで使用するロググループの Amazon リソースネーム (ARN) を書き留めます。既存のロググループを使用している場合は、LogGroup API オペレーションを呼び出して ARN を取得します。
-
Amazon Pinpoint サービスが引き受ける新しい AWS Identity and Access Management (IAM) ロールを作成します。
-
以下のステートメントで IAM ロールの信頼ポリシーを更新して、SMS 音声サービスが IAM ロールを引き受けることができるようにします。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sms-voice.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "ACCOUNT_ID" }, "ArnLike": { "aws:SourceArn": "arn:aws:sms-voice:us-east-1:ACCOUNT_ID:configuration-set/VoiceCW" } } } ] }注: us-east-1 を実際のリージョンに、ACCOUNT_ID をアカウント ID に、VoiceCW を設定セットに置き換えます。
-
次のステートメントを使用して IAM ロールのアクセス許可ポリシーを更新します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:ACCOUNT_ID:log-group:/aws/pinpoint/voice:*" ] } ] }注: us-east-1 を実際のリージョンに、ACCOUNT_ID をアカウント ID に置き換えます。前述のポリシーは、特定の CloudWatch Logs API 操作を呼び出すためのアクセス許可を付与します。詳細については、「CloudWatch Logs のアクセス許可に関するリファレンス」を参照してください。
-
テキストエディタで CloudWatchDestination.json という入力リクエストファイルを作成します。次に、以下の宛先パラメータをファイルに入力します。
`{ "IamRoleArn": "arn:aws:iam::ACCOUNT_ID:role/IAM_ROLE", "LogGroupArn": "arn:aws:logs:us-east-1:ACCOUNT_ID:log-group:/aws/pinpoint/voice" }`注: IamRoleArn の値は、該当する IAM ロールの ARN に置き換えます。LogGroupArn の値は、イベントの宛先となる CloudWatch ロググループの ARN に置き換えます。
-
テキストエディタで、MatchingEventTypes 用の matching.json という名前の入力リクエストファイルを作成します。受信するイベントを指定するか、"ALL" を指定してすべてのイベントを受信します。
[ "ALL" ] -
create-event-destination コマンドを実行し、イベントの宛先を configuration-set-name にマッピングします。
aws pinpoint-sms-voice-v2 create-event-destination --configuration-set-name VoiceCW --event-destination-name CloudWatch_Destination --matching-event-types file://matching.json --cloud-watch-logs-destination file://CloudWatchDestination.json注: VoiceCW は、設定セットの名前に置き換えます。
-
設定をテストするには、SendVoiceMessage V2 API 操作を使用して Amazon Pinpoint の音声メッセージを送信します。数分後、イベントは CloudWatch ロググループに表示されます。
Firehose デリバリーストリームを Amazon Pinpoint 音声イベントの宛先に設定する
次の手順を実行します。
-
create-configuration-set コマンドを実行し、設定セットを作成します。
aws pinpoint-sms-voice-v2 create-configuration-set --configuration-set-name VoiceKinesis注: VoiceKinesis は、お使いの設定セットの名前に置き換えます。
-
Firehose デリバリーストリームを作成し、配信ストリーム ARN を書き留めます。[宛先設定] で Amazon Simple Storage Service (Amazon S3) を選択します。
-
Amazon Pinpoint サービスが引き受ける新しい IAM ロールを作成します。
-
ポリシーのプリンシパルセクションに以下のステートメントを入力し、IAM ロールの信頼ポリシーを更新します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sms-voice.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "ACCOUNT_ID" }, "ArnLike": { "aws:SourceArn": "arn:aws:sms-voice:us-east-1:ACCOUNT_ID:configuration-set/VoiceKinesis" } } } ] }注: us-east-1 を実際のリージョンに、ACCOUNT_ID をアカウント ID に置き換えます。前述のポリシーにより、SMS 音声サービスが IAM ロールを引き受けることができます。
-
Firehose デリバリーストリームの ARN を含めて IAM ロールのアクセス許可ポリシーを更新します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "firehose:PutRecord", "Resource": "arn:aws:firehose:us-east-1:ACCOUNT_ID:deliverystream/KINESIS_FIREHOSE_NAME" } ] }注: ACCOUNT_ID をアカウント ID に、KINESIS_FIREHOSE_NAME を Firehose デリバリーストリームの ARN 名に置き換えます。
-
テキストエディタで KinesisFirehoseDestination.json という名前の入力リクエストファイルを作成します。次に、以下の宛先パラメータをコピーしてファイルに貼り付けます。
{ "IamRoleArn": "arn:aws:iam::ACCOUNT_ID:role/IAM_ROLE", "DeliveryStreamArn": "arn:aws:firehose:us-east-1:ACCOUNT_ID:deliverystream/KINESIS_FIREHOSE_NAME" }注: us-east-1 を実際のリージョンに、ACCOUNT_ID をアカウント ID に、KINESIS_FIREHOSE_NAME を Firehose デリバリーストリームの名前に、IAM_ROLE を IAM ロール名に置き換えます。
-
テキストエディタで、MatchingEventTypes 用の matching.json という名前の入力リクエストファイルを作成します。受信するイベントを指定するか、"ALL" を指定してすべてのイベントを受信します。
[ "ALL" ] -
イベントの宛先を configuration-set-name にマッピングするには、入力リクエストファイルを使用して create-event-destination コマンドを実行します。
aws pinpoint-sms-voice-v2 create-event-destination --configuration-set-name VoiceKinesis --event-destination-name KinesisFirehose_Destination --matching-event-types file://matching.json --kinesis-firehose-destination file://KinesisFirehoseDestination.json注: VoiceKinesis は、実際の設定セット名に置き換えます。
-
設定をテストするには、SendVoiceMessage V2 API 操作を使用して Amazon Pinpoint の音声メッセージを送信します。数分後、Firehose デリバリーストリームを作成したときに設定した Amazon S3 バケットにイベントが表示されます。
- 言語
- 日本語
