月度归档: 2016 年 10 月

  • 在AWS Lambda中运行Spring Boot应用

    在AWS Lambda中运行Spring Boot应用

    AWS Lambda 是一种计算服务。首先将代码上传到 AWS Lambda ,它按使用时间收费,有自动伸缩等功能,也就是说你上传了代码,其他事情你就不用管了。

    从字面上看你上传的代码是一个函数,那么就需要一个触发器来调用你的函数。AWS提供了若干触发器,其中就有API Gateway。这意味着你可以暴露一个HTTP或者HTTPS的调用地址,然后执行对应的函数。

    因为AWS Lambda有自己的一些要求,所以很明显是无法直接运行Spring Boot应用的,需要修改一下入口才能实现对应的功能。

    首先在依赖中加入aws的依赖

    compile group: 'com.amazonaws', name: 'aws-java-sdk-core', version: '1.11.48'

    这个依赖中包含了我们必须实现的接口RequestHandler

    package com.amazonaws.services.lambda.runtime;
    
    import com.amazonaws.services.lambda.runtime.Context;
    
    /**
     * 
     * Lambda request handlers implement AWS Lambda Function application logic using plain old java 
  • 使用AWS Elastic Beanstalk发布spring boot应用

    Elastic Beanstalk是AWS提供的快速使用AWS的部署和管理应用程序。

    Elastic Beanstalk提供了很多常用语言的快速上手的模板,可以直接从中启动。以一般的Spring Boot应用为例,进入以后选择“Web 服务器”套餐,语言选择JAVA,默认语言版本为JAVA 8。

    然后选择上传代码。

    Elastic Beanstalk提供了两个自定义选项,一个是源码的编译,一个是环境的自定义。

    先来看看Buildfile。选择在服务器编译的原因有很多种,有些是真的必须要本地编译,有的是包实在太大,对于Spring Boot应用来说,50M以上的jar真的很常见,上传上去真的很麻烦。

    所以Buildfile中直接调用gradle打包即可

    build: gradle build -x test

    打包之后jar包会放在build/libs下面,这里就还需要指定在EC2上运行的命令,不然没法定位jar包位置,这个就用Procfile文件

    web: java -jar build/libs/your.jar
    

    Elastic Beanstalk默认会提供一个Nginx,然后默认端口是转发到5000。

    Procfile是可以写几行的,每一行的端口依次加100,比如第一个是5000,第二个就是5100。

    Elastic Beanstalk是支持直接选择免费使用套餐的,但是默认免费套餐用的t1,而不是t2可以自己改一下。

    当然,过了免费期的就随意了。…

  • AWS RDS无法访问的问题

    在AWS起了一个MariaDB的数据库,虽然设置了公开访问,但是不知道为什么总是连接不上。

    仔细检查一下才发现创建的时候一路Next,对于安全组规则选择了默认的一个,其中允许的IP不对,马上改一下,允许所有IP

    aws-group

  • 集中式认证服务

    CAS全称Central Authentication Service,中文名集中式认证服务。

    CAS是一种针对万维网的单点登录协议。它的目的是允许一个用户访问多个应用程序,而只需提供一次凭证(如用户名和密码)。它还允许web应用程序在没有获得用户的安全凭据(如密码)的情况下对用户进行身份验证。CAS即指协议,也指实现了该协议的软件包。

    CAS最早由Yale发起,目前有三个版本,即v1,v2,v3。

    相关定义

    Client

    终端用户或者是 WEB 浏览器

    Server

    统一认证服务所在的服务器

    Service

    终端用户或者 WEB 浏览器试图访问的应用

    Proxy

    作为代理的服务,用户通过该服务(代理)访问Back-end service(后端应用)

    Back-end service

    用户通过代理访问的应用,这个应用就被称为后端服务(Back-end service) 。它也被称作“target service”目标服务

    TGT

    Ticket Grangting Ticket 。TGT是CAS为用户签发的登录票据,拥有了TGT,用户就可以证明自己在CAS成功登录过。TGT封装了Cookie值以及此Cookie值对应的用户信息。当HTTP请求到来时,CAS以此Cookie值为key查询缓存中有无TGT ,如果有的话,则相信用户已登录过。

    ST

    Service Ticket 。ST是CAS为用户签发的访问某一service的票据。用户访问service时,service发现用户没有ST,则要求用户去CAS获取ST。用户向CAS发出获取ST的请求,CAS发现用户有TGT,则签发一个ST,返回给用户。用户拿着ST去访问service,service拿ST去CAS验证,验证通过后,允许用户

    TGC

    Ticket Grangting Cookies