AWS Toolkit for eclipse Java 開發以及Amazon S3使用簡單介紹

        前陣子爲了將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下載某個文件的簡單舉例,希望對大家有些參考價值。


      


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章