定义一个在地图中获取参数的方法

时间:2017-10-20 00:03:39

标签: java amazon-web-services

我有一个用例,我在云形成堆栈中创建多个AWS资源,例如S3存储桶,SNS主题等。所有这些都是简单的资源,即S3存储桶中没有任何对象。

我有一个工作流程设置,我的代码将获取随机resourceType,然后创建资源。现在,我正在尝试构建一个删除这些创建资源的泛型类/方法。

我将资源存储为json字段,这些字段为我提供了有关resourceType

的详细信息
{
  "AWSService": "S3",
  "AWSResourceType": "Bucket",
  "ResourceAttributes" : {
      "BucketName": "MyBucket"
  }
}

对于清理,我认为我有一个带有key的映射作为AWSService,而值是一个runnable,它将调用相应的serviceType来删除资源。

但是,runnables不能接受参数,因此我无法传入要删除的resourceName / Arn,以便API知道要删除哪个资源。

有没有办法可以将这些信息存储为地图并仍将参数传递给正在执行的方法?

1 个答案:

答案 0 :(得分:0)

我不确定在没有看到某些代码的情况下完全理解你所做的所有影响,但我认为这可能会让你朝着正确的方向前进。

您可以在新的通用类中实现Runnable接口:http://leo.ugr.es/elvira/devel/Tutorial/Java/essential/threads/clock.html

所以你可以做的是创建一个实现runnable接口的泛型类,并且有一个可以获取你需要的变量的构造函数,或者getter / setter等等。

有些事情:

public class ResourceCleanup implements Runnable {
    private String arn;

    @Override
    public void run() {
        // do the cleanup with the arn
    }

    public ResourceCleanup(String arn) {
        this.arn = arn;
    }
    // etc.
}

或者您可以传入地图而不是String,根据需要使用Java Generics等。希望这有帮助!