【问题标题】:Troubleshoot UnknownResourceException when following AWS tutorial遵循 AWS 教程时对 UnknownResourceException 进行故障排除
【发布时间】:2015-08-12 22:26:17
【问题描述】:

我正在尝试遵循 this AWS 教程。但是我在“此时您可以成功运行 GreeterWorker”时遇到了麻烦。因为我收到了 UnknownResourceException。

Exception in thread "main" com.amazonaws.services.simpleworkflow.model.UnknownResourceException: Unknown domain: helloWorldWalkthrough (Service: AmazonSimpleWorkflow; Status Code: 400; Error Code: UnknownResourceFault; Request ID: xxxxx)

采取的步骤

  • 通过将SimpleWorkflowFullAccess IAM 策略附加到我的 AWS 用户解决了权限异常。
  • 已验证 helloWorldWalkthrough 已在 SWF 仪表板上注册
  • 注册了新的 helloWorldWalkthrough2 域,出现同样的错误

本教程没有介绍将 SimpleWorkflowFullAccess 策略附加到 AWS 用户的步骤,所以我想知道是否有类似的未记录步骤允许我的用户找到此域。

我的代码是从教程中的 GreeterWorker 类复制/粘贴的。

import com.amazonaws.ClientConfiguration;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.simpleworkflow.AmazonSimpleWorkflow;
import com.amazonaws.services.simpleworkflow.AmazonSimpleWorkflowClient;
import com.amazonaws.services.simpleworkflow.flow.ActivityWorker;
import com.amazonaws.services.simpleworkflow.flow.WorkflowWorker;

public class GreeterWorker  {
   public static void main(String[] args) throws Exception {
     ClientConfiguration config = new ClientConfiguration().withSocketTimeout(70*1000);

     String swfAccessId = System.getenv("AWS_ACCESS_KEY_ID");
     String swfSecretKey = System.getenv("AWS_SECRET_KEY");
     AWSCredentials awsCredentials = new BasicAWSCredentials(swfAccessId, swfSecretKey);

     AmazonSimpleWorkflow service = new AmazonSimpleWorkflowClient(awsCredentials, config);
     service.setEndpoint("https://swf.us-east-1.amazonaws.com");

     String domain = "helloWorldWalkthrough";
     String taskListToPoll = "HelloWorldList";

     ActivityWorker aw = new ActivityWorker(service, domain, taskListToPoll);
     aw.addActivitiesImplementation(new GreeterActivitiesImpl());
     aw.start();

     WorkflowWorker wfw = new WorkflowWorker(service, domain, taskListToPoll);
     wfw.addWorkflowImplementationType(GreeterWorkflowImpl.class);
     wfw.start();
   }
}

【问题讨论】:

  • 您是否检查过控制台和 Java 客户端使用相同的区域?
  • 本教程使用硬编码端点。如果有指示为您使用的任何区域编辑该行,我错过了它。我只是使用默认值,从未想过要检查。
  • @gridDragon 如果您找到了解决方案,请您把它放在这里,以便其他人受益。谢谢。

标签: java amazon-web-services amazon-swf


【解决方案1】:

我也遇到了同样的问题。区域在教程中是硬编码的。 我改变了代码如下

service.setEndpoint("https://swf.us-west-2.amazonaws.com");

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题,然后我发现该区域在 GreeterWorker 类的 main 方法中被硬编码,如下所示:

    service.setEndpoint("https://swf.us-east-1.amazonaws.com");
    

    但是我的 SWF 帐户位于 west-2 地区。

    【讨论】:

      【解决方案3】:

      您需要使用控制台或通过 api 调用创建域。域不会自动创建。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-02
        • 2011-02-07
        相关资源
        最近更新 更多