背景
AWS EC2具有许多用于配置单个实例或实例集群的复杂机制。我们用于处理不同配置的功能之一是用户数据。可用于传递命令,设置变量或运行脚本。
在创建EMR集群时,我们正在寻找类似的选择。
EMR群集
我们已经有一个配置单元集群并在产品中运行。
我们需要以最少的更改来重复使用脚本。为了相同的目的,想要自定义这些脚本。但是我们还没有找到合适的方法来对脚本进行参数化。
尝试的方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar mActionBar = getSupportActionBar();
mActionBar.setDisplayShowHomeEnabled(false);
mActionBar.setDisplayShowTitleEnabled(false);
LayoutInflater mInflater = LayoutInflater.from(this);
View mCustomView = mInflater.inflate(R.layout.custom_action_bar_layout, null);
TextView cancelButton = (TextView) mCustomView.findViewById(R.id.cancel_button);
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
mActionBar.setCustomView(mCustomView);
mActionBar.setDisplayShowCustomEnabled(true);
}
此脚本配置诸如配置单元表之类的数据,但这是在配置主机之后。
尝试了另一种选择:
--steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://script-runner.jar,Args=["s3 location / bootstrap.sh"]
这用于设置一些环境变量,稍后可被引导脚本用来运行适当的脚本。
但是,当主机启动时,我们看不到设置了环境变量。这也限制了正在查看该变量的脚本。
那正确的方法是什么?