本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS AppSyncAmazon EventBridge 中規則的目標
AWS AppSync可讓開發人員使用安全、無伺服器且高效能的 GraphQL 和 Pub/Sub APIs,將其應用程式和服務連線至資料和事件。使用 AWS AppSync,您可以將即時資料更新發佈至具有 GraphQL 變動的應用程式。EventBridge 支援為相符事件呼叫有效 GraphQL 突變作業。當您指定 AWS AppSyncAPI 變動做為目標時, 會透過變動操作AWS AppSync處理事件,然後觸發連結至變動的訂閱。
注意
EventBridge 支援AWS AppSync公有 GraphQL APIs。EventBridge 目前不支援AWS AppSync私有 APIs。
您可以針對下列使用案例使用AWS AppSyncGraphQL API 目標:
將事件資料推送、轉換和儲存到您設定的資料來源中。
將即時通知傳送至連線的應用程式用戶端。
注意
AWS AppSync目標僅支援使用 AWS_IAM 授權類型呼叫AWS AppSyncGraphQL APIs。
如需AWS AppSyncGraphQL APIs的詳細資訊,請參閱《 AWS AppSync開發人員指南》中的 GraphQL 和AWS AppSync架構。
使用主控台指定 EventBridge 規則AWS AppSync的目標
範例:Amazon EventBridge AWS AppSync的目標
在下列範例中,我們將逐步解說如何指定 EventBridge 規則AWS AppSync的目標,包括定義輸入轉換以格式化要交付的事件。
假設您有由下列結構描述定義的AWS AppSyncGraphQL API Ec2EventAPI:
type Event { id: ID! statusCode: String instanceId: String } type Mutation { pushEvent(id: ID!, statusCode: String!, instanceId: String): Event } type Query { listEvents: [Event] } type Subscription { subscribeToEvent(id: ID, statusCode: String, instanceId: String): Event @aws_subscribe(mutations: ["pushEvent"]) }
使用此 API 的應用程式用戶端可以訂閱 subscribeToEvent,該訂閱是由 pushEvent 突變所觸發。
您可以使用目標建立 EventBridge 規則,該規則會透過 pushEvent 突變將事件傳送至 AppSync API。調用突變時,任何訂閱的用戶端都會收到該事件。
若要指定此 API 作為 EventBridge 規則的目標,您需執行下列動作:
將規則目標的 Amazon Resource Name (ARN) 設為
Ec2EventAPIAPI 的 GraphQL 端點 ARN。將突變 GraphQL 作業指定為目標參數:
mutation CreatePushEvent($id: ID!, $statusCode: String, $instanceId: String) { pushEvent(id: $input, statusCode: $statusCode, instanceId: $instanceId) { id statusCode instanceId } }突變選取集必須包含您希望在 GraphQL 訂閱中訂閱的所有欄位。
設定輸入轉換器,以指定如何在作業中使用相符事件中的資料。
假設您選取了
“EC2 Instance Launch Successful”範例事件:{ "version": "0", "id": "3e3c153a-8339-4e30-8c35-687ebef853fe", "detail-type": "EC2 Instance Launch Successful", "source": "aws.autoscaling", "account": "123456789012", "time": "2015-11-11T21:31:47Z", "region": "us-east-1", "resources": ["arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:eb56d16b-bbf0-401d-b893-d5978ed4a025:autoScalingGroupName/sampleLuanchSucASG", "arn:aws:ec2:us-east-1:123456789012:instance/i-b188560f"], "detail": { "StatusCode": "InProgress", "AutoScalingGroupName": "sampleLuanchSucASG", "ActivityId": "9cabb81f-42de-417d-8aa7-ce16bf026590", "Details": { "Availability Zone": "us-east-1b", "Subnet ID": "subnet-95bfcebe" }, "RequestId": "9cabb81f-42de-417d-8aa7-ce16bf026590", "EndTime": "2015-11-11T21:31:47.208Z", "EC2InstanceId": "i-b188560f", "StartTime": "2015-11-11T21:31:13.671Z", "Cause": "At 2015-11-11T21:31:10Z a user request created an AutoScalingGroup changing the desired capacity from 0 to 1. At 2015-11-11T21:31:11Z an instance was started in response to a difference between desired and actual capacity, increasing the capacity from 0 to 1." } }您可以使用目標輸入轉換器的輸入路徑,定義要在範本中使用的下列變數:
{ "id": "$.id", "statusCode": "$.detail.StatusCode", "EC2InstanceId": "$.detail.EC2InstanceId" }編寫輸入轉換器範本,以定義 EventBridge 傳遞給AWS AppSync變動操作的變數。此範本必須評估為 JSON。考量到輸入路徑,您可以撰寫以下範本:
{ "id": <id>, "statusCode": <statusCode>, "instanceId": <EC2InstanceId> }