当前位置: 首页 > 工具软件 > Eclipse IAM > 使用案例 >

AWS Toolkit for eclipse Java 开发以及Amazon S3使用简单介绍

公冶鸣
2023-12-01

        前阵子为了将AWS Lambda function 从VS上.NET迁移至Linux系统,所以选择以前使用过的Eclipse搭配Java语言来实现。

   进入主题,首先我们需要按照官方的说明安装好Eclipse Java EE和AWS Toolkit,官方引导传送门: http://docs.amazonaws.cn/toolkit-for-eclipse/v1/user-guide/setup-install.html点击打开链接;需要注意的是,AWS Toolkit链接https://aws.amazon.com/eclipse点击打开链接在eclipse中Install new Software 似乎无法加载出来,建议直接打开该地址,然后从Github下载最新的安装包,之后在eclipse直接添加安装包位置安装(这个跟ADT安装一样的)。

     正式使用之前有一个很重要的步骤,注册一个Amazon账户,然后准备好AccessId和SecretKey、IAM role,还有S3 bucket,具体步骤请自行参考Amazon官方说明。   

     安装完成之后,一般会提示重启eclipse,之后会需要输入AccessId和SecretKey作为AWS Toolkit的Credential,重启后第一次会直接跳出窗口让你输入,选择取消后也可以从Window-->Preferences-->AWS Toolkit进行添加;再从Perspective-->Customize Perspective...让AWS Toolkit显示在工具栏,就可以从工具栏选择New AWS Lambda Java Project了。当然,这里你也可以选择其他project类型,但本文仅介绍Lambda Project和Lambda function。选择创建新的AWS项目时,输入项目名称、项目包名,选择RequestHandler参数类型,我这里是选择自定义custom,确认后,请保持网络畅通,等待自动下载aws-sdk等依赖并最终生成项目。

    生成项目后,我们可以在/src/main/java峡找到默认的class,里面仅有一个handlerRequest方法,我们可以根据需求修改函数的input参数(第一个)和output参数(第二个),这里需要注意class Implement 的Requesthandler后面的参数类型需要同步修改;

   接下来需要访问S3存储了,但考虑到代码中Access Id等数据的安全性,建议先在Amazon service console--> Lambda,创建一个Function,在configuration中,Function code部分选择Runtime Java8,handler里输入包名和方法名;添加Environment Variables,记录一些重要的常量;回到顶部,点击Save。

   我们再回到eclipse在handlerRequest中添加需要执行的代码,首先取得环境变量比如access id,然后实例化AmazonS3;

                String access_id = System.getenv("ACCESS_ID");    //get Environment Variables
        String secret_key = System.getenv("SECRET_KEY");
        AWSCredentials credentials = new BasicAWSCredentials(access_id,secret_key);
    AmazonS3 s3Client =  AmazonS3ClientBuilder.standard().withCredentials(

    new AWSStaticCredentialsProvider(credentials)).build();    // new a Amazon S3 Client object

之后通过s3Client 取得bucket和key对应的Object和InputStream并且逐行读出;

    S3Object object = s3Client.getObject(bucketName,key); //get S3 object by bucketName and key

        if(object!=null){
            System.out.println("Content-Type: " + object.getObjectMetadata().getContentType());
           
            InputStream input = null;
            String line;           
            try {
                input=object.getObjectContent(); //get object content inputStream
                BufferedReader reader = new BufferedReader(new InputStreamReader(input));                                

                while ((line = reader.readLine()) != null && !line.isEmpty()) { //read line  

                            //deal with your function here

                 }

            } catch (IOException e) {
            e.printStackTrace();
            }finally{
                if(input!=null){
                    try {
                        input.close();  //read finish and close
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }

        }

以上仅仅是S3下载某个文件的简单举例,希望对大家有些参考价值。


      


 类似资料: