Aws lambda 无错误堆栈名。每个项目一次性手动操作不是问题,我可能还会为生产创建一个单独的实例。但令人惊讶的是,使用CloudFormation如此困难。这是两天来我第三次尝试使用它来简化基础设施初始化,但最终放弃并退回到手动创建资源,并将其记录在自述文件和私有配置文件
Aws lambda 无错误堆栈名。每个项目一次性手动操作不是问题,我可能还会为生产创建一个单独的实例。但令人惊讶的是,使用CloudFormation如此困难。这是两天来我第三次尝试使用它来简化基础设施初始化,但最终放弃并退回到手动创建资源,并将其记录在自述文件和私有配置文件,aws-lambda,amazon-cloudformation,amazon-elasticache,serverless-framework,Aws Lambda,Amazon Cloudformation,Amazon Elasticache,Serverless Framework,无错误堆栈名。每个项目一次性手动操作不是问题,我可能还会为生产创建一个单独的实例。但令人惊讶的是,使用CloudFormation如此困难。这是两天来我第三次尝试使用它来简化基础设施初始化,但最终放弃并退回到手动创建资源,并将其记录在自述文件和私有配置文件中。只要我手动创建Elasticache集群,这对我来说应该就行了,并使用无服务器堆栈名称作为密钥名称的前缀。每个项目一次性手动操作不是问题,我可能还会为生产创建一个单独的实例。但令人惊讶的是,使用CloudFormation如此困难。这是两天
无错误堆栈名。每个项目一次性手动操作不是问题,我可能还会为生产创建一个单独的实例。但令人惊讶的是,使用CloudFormation如此困难。这是两天来我第三次尝试使用它来简化基础设施初始化,但最终放弃并退回到手动创建资源,并将其记录在自述文件和私有配置文件中。只要我手动创建Elasticache集群,这对我来说应该就行了,并使用无服务器堆栈名称作为密钥名称的前缀。每个项目一次性手动操作不是问题,我可能还会为生产创建一个单独的实例。但令人惊讶的是,使用CloudFormation如此困难。这是两天来我第三次尝试使用它来简化基础架构初始化,结果放弃并退回到手动创建资源,并将它们记录在自述文件和私有配置文件中。
"Resources": {
...snip...
"Redis": {
"Type": "AWS::ElastiCache::CacheCluster",
"Properties": {
"AutoMinorVersionUpgrade": "true",
"AZMode": "single-az",
"CacheNodeType": "cache.t2.micro",
"Engine": "redis",
"EngineVersion": "2.8.24",
"NumCacheNodes": "1",
"PreferredAvailabilityZone": "eu-west-1a",
"PreferredMaintenanceWindow": "tue:00:30-tue:01:30",
"CacheSubnetGroupName": {
"Ref": "cachesubnetdefault"
},
"VpcSecurityGroupIds": [
{
"Fn::GetAtt": [
"sgdefault",
"GroupId"
]
}
]
}
}
},
"Outputs": {
"IamRoleArnLambda": {
"Description": "ARN of the lambda IAM role",
"Value": {
"Fn::GetAtt": [
"IamRoleLambda",
"Arn"
]
}
},
"RedisEndpointAddress": {
"Description": "Redis server host",
"Value": {
"Fn::GetAtt": [
"Redis",
"Address"
]
}
}
}
{
"redisUrl": "...",
"redisPort": "...",
"redisPass": "..."
}
"environment": {
"REDIS_URL": "${redisUrl}",
"REDIS_PORT": "${redisPort}",
"REDIS_PASS": "${redisPass}"
}
module.exports = () => {
const redis = require('redis')
const jsonify = require('redis-jsonify')
const redisOptions = {
host: process.env.REDIS_URL,
port: process.env.REDIS_PORT,
password: process.env.REDIS_PASS
}
return jsonify(redis.createClient(redisOptions))
}
redis = require('../lib/redis')()
"Outputs": {
"redisHost": {
"Description": "Redis host URI",
"Value": {
"Fn::GetAtt": [
"RedisCluster",
"RedisEndpoint.Address"
]
}
}
}
"environment": {
"REDIS_HOST": "${redisHost}"
},
exports.handler = function(event, context) {
console.log("Redis host: ", process.env.REDIS_HOST);
};
// Require Serverless ENV vars
var ServerlessHelpers = require('serverless-helpers-js');
ServerlessHelpers.loadEnv();
// Require Logic
var lib = require('../lib');
// Lambda Handler
module.exports.handler = function(event, context) {
ServerlessHelpers.CF.loadVars()
.then(function() {
lib.respond(event, function(error, response) {
return context.done(error, response);
});
})
};