監査ログAPI



監査ログAPI

監査ログAPIを使用して、スキル管理API(SMAPI)に対する呼び出しの履歴を示すログを取得します。ログには、タイムスタンプ、レスポンスコード、ソースなど、各操作に関する情報が含まれます。

監査ログAPIの使用に関し、次の方法をご確認ください。

  • Alexaスキルを開発する個人の開発者が監査ログAPIを使用することで、開発したスキルに関連するすべての操作のログを取得することができます。
  • ツールビルダーとして、ビルドおよび公開する開発者ツールで、ユーザーがツールで実行した操作のログをユーザー自身に表示する方法を提供します。監査ログAPIは、ログを同じ開発者ツールによって実行される操作のユーザー固有の履歴に制限します。

ログにはユーザーのアクションに関する情報は表示されず、スキルビルダーまたは開発者ツールによって実行された操作のみが表示されます。

個人の開発者のためのワークフロー

下記が個人の開発者として監査ログを取得するための前提条件です。

  • Amazon開発者アカウント − Alexaスキルを開発し、監査ログに報告された操作を実行するには、Amazon開発者アカウントが必要です。アカウントをお持ちでない場合は、Amazon.co.jpでアカウントを作成した後にdeveloper.amazon.comにログインしてください。すべてのAmazon開発者アカウントには、ベンダーIDがあります。ベンダーIDを確認するには、Amazon開発者アカウントにログインし、カスタマーIDとベンダーIDに移動します。
  • ASK CLI − ASK CLIは、コマンドラインを使用してAlexaスキルを開発および設定するために使用できるツールです。単に、特定の組織のためのスキル、または特定の組織のツールを使用して作成するスキルの監査ログを取得する場合、ASK CLIは必要ありません。ただし、個人の開発者または組織の場合、SMAPIを呼び出し監査ログを取得する際に使用するアクセストークンを取得するために、ASK CLIが必要になる可能性があります。ASK CLIをダウンロードしインストールするには、クイックスタート: Alexa Skills Kitコマンドラインインターフェース(ASK CLI) .

個人の開発者は、次のワークフローを使用して監査ログを取得してください。

  1. LWAセキュリティプロファイルを作成し、アクセストークンを取得する − アクセストーク取得の詳細については、SMAPIのアクセストークンの取得を参照してください。

  2. アクセストークンを使用してSMAPI経由で監査ログをリクエストする − 監査ログに表示する操作のエンドポイントとフィルターを指定します。ログには、すべてのツールで実行される操作が含まれます。

ツールビルダーのためのワークフロー

ツールビルダーは、以下の手順にて開発者ツールのユーザーにツール固有の監査ログを提供します。

  1. ツールでは、標準のLWA認証フローを使用して開発者ユーザーを認証し、ユーザーのアクセストークンを取得します。アクセストークン取得の詳細については、SMAPIのアクセストークンの取得を参照してください。
  2. アクセストークンを使用してLWA APIを呼び出し、ユーザープロファイル情報を取得する。LWA APIがユーザーのユーザーID、名前、およびEメールアドレスを返す。
  3. ツール用のデータベースにユーザーID、名前、およびEメールアドレスを保存する。

次に、開発者がツールを使用して監査ログをリクエストする際、以下を実行してログを取得し、ログにユーザーの名前とEメールアドレスを表示します。

  1. SMAPIを使用して監査ログAPIを呼び出す。
  2. 監査ログ用に取得されたデータで、requester.userId毎にデータベースから名前とEメールアドレスを取得する。
  3. ツールで監査ログを表示する際、ユーザーIDを表示する代わりに、ユーザーの名前とEメールアドレスを表示する。

エンドポイントとヘッダー

エンドポイントは、https://api.amazonalexa.comです。すべてのAPIリクエストにはAuthorizationヘッダーが必要であり、その値はLogin with Amazonから取得したアクセストークンでなければなりません。

リクエスト

リクエスト本文の構造

