如何在通过AWS Marketplace接收到的“Entitlement-Updated”消息中获取客户详细信息。

0

【以下的问题经过翻译处理】 我已经使用SNS主题为SaaS合同集成准备了一个SQS队列。现在,在AWS文档中提到,我们将仅在队列中收到与客户的订阅更改相关的Entitlement-Updated消息。基本上,根据文档,我们需要在此之后调用GetEntitlements以接收更新后的权益。我们如何知道需要为哪个客户调用GetEntitlement,因为队列中只有Entitlement-Updated消息。有人能否提供一个示例的Entitlement-Updated消息,以便我了解它是如何在SQS中接收的?

profile picture
专家
已提问 5 个月前5 查看次数
1 回答
0

【以下的回答经过翻译处理】 当您的Amazon市场上的买家创建新合同、升级合同、更新合同或合同过期时,将向“aws-mp-entitlement-notification”SNS主题发布通知。发送到此主题的通知将具有以下三个关键信息:

{
    "action": "<action-name>",
    "customer-identifier": " X01EXAMPLEX",
    "product-code": "n0123EXAMPLEXXXXXXXXXXXX",
}

尽管“action”属性键始终具有“entitlement-updated”值,但买家/客户身份将使用属性键“customer-identifier”提供。

aws-mp-entitlement-notificationSNS主题将此消息转发到您的SQS队列时,消息将类似于以下内容:

{
  "Type" : "Notification",
  "MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76",
  "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
  "Message" : "{\n    \"action\": \"<action-name>\",\n    \"customer-identifier\": \" X01EXAMPLEX\",\n    \"product-code\": \"n0123EXAMPLEXXXXXXXXXXXX\",\n}",
  "Timestamp" : "2012-03-29T05:12:16.901Z",
  "SignatureVersion" : "1",
  "Signature" : "EXAMPLEnTrFPa3...",
  "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
  "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee"
}

SQS队列消息中“customer-identifier”和“product-code”的详细信息将成为“Message”属性键的一部分。

...
"Message

然后,您可以发出 "GetEntitlements" API 调用,并使用来自 SQS 消息的 "customer-identifier" 和 "product-code"。

在进行 GetEntitlements 调用时,您将需要将来自 SQS 消息的 "product-code" 作为 "ProductCode" 请求参数传递。然后,您需要使用 "Filter" 请求参数,并将从 SQS 消息中获得的客户标识作为值传递给 CUSTOMER_IDENTIFIER 过滤键。

此 API 调用将返回与 SQS 消息中的 customer-identifier 和 product-code 标识的客户特定的权益。

例如,使用 Python 编程语言和 boto3 SDK,您可以执行 "get_entitlements" 函数调用:

response = client.get_entitlements(
    ProductCode='n0123EXAMPLEXXXXXXXXXXXX',
    Filter={
        'CustomerIdentifier': [
            'X01EXAMPLEX',
        ]
    }
)
profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则