amazon-web-services - 使用 Cloudformation 将 API 网关与 SNS 集成

标签 amazon-web-services aws-api-gateway aws-cloudformation

我正在尝试使用 Cloudformation 将 API 网关方法集成到 SNS 主题,但无法弄清楚 Uri 属性应该是什么样子。

对于连接到 Lambda,它看起来像:

"Integration": {
      "IntegrationHttpMethod": "POST",
      "Type": "AWS",
      "Uri": {
        "Fn::Join": [
          "",
          [
            "arn:aws:apigateway:",
            {
              "Ref": "AWS::Region"
            },
            ":lambda:path/2015-03-31/functions/",
            {
              "Fn::GetAtt": [
                "SomeLambdaFunction",
                "Arn"
              ]
            },
            "/invocations"
          ]
        ]
      }

SNS 的等效内容是什么样的?

最佳答案

将主题、主题和消息设置为请求参数的集成模板如下所示:

  ApiGatewayGETMethod:
    Type: AWS::ApiGateway::Method
    Properties:
      AuthorizationType: NONE
      HttpMethod: GET
      RequestParameters:
        method.request.querystring.message: false
        method.request.querystring.subject: false
        method.request.querystring.topic: false
      Integration:
        Type: AWS
        Credentials:
          Fn::GetAtt: [ GatewayRole, Arn ]
        Uri:
          Fn::Join:
            - ""
            - - "arn:aws:apigateway:"
              - Ref: AWS::Region
              - ":sns:action/Publish"
        IntegrationHttpMethod: GET
        RequestParameters:
          integration.request.querystring.TopicArn: "method.request.querystring.topic"
          integration.request.querystring.Subject: "method.request.querystring.subject"
          integration.request.querystring.Message: "method.request.querystring.message"
        IntegrationResponses:
          - StatusCode: 200
            ResponseTemplates:
              application/json: '{"status":"OK"}'
      MethodResponses:
        - StatusCode: 200
      ResourceId:
        Fn::GetAtt: [ ApiGatewayRestApi , RootResourceId ]
      RestApiId: !Ref ApiGatewayRestApi

可以使用以下语法调用此实现:

https://abc123456.execute-api.eu-central-1.amazonaws.com/x
          ?topic=arn:aws:sns:eu-central-1:111111:sampletopic
          &message=samplemesage
          &subject=samplesubject

关于amazon-web-services - 使用 Cloudformation 将 API 网关与 SNS 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45790583/

相关文章:

amazon-web-services - 分区容量限制与 DynamoDB 中表的总容量有何关系?

aws-lambda - serverless.yml 中的重复映射键

java - 从 Java 服务到 AWS Lambda 和 AWS Gateway API

aws-lambda - Lambda 函数完成后 Amazon Cloudformation 堆栈挂起

aws-cloudformation - 如何在 AWS Cloudformation 模板中将现有 ENI 添加为 Eth0

aws-cloudformation - 使用导出的值

javascript - 如何通过 javascript 在不公开 API key 的情况下将数据存储在 Amazon DB(没有服务器)中?

amazon-web-services - AWS - dynamoDB 价格和使用

amazon-web-services - AWS Api 网关自定义域路由到错误的基本 URL

amazon-web-services - 如何使用 GitLab CI/CD 在 aws 中部署 docker 应用程序