微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS::ApiGatewayV2::Integration 如何在 CloudFormation 中使用 MessageAttributes

如何解决AWS::ApiGatewayV2::Integration 如何在 CloudFormation 中使用 MessageAttributes

我已经尝试了在 CloudFormation 文档中使用 MessageAttributes 的几种变体,但我无法让它工作。这就是我所拥有的:

  HttpApiSqsIntegration:
    Type: AWS::ApiGatewayV2::Integration
    Properties:
      ApiId: !Ref HttpApiRef
      CredentialsArn: !GetAtt MyHttpApiRole.Arn
      IntegrationType: AWS_PROXY
      IntegrationSubtype: SQS-SendMessage
      RequestParameters:
        QueueUrl: !Ref InputMessageSqs
        MessageBody: $request.body
        MessageAttributes.entry.1.Name: foo
        MessageAttributes.entry.1.Value.StringValue: bar
        MessageAttributes.entry.1.Value.DataType: String
      PayloadFormatVersion: "1.0"

我遵循指定的 hereherehere 格式,但出现以下错误消息:

Parameter: MessageAttributes.entry.1.Name does not fit schema for Operation: 
SQS-SendMessage. (Service: AmazonApiGatewayV2; Status Code: 400; 
Error Code: BadRequestException; Request ID: ...; Proxy: null)

感谢任何帮助。谢谢。

解决方法

您遵循了错误的规范。 Here 是正确的。

RequestParameters 对于 WebSocket API,一个键值映射指定 从方法请求传递给方法的请求参数 后端。关键是集成请求参数名称和 关联值是方法请求参数值或静态值 必须用单引号括起来并根据需要进行预编码 通过后端。方法请求参数值必须匹配 method.request.{location}.{name} 的模式,其中 {location} 是 查询字符串、路径或标题;并且 {name} 必须是有效且唯一的 方法请求参数名。

对于具有指定 integrationSubtype 的 HTTP API 集成,请求 参数是一个键值映射,指定传递的参数 到 AWS_PROXY 集成。您可以提供静态值或映射 请求被评估的数据、阶段变量或上下文变量 在运行时。要了解更多信息,请参阅使用 AWS 服务集成 用于 HTTP API。

对于没有指定 integrationSubtype 的 HTTP API 集成 请求参数是一个键值映射,指定如何转换 在将 HTTP 请求发送到后端之前。关键应该 遵循模式:

。在哪里 动作可以是追加、覆盖或删除。对于值,您可以提供 静态值,或映射请求数据、阶段变量或上下文 在运行时计算的变量。要了解更多信息,请参阅 转换 API 请求和响应。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。