POST /v1/developmentAuditLogs/query
{
  "vendorId": "{vendorId}",
  "requestFilters": {
      "resources": [
        {
          "id": "amzn1.ask.skill.1234",
          "type": "Skill"
        }
      ],
      "requesters": [
        {
            "userId": "amzn1.account.LWAUserId"
        }
      ],
      "httpResponseCodes": [
        "200",
        "202"
      ],
      "operations": [
        {
          "name": "getSkillManifest",
          "version": "v1"
        },
        {
          "name": "getUtteranceData",
          "version": "v1"
        }
      ],
      "startTime": "2019-06-01T22:58:24.0Z",
      "endTime": "2019-0-08T22:58:24.0Z"
  },
  "sortDirection": "DESC",
  "sortField": "timestamp",
  "paginationContext": {
    "nextToken": "Vxjbbbbbbbbaa",
    "maxResults": 2
  }
}

リクエストのパラメーター

パラメーター 必須 説明
vendorId 一意のベンダーIDです。 文字列
resources[*].id 特定のリソースのID(amzn1.skill.1234など)。スキルID、スキル内商品ID、またはカタログIDを指定できます。 文字列
resources[*].type SkillInSkillProductSkillCatalogExport、またはImportを指定します。 文字列
requesters[*].userId ユーザー識別子のリスト。ユーザー識別子は、LWAユーザー識別子です。ユーザーIDの詳細については、ユーザープロファイルを参照してください。ユーザーIDを取得する方法の詳細については、ユーザープロファイル情報を取得するを参照してください。 文字列
clients[*].id 開発者ツールのクライアント識別子のリスト。クライアント識別子は、LWAセキュリティプロファイルに関連付けられているLWAクライアント識別子です。クライアント識別子を表示する、または新しいクライアント識別子を作成するには、LWAコンソールを開きます。developer.amazon.comで実行されるアクションの場合、クライアント識別子はAlexa Developer Consoleです。ツールビルダーである場合は、クライアント識別子を指定する必要はありません。監査ログはすでにフィルタリングされ、クライアントによって実行された操作のみが表示されます。ツールビルダーが別のクライアント識別子を指定すると、エラーが発生します。 文字列
httpResponseCodes[*] フィルタリングする応答コードを指定する文字列のリスト。 文字列
operations[*].name ✕ ただし、operations[*].versionを指定する場合は必須です。 フィルタリングする操作の名前のリスト(publishSkillなど)。操作名の詳細については、操作名とサポートされているバージョンを参照してください。 文字列
operations[*].version ✕ ただし、operations[*].nameを指定する場合は必須です。 フィルタリングする操作のバージョン(v1など)。サポートされているバージョンの詳細については、操作名とサポートされているバージョンを参照してください。 文字列
startTime ISO 8601形式のタイムスタンプ。指定した時刻以降に発生した操作のみを表示するように指定します。 文字列
endTime ISO 8601形式のタイムスタンプ。指定した時刻またはそれ以前に発生した操作のみを表示するように指定します。 文字列
sortField ログ内のデータをソートするフィールドです。timestampclient.idoperation.nameresource.idresource.typehttpResponseCode、またはrequester.userIdを指定します。デフォルト値はtimestampです。 文字列
sortDirection ソート方向を指定します。昇順の場合はASCを、降順の場合はDESCを指定します。デフォルト値はDESCです。 文字列
nextToken 結果の次のページを表示するためのトークンです。 文字列
maxResults 返されるアイテムの最大数。デフォルト値は50です。値は1以上200以下である必要があります。 文字列

応答

応答本文の構造

{
    "paginationContext": {
        "nextToken": "VXjbbbbbbbbb"
    },
    "auditLogs": [
      {
        "xAmznRequestId": "a53cbaa5-f64b-11e7-94e4-e7de641ed24a",
        "timestamp": "2019-06-03T22:58:24.0Z",
        "operation": {
            "name": "associateSkillWithCatalog",
            "version": "v1"
        },
        "resources": [
            { 
                "id": "amzn1.ask.skill.1234",
                "type": "Skill"
            },
            { 
                "id": "amzn1.ask.cat.1234",
                "type": "Catalog"
            }],                        
        "requester": {
            "userId": "amzn1.oauth.LWAUserId"
        },
        "client": {
            "id": "amzn1.application-oa2-client.aad322b5faab44b980c8f87f94fbac56",
            "name": "Alexa Skills Kit Command Line Interface"
        },
        "httpResponseCode": 200
     },
     {
        "xAmznRequestId": "a53cbaa5-f64b-11e7-94e4-e7de641ed24a",
        "timestamp": "2019-06-03T22:58:24.0Z",
        "operation": {
            "name": "publishSkill",
            "version": "v1"
        },            
        "userAgent": "cfn-skill-handler",
        "resources": [
            { 
                "id": "amzn1.ask.skill.1234",
                "type": "Skill"
            }],   
        "requester": {
            "userId": "amzn1.oauth.LWAUserId"
        },
        "client": {
            "id": "amzn1.application-oa2-client.aad322b5faab44b980c8f87f94fbac56"
            "name": "ASK-CLI"
        },
        "httpResponseCode": 200
     }
    ]
}

