【发布时间】:2018-03-11 11:28:27
【问题描述】:
我正在尝试在由 AWS Lambda 创建的新 EC2 实例的 Userdata 字段中传递一个脚本(使用适用于 Javascript 的 AWS 开发工具包,Node.js 6.10):
...
var paramsEC2 = {
ImageId: 'ami-28c90151',
InstanceType: 't1.micro',
KeyName: 'myawesomekwy',
MinCount: 1,
MaxCount: 1,
SecurityGroups: [groupname],
UserData:'#!/bin/sh \n echo "Hello Lambda"'
};
// Create the instance
ec2.runInstances(paramsEC2, function(err, data) {
if (err) {
console.log("Could not create instance", err);
return;
}
var instanceId = data.Instances[0].InstanceId;
console.log("Created instance", instanceId);
// Add tags to the instance
params = {Resources: [instanceId], Tags: [
{
Key: 'Name',
Value: 'taggggg'
}
]};
ec2.createTags(params, function(err) {
console.log("Tagging instance", err ? "failure" : "success");
});
});
...
我尝试了几件事,例如: - 创建一个字符串并将字符串传递给 UserData - 不工作 - 创建一个字符串并将其编码为 base64 并将字符串传递给 UserData - 不工作 - 粘贴 base64 编码的字符串 - 不工作
您能帮我理解如何在 UserData 中传递脚本吗? AWS SDK 文档有点欠缺。
是否也可以将放在 S3 存储桶中的脚本传递给 UserData?
【问题讨论】:
-
重要的是定义“不工作”的含义。我们知道这是行不通的,但这给我们的余地很少。它以什么方式失败?
-
是的@Mark B 很抱歉没有更详细:它首先失败是因为 base64 编码..我发现它是必需的,而不是按照文档中的说明自动完成。其次,字符串的定义方式错误。使用多行字符串,现在一切正常。
标签: amazon-web-services amazon-ec2 aws-lambda aws-sdk aws-sdk-nodejs