关注AWS教程时排除UnknownResourceException问题

时间:2015-05-29 22:25:34

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

我试图关注this AWS教程。但是我在#34;你可以成功运行GreeterWorker。"因为我得到了一个UnknownResourceException。

mlab.gcf()

采取的步骤

  • 通过将 import java.util.Scanner; import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.util.Random; import java.awt.Color; import javax.swing.JButton; import javax.swing.ProgressMonitor; public class ButtonGame { private static int butNum = 1; private static JFrame frame; private static ActionListener notIt; private static ActionListener it; private static Random rand = new Random(); private static int butToFind = rand.nextInt(105); private static JFrame frameToClose; //private static int mouseClicks; //private static double time; public static void main(String[] args) { //actionlistener for all incorrect buttons (buttons that are "not it") notIt = new ActionListener() { public void actionPerformed(ActionEvent e) { Component component = (Component) e.getSource(); JFrame frame5 = (JFrame) SwingUtilities.getRoot(component); frame5.dispose(); } }; //actionlistener for the correct button (the button that's "it") it = new ActionListener() { public void actionPerformed(ActionEvent e) { JFrame youWin = new JFrame("YOU WON!"); //removes all panels to begin game again JButton again = new JButton("Play again"); again.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { java.awt.Window windows[] = java.awt.Window.getWindows(); for(int i=0;i<windows.length;i++){ if (windows[i] != frame) { windows[i].dispose(); } butToFind = rand.nextInt(105); butNum = 1; youWin.dispose(); } frame.setVisible(true); } }); //quits game JButton win = new JButton("Quit"); win.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); //layout youWin.setSize(775, 300); youWin.setLayout(new FlowLayout()); JLabel label1 = new JLabel("Fantastic!"); Font font1 = new Font("Courier", Font.BOLD,120); label1.setFont(font1); label1.setHorizontalAlignment(JLabel.CENTER); JLabel label2 = new JLabel("You beat the game!"); Font font2 = new Font("Courier", Font.BOLD,60); label2.setFont(font2); label2.setHorizontalAlignment(JLabel.CENTER); youWin.add(label1); youWin.add(label2); JPanel panel = new JPanel(); youWin.add(panel); panel.add(again); panel.add(win); youWin.setLocation(260, 100); youWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); youWin.setVisible(true); java.awt.Window windows[] = java.awt.Window.getWindows(); } }; //start window frame = new JFrame("Window"); frame.setLocation(400, 200); JButton button1 = new JButton("Click to begin"); //button to begin game button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // JDialog load = new JDialog(); // load.setAlwaysOnTop(true); // load.setSize(500,500); // load.setVisible(true); // load.add(new Label("Loading...")); // load.pack(); frame.setVisible(false); // "start" window's visibility // try { // Thread.sleep(100000); // } catch (Exception t) { // } // creates buttons for (int i = 0; i < 105; i++) { JFrame nextFrame = newFrame(butNum); nextFrame.setVisible(true); butNum++; } //creates instructions and tells user what button to find JFrame instructions = new JFrame("How to play"); instructions.setSize(300,175); instructions.setLayout(new GridLayout(4,1)); JPanel instPanel = new JPanel(); //button to remove instruction panel JButton ok = new JButton("Ok"); ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { instructions.dispose(); } }); instPanel.add(ok); instructions.setLocation(400,200); //layout of instruction panel JLabel find = new JLabel("Your goal is to find Button " + butToFind + "."); find.setHorizontalAlignment(JLabel.CENTER); JLabel find2 = new JLabel("Click a button to make it disappear."); find2.setHorizontalAlignment(JLabel.CENTER); JLabel find3 = new JLabel("Good luck!"); find3.setHorizontalAlignment(JLabel.CENTER); instructions.add(find); instructions.add(find2); instructions.add(find3); instructions.add(instPanel); instructions.setVisible(true); } }); frame.add(button1); frame.setSize(150,100); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } //creates frame with button in it public static JFrame newFrame(int num) { JFrame frame2 = new JFrame(); JButton button = new JButton("Button " + num); if (num == butToFind) { button.addActionListener(it); frameToClose = frame2; } else { button.addActionListener(notIt); } frame2.add(button); frame2.setSize(randNum(90,200), randNum(50,100)); frame2.setLocation(rand.nextInt(1200), rand.nextInt(800)); frame2.getContentPane().setBackground(new Color(rand.nextInt(255), rand.nextInt(255), rand.nextInt(255))); frame2.setVisible(true); return frame2; } //provides random number between high and low public static int randNum(int low, int high) { int result = -1; while (result < low || result > high) { result = rand.nextInt(high); } return result; } } IAM策略附加到我的AWS用户来解决权限异常。
  • 已验证helloWorldWalkthrough已在SWF信息中心上注册
  • 注册了新的helloWorldWalkthrough2域名,发生了同样的错误

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

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

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

3 个答案:

答案 0 :(得分:1)

您需要使用控制台或api调用创建域。域不是自动创建的。

答案 1 :(得分:1)

我也面临同样的问题,然后我发现该区域在GreeterWorker类内的主方法中是硬编码的,如下所示:

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

但我的SWF帐户位于西2区。

答案 2 :(得分:0)

我也是同样的问题。在教程中硬编码区域。 我将代码更改为flllows

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