応答本文のフィールド

フィールド 必須 説明
nextToken 応答が切り捨てられた場合、次の結果セットを取得するためにnextTokenがエンコードされている。
xAmznRequestId 監査ログ内の操作に対応する、例外なく一意の識別子。
timestamp 監査ログでその操作が発生した時刻。タイムスタンプは、サーバー側の時刻の記録を反映します。
operation.name 監査ログ内の操作の外部名です。操作名の詳細については、操作名とサポートされているバージョンを参照してください。
operation.version 操作のバージョン(v0、v1、v2など)です。サポートされているバージョンの詳細については、操作名とサポートされているバージョンを参照してください。
resources[*].id 操作が発生したリソースの識別子。
resources[*].type 操作が発生したリソースのタイプ。
requester.userId LWAユーザー識別子。
client.id ユーザーに代わってSMAPIを呼び出したツールのクライアント識別子。
client.name ユーザーに代わってSMAPIを呼び出したツールのクライアント名。
httpResponseCode 監査ログ内の操作に対して返されるHTTPステータスコードを表す整数。

応答コード

下記が監査ログのリクエストに対する応答コードです。

ステータスコード 説明
200 SUCCESS 呼び出しが成功したか、指定された検索の結果が見つかりませんでした。
400 BAD REQUEST 入力が無効です。たとえば、クライアント識別子の形式が正しくない、または呼び出し元が無効なNextTokenを提供したなどです。
401 NOT AUTHORIZED ユーザーのアクセストークンが無効です。
403 FORBIDDEN ユーザーが指定されたベンダーの権限を持っていないか、開発者ツールが現在のクライアント以外のクライアント識別子に関する情報を取得しようとしました。
404 NOT FOUND ベンダーが見つかりません。
429 TOO MANY REQUESTS 呼び出し元がリクエストの頻度の制限を超えました。
500 INTERNAL SERVER ERROR サービス内の問題により、操作が失敗しました。

操作名とサポートされているバージョン

次の表は、operations[*].nameおよびoperations[*].versionのサポートされている値を示しています。

