翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS AppSyncを使用したAWS CloudTrailAPI コールのログ記録
AWS AppSync は、AWS AppSync で ユーザー、ロール、または AWS のサービスによって実行されたアクションを記録するサービスである AWS CloudTrail と統合されています。CloudTrail は、AWS AppSync のすべての API コールをイベントとしてキャプチャします。キャプチャされた呼び出しには、AWS AppSync コンソールからの呼び出しと、AWS AppSync API へのコード呼び出しが含まれます。CloudTrail で収集された情報を使用して、AWS AppSync に対するリクエスト、リクエスト元の IP アドレス、リクエストの実行者、リクエスト日時などの詳細を把握できます。
追跡を作成する場合は、AWS AppSync のイベントなど、Amazon Simple Storage Service (Amazon S3) バケットへの CloudTrail イベントの継続的な配信を有効にすることができます。証跡を設定しない場合でも、CloudTrail コンソールで最新のイベントを表示できます。
CloudTrail の詳細については、「AWS CloudTrail ユーザーガイド」を参照してください。
AWS AppSyncCloudTrail での 情報
AWS アカウントを作成すると、そのアカウントに対して CloudTrail が有効になります。イベント履歴の CloudTrail コンソールで、AWS アカウントnの最近のイベントを、表示、検索、ダウンロードできます。詳細については、「AWS CloudTrail ユーザーガイド」の「CloudTrail イベント履歴でのイベントの表示」を参照してください。
AWSのイベントなど、AWS AppSyncアカウントのイベントの継続的なレコードについては、追跡を作成します。デフォルトでは、コンソールで証跡を作成すると、すべての AWS リージョンに証跡が適用されます。証跡は、AWSパーティションのすべてのリージョンからのイベントをログに記録し、指定した Amazon S3 バケットにログファイルを配信します。さらに、その他の AWS サービスを設定して、CloudTrail ログで収集したデータをより詳細に分析し、それに基づく対応を行うことができます。詳細については、AWS CloudTrailユーザーガイドで次を参照してください。
CloudTrail はすべてのAWS AppSync API オペレーションをログに記録します。たとえば、CreateGraphqlApi、CreateDataSource、および ListResolvers の各 API を呼び出すと、CloudTrail ログファイルにエントリが生成されます。これらのオペレーションおよびその他のオペレーションは、に記載されています。「AWS AppSyncAPI リファレンス」に記載されています。
各イベントまたはログエントリには、リクエストの生成者に関する情報が含まれます。この ID 情報は以下のことを確認するのに役立ちます。
-
リクエストが、ルート認証情報と AWS Identity and Access Management (IAM) ユーザー認証情報のどちらを使用して送信されたか。
-
リクエストがロールまたはフェデレーションユーザーのテンポラリなセキュリティ認証情報を使用して行われたかどうか。
-
リクエストが、別の AWS サービスによって送信されたかどうか。
詳細については、AWS CloudTrailユーザーガイドの「CloudTrail userIdentity Element」を参照してください。
AWS AppSyncCloudTrail での データイベント
データイベントでは、リソース上またはリソース内で実行されるリソースオペレーション (Amazon S3 オブジェクトの読み取りまたは書き込みなど) についての情報が得られます。これらのイベントは、データプレーンオペレーションとも呼ばれます。データイベントは、多くの場合、高ボリュームのアクティビティです。デフォルトでは、CloudTrail はデータイベントをログ記録しません。CloudTrail [イベント履歴] にはデータイベントは記録されません。
追加の変更がイベントデータに適用されます。CloudTrail の料金の詳細については、「AWS CloudTrail の料金
CloudTrail コンソール、AWS CLI、または CloudTrail API オペレーションを使用して、AWS::AppSync::GraphQLApi リソースタイプのデータイベントを記録できます (クエリ、ミューテーション、サブスクリプションのオペレーション、リアルタイム WebSocket エンドポイントへの接続オペレーションが含まれますが、リアルタイム WebSocket エンドポイント経由で送信されるメッセージは含まれません)。データイベントをログに記録する方法の詳細については、「AWS CloudTrail ユーザーガイド」の「AWS マネジメントコンソール を使用したデータイベントのログ記録」および「AWS Command Line Interface を使用したデータイベントのログ記録」を参照してください。
次の表に、データイベントをログに記録できる AWS AppSync リソースタイプを示します。[データイベントタイプ (コンソール)] 列には、CloudTrail コンソールの [データイベントタイプ] リストから選択する値が表示されます。resources.type 値列には、AWS CLI または CloudTrail API を使用して高度なイベントセレクタを設定するときに指定する resources.type 値が表示されます。CloudTrail に記録されたデータ API 列には、リソース タイプの CloudTrail にログ記録された API コールが表示されます。
| データイベントタイプ (コンソール) | resources.type 値 | CloudTrail にログ記録されたデータ API |
|---|---|---|
| AppSync GraphQL |
AWS::AppSync::GraphQLApi
|
eventName、readOnly、および resources.ARN フィールドでフィルタリングして、自分にとって重要なイベントのみをログに記録するように高度なイベントセレクタを設定できます。オブジェクトの詳細については、「AWS CloudTrail API リファレンス」の「AdvancedFieldSelector」を参照してください。
[ { "name": "Only 1 AppSync API", "fieldSelectors": [ { "field": "eventCategory", "equals": [ "Data" ] }, { "field": "resources.type", "equals": [ "AWS::AppSync::GraphQLApi" ] }, { "field": "resources.ARN", "equals": [ "arn:aws:appsync:us-east-1:111122223333:apis/YourGraphQLApiId" ] } ] } ]
AWS AppSync ログファイルエントリについて
CloudTrail は、1 つ以上のログエントリがあるログファイルとしてイベントを送信します。各イベントは任意の送信元からの単一のリクエストを表し、リクエストされたオペレーション、オペレーションの日時、リクエストパラメータなどに関する情報を含みます。これらのログファイルは公開 API コールの順序付けられたスタックトレースではないため、特定の順序では表示されません。
注記
requestID は、AWS AppSync から出力されるログに対して権限のある一意の ID ではありません。requestID はクライアントによって上書きできます。そのため、この情報に基づいて意思決定を行うときは注意が必要です。
次の例は CreateApiKey オペレーションを示す CloudTrail ログエントリです。
{ "Records": [{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/Alice", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "diego_ramirez" }, "eventTime": "2018-01-31T21:49:09Z", "eventSource": "appsync.amazonaws.com", "eventName": "CreateApiKey", "awsRegion": "us-west-2", "sourceIPAddress": "192.2.0.1", "userAgent": "aws-cli/1.11.72 Python/2.7.11 Darwin/16.7.0 botocore/1.5.35", "requestParameters": { "apiId": "a1b2c3d4e5f6g7h8i9jexample" }, "responseElements": { "apiKey": { "id": "***", "expires": 1518037200000 } }, "requestID": "99999999-9999-9999-9999-999999999999", "eventID": "99999999-9999-9999-9999-999999999999", "readOnly": false, "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ] }
次の例は ListApiKeys オペレーションを示す CloudTrail ログエントリです。
{ "Records": [{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/diego_ramirez", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "diego_ramirez" }, "eventTime": "2018-01-31T21:49:09Z", "eventSource": "appsync.amazonaws.com", "eventName": "ListApiKeys", "awsRegion": "us-west-2", "sourceIPAddress": "192.2.0.1", "userAgent": "aws-cli/1.11.72 Python/2.7.11 Darwin/16.7.0 botocore/1.5.35", "requestParameters": { "apiId": "a1b2c3d4e5f6g7h8i9jexample" }, "responseElements": { "apiKeys": [ { "id": "***", "expires": 1517954400000 }, { "id": "***", "expires": 1518037200000 }, ] }, "requestID": "99999999-9999-9999-9999-999999999999", "eventID": "99999999-9999-9999-9999-999999999999", "readOnly": false, "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ] }
次の例は DeleteApiKey オペレーションを示す CloudTrail ログエントリです。
{ "Records": [{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/diego_ramirez", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "diego_ramirez" }, "eventTime": "2018-01-31T21:49:09Z", "eventSource": "appsync.amazonaws.com", "eventName": "DeleteApiKey", "awsRegion": "us-west-2", "sourceIPAddress": "192.2.0.1", "userAgent": "aws-cli/1.11.72 Python/2.7.11 Darwin/16.7.0 botocore/1.5.35", "requestParameters": { "id": "***", "apiId": "a1b2c3d4e5f6g7h8i9jexample" }, "responseElements": null, "requestID": "99999999-9999-9999-9999-999999999999", "eventID": "99999999-9999-9999-9999-999999999999", "readOnly": false, "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ] }
次の CloudTrail ログエントリの例は、カスタム Lambda 関数オーソライザーで承認された正常な GraphQL ミューテーションを示しています。
{ "eventVersion": "1.10", "userIdentity": { "type": "Unknown" }, "eventTime": "2024-11-06T15:42:30Z", "eventSource": "appsync.amazonaws.com", "eventName": "GraphQL", "awsRegion": "us-west-2", "sourceIPAddress": "15.248.1.214", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:131.0) Gecko/20100101 Firefox/131.0", "requestParameters": null, "responseElements": null, "additionalEventData": { "operationName": "MyMutation", "authType": [ "AWS_LAMBDA" ], "fieldAuthorizationResults": { "deniedFields": [] } }, "requestID": "c2d3768b-3446-40a1-bd95-8399fe776f96", "eventID": "21568be1-a1a8-4f43-b978-63cb4cc02a96", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::AppSync::GraphQLApi", "ARN": "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u" } ], "eventType": "AwsApiCall", "managementEvent": false, "recipientAccountId": "123456789012", "eventCategory": "Data" }
次の CloudTrail ログエントリの例は、カスタム Lambda 関数オーソライザーで承認された部分的に成功した GraphQL オペレーションを示しています。拒否されたフィールドを指定する fieldAuthorizationResults.deniedFields プロパティに注意してください。
{ "eventVersion": "1.10", "userIdentity": { "type": "Unknown" }, "eventTime": "2024-11-06T16:11:49Z", "eventSource": "appsync.amazonaws.com", "eventName": "GraphQL", "awsRegion": "us-west-2", "sourceIPAddress": "15.248.1.214", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:131.0) Gecko/20100101 Firefox/131.0", "requestParameters": null, "responseElements": null, "additionalEventData": { "operationName": "MyMutation", "authType": [ "AWS_LAMBDA" ], "fieldAuthorizationResults": { "deniedFields": [ "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u/types/Mutation/fields/createPost", "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u/types/Subscription/fields/onCreatePost", "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u/types/Post/fields/status" ] } }, "requestID": "ae817c4c-66ba-4f64-92a5-ba9c9c341dcd", "eventID": "30109698-7605-476a-9dff-b7ed78d134dc", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::AppSync::GraphQLApi", "ARN": "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u" } ], "eventType": "AwsApiCall", "managementEvent": false, "recipientAccountId": "123456789012", "eventCategory": "Data" }
次の CloudTrail ログエントリの例は、失敗した GraphQL オペレーションを示しています。
{ "eventVersion": "1.10", "userIdentity": { "type": "Unknown" }, "eventTime": "2024-11-06T15:51:11Z", "eventSource": "appsync.amazonaws.com", "eventName": "GraphQL", "awsRegion": "us-west-2", "sourceIPAddress": "15.248.1.214", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:131.0) Gecko/20100101 Firefox/131.0", "errorCode": "AccessDenied", "errorMessage": "{\n \"errors\" : [ {\n \"errorType\" : \"UnauthorizedException\",\n \"message\" : \"You are not authorized to make this call.\"\n } ]\n}", "requestParameters": null, "responseElements": null, "additionalEventData": { "operationName": "MyFullyDeniedLambdaMutation" }, "requestID": "0bef3cf3-a48b-4de9-8b1f-038afb563516", "eventID": "b738651f-4ec0-4548-8fec-200c6b42842b", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::AppSync::GraphQLApi", "ARN": "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u" } ], "eventType": "AwsApiCall", "managementEvent": false, "recipientAccountId": "123456789012", "eventCategory": "Data" }
次の例は、正常な GraphQL リクエストを示しています。
{ "eventVersion": "1.10", "userIdentity": { "type": "AssumedRole", "principalId": "AIDACKCEVSQ6C2EXAMPLE:jane_doe", "arn": "arn:aws:sts::123456789012:assumed-role/admin/jane_doe", "accountId": "123456789012", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::123456789012:role/admin", "accountId": "123456789012", "userName": "jane_doe" }, "attributes": { "creationDate": "2024-11-06T15:40:09Z", "mfaAuthenticated": "false" } } }, "eventTime": "2024-11-06T16:03:43Z", "eventSource": "appsync.amazonaws.com", "eventName": "GraphQL", "awsRegion": "us-west-2", "sourceIPAddress": "15.248.1.214", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:131.0) Gecko/20100101 Firefox/131.0", "requestParameters": null, "responseElements": null, "additionalEventData": { "operationName": "IamFullSuccess", "authType": [ "AWS_IAM" ], "fieldAuthorizationResults": { "allowedFields": [ "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u/types/Mutation/fields/createSecondPostAllowed" ], "deniedFields": [] } }, "requestID": "edc6bbbf-6bf2-40f5-820f-ef444f12e0c1", "eventID": "524656a5-0925-4370-9e7e-08888e9c299f", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::AppSync::GraphQLApi", "ARN": "arn:aws:appsync:us-west-2:123456789012:apis/rxfqcxzi3nbvza2hsq4njqqq6u" } ], "eventType": "AwsApiCall", "managementEvent": false, "recipientAccountId": "123456789012", "eventCategory": "Data" }