aws api gateway 建立一个与AWS集成的REST API

构建带有Lambda代理集成的Hello World REST API和构建带有Lambda集成的API Gateway REST API都描述了如何创建API Gateway API来暴露集成的Lambda函数。此外,你还可以创建一个API Gateway API来暴露其他AWS服务,如Amazon SNS、Amazon S3、Amazon Kinesis,甚至AWS Lambda。这是由AWS集成实现的。Lambda集成或Lambda代理集成是一种特殊情况,Lambda函数的调用是通过API网关暴露的。
所有的AWS服务都支持专用的API来暴露其功能。然而,应用协议或编程接口有可能因服务不同而不同。与AWS集成的API网关API的优点是为你的客户访问不同的AWS服务提供一个一致的应用协议。
与Lambda代理集成不同,其他AWS服务没有相应的代理集成。因此,一个API方法是与一个AWS动作集成的。为了提高灵活性,与代理集成类似,你可以设置一个Lambda代理集成。然后Lambda函数解析和处理其他AWS行动的请求。

前提条件

在你开始本攻略之前,请做以下工作。
1.完成API Gateway入门的先决条件中的步骤。
2.确保IAM用户有权限在IAM中创建策略和角色。你需要在本攻略中创建一个IAM策略和角色。
3.创建一个名为MyDemoAPI的新API。欲了解更多信息,请参见教程。构建一个具有HTTP非代理集成的REST API。
4.将API至少部署一次到一个名为test的阶段。欲了解更多信息,请参见《构建具有Lambda集成的API网关REST API》中的API部署。
5.完成Build an API Gateway REST API with Lambda integration中的其余步骤。
6.在亚马逊简单通知服务(Amazon SNS)中至少创建一个主题。您将使用部署的API来获取Amazon SNS中与您的AWS帐户相关的主题列表。要了解如何在亚马逊SNS中创建一个主题,请参阅创建一个主题。(你不需要复制步骤5中提到的主题ARN)。

第1步:创建资源

在这一步中,您将创建一个资源,使 AWS 服务代理能够与 AWS 服务互动。
1.登录API网关控制台,网址是https://console.aws.amazon.com/apigateway。
2.选择 MyDemoAPI。
3.在资源窗格中,选择资源根,用一个正斜杠(/)表示,然后选择创建资源。
4.对于资源名称,输入MyDemoAWSProxy,然后选择创建资源。

第2步:创建GET方法

在这一步,你要创建一个GET方法,使AWS服务代理与AWS服务进行交互。
1.在资源窗格中,选择/mydemoawsproxy,然后选择创建方法。
2.对于HTTP方法,选择GET,然后保存你的选择。

第3步:创建AWS服务代理执行角色

在这一步,你要创建一个IAM角色,你的AWS服务代理用来与AWS服务互动。我们称这个IAM角色为AWS服务代理执行角色。没有这个角色,API Gateway就不能与AWS服务进行交互。在后面的步骤中,你将在你刚刚创建的GET方法的设置中指定这个角色。
1.登录到AWS管理控制台,在https://console.aws.amazon.com/iam/,打开IAM控制台。
2.选择策略。
3.执行以下操作之一。
如果出现Welcome to Managed Policies页面,选择Get Started,然后选择Create Policy。
如果出现一个策略列表,选择创建策略。
4.选择JSON,然后输入以下文字。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Resource": [
        "*"
      ],
      "Action": [
        "sns:ListTopics"           
      ]       
    }    
  ]
} 

5.选择审查政策。
6.输入政策的名称和描述。
7.选择创建策略。
8.选择角色。
9.选择创建角色。
10.在选择受信任实体类型下选择AWS服务,然后选择API网关。
11.选择下一步。权限。
12.选择 “下一步”。标签。
13.选择 “下一步”。审查。
14.对于角色名称,输入一个执行角色的名称(例如,APIGatewayAWSProxyExecRole),可选择输入这个角色的描述,然后选择创建角色。
15.在 "角色 "列表中,选择你刚刚创建的角色。你可能需要向下滚动该列表。
16.对于选定的角色,选择附加策略。
17.选择你先前创建的策略(例如,APIGatewayAWSProxyExecPolicy)旁边的复选框,并选择附加策略。
18.你刚刚创建的角色有以下信任关系,使API Gateway能够承担角色的任何附加策略所允许的行动。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "apigateway.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

第4步:指定方法设置并测试该方法

在这一步,你要指定GET方法的设置,以便它能通过AWS服务代理与AWS服务进行交互。然后你测试该方法。
1.在API网关控制台,在名为MyDemoAPI的API的资源窗格中,在/mydemoawsproxy中,选择GET。
2.选择集成请求,然后选择AWS服务。
3.对于AWS区域,选择你想获得Amazon SNS主题的AWS区域的名称。
4.对于AWS服务,选择SNS。
5.对于HTTP方法,选择GET。
6.对于行动,输入ListTopics。
7.对于执行角色,输入执行角色的ARN。
8.将路径覆盖留空。
9.选择保存。
10.在方法执行窗格中,在客户端框中,选择TEST,然后选择测试。如果成功,Response Body会显示一个类似下面的响应。

{
  "ListTopicsResponse": {
    "ListTopicsResult": {
      "NextToken": null,
      "Topics": [
        {
          "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-1"
        },
        {
          "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-2"
        },
        ...
        {
          "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-N"
        }
      ]
    },
    "ResponseMetadata": {
      "RequestId": "abc1de23-45fa-6789-b0c1-d2e345fa6b78"
    }
  }
}

第5步:部署API

在这一步,你要部署API,这样你就可以从API网关控制台之外调用它。
1.在 "资源 "窗格中,选择部署API。
2.对于部署阶段,选择测试。
3.对于部署描述,输入呼叫AWS服务代理演练。
4.选择部署。

第6步:测试API

在这一步中,你要到API网关控制台之外,使用你的AWS服务代理与亚马逊SNS服务进行互动。
1.在舞台编辑器窗格中,在Invoke URL旁边,复制URL到剪贴板。它应该看起来像这样。

https://my-api-id.execute-api.region-id.amazonaws.com/test

2.将URL粘贴到一个新的浏览器标签的地址栏中。
3.添加/mydemoawsproxy,使其看起来像这样。

https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoawsproxy

浏览到该URL。应该显示类似于以下的信息。

{"ListTopicsResponse":{"ListTopicsResult":{"NextToken": null,"Topics":[{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-1"},{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-2"},...{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-N}]},"ResponseMetadata":{"RequestId":"abc1de23-45fa-6789-b0c1-d2e345fa6b78}}}

以上就是建立一个与AWS集成的REST API的一些问题了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值