カテゴリー 操作名 サポートされているバージョン
アカウントリンクの管理 getAccountLinkingInfo v0、v1
updateAccountLinkingInfo v0、v1
deleteAccountLinkingInfo v1
監査ログ queryDevelopmentAuditLogs v1
カタログコンテンツのアップロード associateCatalogWithSkill v0
completeCatalogUpload v0
createCatalogUpload v0、v1
getContentUploadById v0、v1
generateContentUploadUrl v1
createCatalog v0
getCatalog v0
listCatalogsForVendor v0
listCatalogsForSkill v0
listUploadsForCatalog v0
インテントリクエスト履歴 getUtteranceData v1
reviewUpdatesForIntentRequests v1
対話モデルの管理 getInteractionModel v0、v1
getInteractionModelVersion v1
listInteractionModelVersions v1
getInteractionModelMetadata v0、v1
setInteractionModel v0、v1
getInteractionModelStatus v0
スキル内商品の管理 createIspForVendor v1
getIspDefinition v1
disassociateIspWithSkill v1
updateIspForProduct v1
getIspSummary v1
getIspListForVendor v1
getIspAssociatedSkills v1
getIspListForSkillId v1
resetEntitlementForProduct v1
レポート getSkillMetrics v1
スキル間のスロットタイプ共有 createSlotTypeForInteractionModel v1
getSlotTypeForInteractionModel v1
updateSlotTypeForInteractionModel v1
listSlotTypesForInteractionModel v1
deleteSlotTypeForInteractionModel v1
createSlotTypeVersionForInteractionModel v1
getSlotTypeVersionForInteractionModel v1
getSlotTypeBuildStatusForInteractionModel v1
updateSlotTypeVersionForInteractionModel v1
listSlotTypeVersionsForInteractionModel v1
deleteSlotTypeVersionForInteractionModel v1
参照ベースのカタログ管理 createInteractionModelCatalog v1
createInteractionModelCatalogVersion v1
getInteractionModelCatalogUpdateStatus v1
listInteractionModelCatalogs v1
listVersionsForInteractionModelCatalog v1
getInteractionModelCatalogVersion v1
getInteractionModelCatalogDefinition v1
getInteractionModelCatalogValues v1
updateInteractionModelCatalog v1
updateInteractionModelCatalogVersion v1
deleteInteractionModelCatalog v1
deleteInteractionModelCatalogVersion v1
スキルの認定と公開 submitSkillForCertification v0、v1
withdrawSkillFromCertification v0、v1
getCertificationReview v1
getCertificationsList v1
unpublishSkill v1
publishSkill v1
getSkillPublication v1
スキルの認証情報 getSkillCredentials v1
スキルの有効化 getSkillEnablementStatus v1
setSkillEnablement v1
deleteSkillEnablement v1
スキルの管理 getSkillManifest v0、v1
createSkillForVendor v0、v1
updateSkill v0、v1
getSkillStatus v0
listSkillsForVendor v0
listSkills v1
deleteSkill v0、v1
スキルパッケージの管理 createUploadUrl v1
createSkillPackage v1
importSkillPackage v1
createExportRequestForSkill v1
getImportStatus v1
getStatusOfExportRequest v1
スマートホーム評価ツール listCapabilityTestPlansForSmartHome v1
createCapabilityEvaluationForSmartHome v1
listCapabilityEvaluationsForSmartHome v1
getCapabilityEvaluationForSmartHome v1
getCapabilityEvaluationResultsForSmartHome v1
ベンダーの管理 getVendorList v0
Alexa-hostedスキル getAlexaHostedSkillMetadata v1
generateCredentialsForAlexaHostedSkill v1
getAlexaHostedSkillUserPermissions v1
スキルの検証 submitSkillValidation v0
getSkillValidations v0
スキルの呼び出し invokeSkill v0、v2
スキルのシミュレーション simulateSkill v0、v2
getSkillSimulation v0、v2
スキルのベータテスト getBetaTest v1
createBetaTest v1
updateBetaTest v1
endBetaTest v1
getListOfTesters v1
addTesterstoBetaTest v1
removeTestersFromBetaTest v1
sendReminderToTesters v1
requestFeedbackFromTesters v1
スキル開発の通知 createSubscriberForDevelopmentEvents v0
createSubscriptionForDevelopmentEvents v0
deleteSubscriberForDevelopmentEvents v0
deleteSubscriptionForDevelopmentEvents v0
getSubscriberForDevelopmentEvents v0
getSubscriptionForDevelopmentEvents v0
listSubscribersForDevelopmentEvents v0
listSubscriptionsForDevelopmentEvents v0
setSubscriberForDevelopmentEvents v0
setSubscriptionForDevelopmentEvents v0
発話プロファイラー profileNlu v1
NLU評価 createNluEvaluation v1
listNluEvaluations v1
getResultsForNluEvaluation v1
createNluAnnotationSet v1
setAnnotationsForNluAnnotationSet v1
setPropertiesForNluAnnotationSet v1
listNluAnnotationSets v1
getAnnotationsForNluAnnotationSet v1
getPropertiesForNluAnnotationSet v1
deleteNluAnnotationSet v1
発話の競合の検出 getUtteranceConflictsForSkill v1
getConflictDetectionJobStatusForInteractionModel v1
スキルのSSL証明書 setSSLCertificates v1
getSSLCertificates v1
プライベートスキルの配信 setPrivateDistributionAccountId v0
deletePrivateDistributionAccountId v0
listPrivateDistributionAccounts v0