gpt4 book ai didi

java - 如何通过java访问AWS API端点

转载 作者:行者123 更新时间:2023-11-30 03:02:50 26 4
gpt4 key购买 nike

我是 AWS 的初学者,对于连接 AWS API 端点有不清楚的地方。我无法从 java 客户端访问 AWS API 端点。每次都失败。

  • 我可以知道为什么连接失败吗?
  • 有什么源代码可以引用吗?

    public interface LamdaInterface {

    @LambdaFunction(functionName="GetCategoryAction")
    public List<LamdaOutput> getAllCategory(LamdaInput input);

    }

    public class LamdaTest {

    public static void main(String[] args) {
    AWSCredentials credentails = new AWSCredentials() {

    @Override
    public String getAWSSecretKey() {
    // my aws secret key
    return "xxxx";
    }

    @Override
    public String getAWSAccessKeyId() {
    // my aws access key Id
    return "xxx";
    }
    };

    AWSLambdaClient lambda = new AWSLambdaClient(credentails);
    lambda.configureRegion(Regions.AP_NORTHEAST_1);
    lambda.setEndpoint("https://xxx.execute-api.ap-northeast-1.amazonaws.com/prod/listall");

    LamdaInterface service = LambdaInvokerFactory.build(LamdaInterface.class, lambda);
    System.out.println("Calling...");
    List<LamdaOutput> list = service.getAllCategory(new LamdaInput());
    System.out.println("list : " + list);
    for (LamdaOutput l : list) {
    System.out.println("Name : " + l.getName());
    }
    }

    }

由于此错误而失败。

Calling...


Exception in thread "main" com.amazonaws.AmazonClientException: Unable to execute HTTP request: Connection timed out: connect
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:642)
at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:400)
at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:362)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:311)
at com.amazonaws.services.lambda.AWSLambdaClient.invoke(AWSLambdaClient.java:1925)
at com.amazonaws.services.lambda.AWSLambdaClient.invoke(AWSLambdaClient.java:1029)
at com.amazonaws.services.lambda.invoke.LambdaInvokerFactory$LambdaInvocationHandler.invoke(LambdaInvokerFactory.java:121)
at com.sun.proxy.$Proxy7.getAllCategory(Unknown Source)
at testPrj.LamdaTest.main(LamdaTest.java:43) Caused by: java.net.ConnectException: Connection timed out: connect

尽管我尝试从浏览器进行连接,但还是失败了。由于是GET请求,所以不需要传递任何请求参数。

https://xxx.execute-api.ap-northeast-1.amazonaws.com/prod/listall

Error is : **{"message":"Missing Authentication Token"}**

最佳答案

您似乎正在尝试在设置为端点的 URL 上调用 lambda 函数。端点是 API 客户端发送 API 调用的地方。它与您浏览以调用 lambda 的位置无关。此处列出了有效的 lambda 端点:http://docs.aws.amazon.com/general/latest/gr/rande.html#lambda_region 。顺便说一句,您应该设置端点,或者调用 setRegion/configureRegion,但不能同时调用两者。

要调用您的 lambda,请使用 com.amazonaws.services.lambda.AWSLambdaClient 上的 invoke() API 调用或 AWS CLI(aws lambda invoke --function-name GetCategoryAction)。

如果您想让 lambda 作为 API 在网络上访问,您可能需要查看 Amazon API Gateway 服务。

关于java - 如何通过java访问AWS API端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35499151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com