티스토리 뷰

 

JAVA Aws Credential만들기

Java에서 AWS의 서비스에 접근 하려면 Java에 AWSCredentials 오브젝트가 필요합니다.

 

import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.services.redshift.AmazonRedshiftClient;

public class Hello {
    public static void main(String[] args){

        AWSCredentialsProvider acprovider =  DefaultAWSCredentialsProviderChain.getInstance();
        AWSCredentials credentials = acprovider.getCredentials();
        System.out.println(credentials);

        AmazonRedshiftClient client = new AmazonRedshiftClient(credentials);

        System.out.println(client);
    }
}
 

일단 소스코드는 위와 같습니다.

 

사용방법

위 소스코드를 실행 하면 됩니다.

실행하기 전에 .aws/credentials에 key와 secret을 넣으면 된다.

 

결과

com.amazonaws.auth.BasicAWSCredentials@37bba400
com.amazonaws.services.redshift.AmazonRedshiftClient@815b41f 


클라이언트는 AWS 레드시프트라는 DB 서비스의 클라이언트로 해놓았는데 다른 Aws에 있는 서비스들의 클라이언트를 써도 됩니다.

9~11번이 주된 내용이다.

 

aws 예제 같은걸 보다보면 죄다 Credential이 필요하다. 왜냐하면 내 서버에 뭔가 띄워놨는데 그게 트래픽, io등 내가 아니라도 누가 쓰면 돈이 나가기 때문입니다.

그래서 access_key, secret_access_key 이런걸 먼저 세팅 해야 된다는 내용이 나옵니다.

 

위 짤은 맥인데 .aws/credentials에 aws접속 할 수 있는 key, secret등을 넣어 주면 java가 실행 될때 이걸 읽어와서 aws관련 클래스에 자동으로 넣어주는 방식입니다.

 

DefaultAWSCredentialsProviderChain이라는 클래스가 있는데 이걸 쓰면 로컬에 위 경로에 있는 credentials안에 [default] [loceal] [dev]등의 블럭에 들어 있는 key, secret중에서 [default]에 있는걸 불러와서 CredentialProvider를 만듭니다.

 

 

 

Lambda call하기

https://aws.amazon.com/ko/blogs/developer/invoking-aws-lambda-functions-from-java/

 

package com.plutusds.data.server.caller;

import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.services.lambda.AWSLambda;
import com.amazonaws.services.lambda.AWSLambdaClient;
import com.amazonaws.services.lambda.AWSLambdaClientBuilder;
import com.amazonaws.services.lambda.model.InvokeRequest;
import com.amazonaws.services.lambda.model.InvokeResult;

public class LambdaCaller {

    private AWSCredentials credentials;


    public String call() {

        // credential
        AWSCredentialsProvider acprovider =  DefaultAWSCredentialsProviderChain.getInstance();

        // lambda client build
        AWSLambda awsLambda = AWSLambdaClientBuilder.standard()
                .withCredentials(acprovider)
                .build();

        // call
        InvokeRequest request = new InvokeRequest()
                .withFunctionName("wallets-info-server-dev-walletinfo")
                ;

        // result
        InvokeResult result = awsLambda.invoke(request);
        System.out.println(result);
        
        return "";
    }
}
 

 

 

end.

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함