ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

初识AWS: IAM+S3+Lex+Lambda

2019-09-10 18:53:27  阅读:248  来源: 互联网

标签:IAM 调用 S3 AWS Lex 订机票 比如 Lambda


在一个side project中用到了AWS的一些Services。AWS提供了很多的服务,比如

  • Compute
    • EC2
  • Storage
    • S3
  • Database
    • RDS
  • Networking & Content Dilivery
    • Route 53
  • Developer Tools
    • Cloud 9
  • Machine Learning
    • Amazon Lex
  • Security, Identity, & Compliance
    • IAM

一开始接触有点头大,看到一个个新名词,有点不知所措。而且文档内容非常详细,感觉是写给技术人员而不是用户看的。静下心来学习了一段时间后,算是摸到了一点门道。下面就挑几个重点的讲下是怎么使用的。

1. IAM

Identity and Access Management

权限控制

一开始注册并登陆AWS之后,我们是作为root user进去的,权限非常大,比如可以管理账单,加减服务器等等。但是我们的应用调用AWS的服务时,肯定不能用root user的账号,否则会有安全隐患。这时,就需要在IAM里面创建其他的User,并给与相应的权限。

IAM构建权限控制的层次关系如下:Group里面可以多个Users,一个User可以又多个Roles,一个Role可以有多个Policies。最细化的粒度是在Policy上,可以在Permissions policies中查看自己有哪些权限。

Group
    User
        Role
            Policy

同时,为了方便管理,IAM还有一个Permissions boundary,to control the maximum permissions this user can have。一般可以不设。

Access Key

在调用AWS服务时,需要一个access key,这样AWS才知道这个HTTP request是哪个用户发来的,有没有权限调用对应的服务。生成路径如下:

Users -> Summary -> Security credentials -> Access keys -> Create access key

生成的access key格式如下:

Access key ID:ABCDEFG
Secret access key:ID:ABCDEFG

MFA device

如果想要给账号加一层防护,可以添加MFA device,即手机上装一个软件(比如Google Autenticator),之后每次登陆都需要额外输入一次手机令牌。

Users -> Summary -> Security credentials -> Assigned MFA device

2. S3

S3 buckets,即文件服务器。一般用来存放一些静态文件。比如图片,视频,或者需要import的css,js脚本等等。

Web上面的操作比较简单,创建一个bucket,然后往里面放东西即可。唯一需要注意的是它需要设置访问权限(Access),区域(Region)等属性。

当然,除了在Web上直接操作,它也支持在程序中调用S3 API,完成上传或管理等操作。

3. Lex

Amazon Lex,可以完成一些NLP,语义识别与处理。一开始需要注意的是,不是每个Region都提供这项服务,为此,我选择了美东(N. Virginia)的服务器。

初步使用下来的感受是,Lex是一个简单的以解决问题为导向的系统。我们可以和机器人对话,来订花,客服等等,但可能闲聊就比较难了。这是由它的设计决定的。

Lex的核心有几个组成部分:

  • Bot:和我们对话的机器人,比如一个订机票的bot
  • Intent:机器人试图理解到我们的意图,比如订机票,查航班,订酒店。
  • Utterances:我们可以定义一些“话语”,和Intent相关联。比如“我要订机票”,“我想订一张机票”等等。
  • Slot type:试图拿到一些与意图有关的参数,比如订机票的话,需要什么时间,什么航班。

分析订机票这个事件,对话可能如下

A:我要订机票。
Bot:你想要订哪个航班?
A:BK8767。
Bot:你想要订什么时间的?
A:2019年11月1号。
Bot:好的,给你定好了,订单号为12345。

经过一系列的对话,机器人拿到了所有的Slot,即可以去做最终的Fulfillment,导向下单支付页面等等。当然,实际的对话肯定要比这个复杂,比如,顾客可能会问:11月1号从北京飞巴黎的航班有哪些,按价格高低排列。如此反复多次才会完成下单。这就需要额外的代码来支持这些功能。

Lex支持扩展代码功能,它既支持在utterances处理的最初阶段调用Lambda,也支持在Fulfillment阶段再调用Lambda。

  • Lambda initialization and validation:拿到utterances之后做一些处理,比如validation,但同时它也可以做更多的事,甚至包括确定Slot的内容等等。
  • Fulfillment:拿到Intent和Slot之后,怎么去做进一步处理。

当然,Lex也支持外部调用集成,比如自己写一个Presentation Layer,后台调用Lex做NLP,然后返回数据到前台进行展示。

个人认为,Lex是一个简单的半集成的NLP Bot,可以用低成本,快速定制一个由业务需求驱动的机器人,但其中不涉及复杂/高阶的NLP处理。

和S3甚至几乎所有的AWS服务一样,Lex的所有操作都可以通过Web Service完成。

4. Lambda

在上面我们说到了Lex支持调用Lambda,那么什么是Lambda呢?

个人理解就是,比如一个Function,AWS会管理它的运行环境或生命周期,你只需要调用就好了。如下:

def order_flowers_info(intent_request):
    return something

用户的需求很简单,调用order_flowers方法,然后得到something,我最终的关注点在于something对不对,其它并不那么重要。所以,可以在Lambda中实现这个方法,并完成调用。

我觉得,Lambda更多的是面向其他的AWS服务。比如当你使用了AWS其他一些机器学习框架时,想要做一些hack或者写一些自己的逻辑,就可以用自集成的Lambda,非常方便。如果我自己有一个应用,那么我本地就直接写一个Function去调用,不需要集成Lambda。

标签:IAM,调用,S3,AWS,Lex,订机票,比如,Lambda
来源: https://www.cnblogs.com/maxstack/p/11499440.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有