我想从我的yaml中隐藏我的秘密凭证,我需要使用.env,那么如何从我的yaml中调用.env文件,以便每次我调用这个YAML,YAML都会自动调用.env文件。请帮我。谢谢
我们可以使用 Helmet.js 和 body-parser 等插件来保护无服务器功能吗?如果我们不能,我们如何将这些功能实现到我们的无服务器功能中?
我目前正在尝试使用 API Gateway + Lambda 上的无服务器框架来实现 Express 应用程序。一切都按预期进行,直到我开始在我们这边引入请求签名。签名的工作方式是使用秘密令牌对包含查询字符串的完整 URL 进行签名。不幸的是,API Gateway 或 Cloudfront 似乎都按字母顺序重新排序查询字符串,这导致我们这边生成的校验和与客户端生成的校验和不同。
我们的 Express 服务器看到的内容:
https://example.com/endpoint?build_number=1&platform=ios
客户发送的内容:
https://example.com/endpoint?platform=ios &build_number=1
正如您所看到的,查询参数按字母顺序重新排序,这不是我所期望的行为。
任何想法?
node.js express aws-lambda aws-api-gateway serverless-framework
使用无服务器框架时,我在尝试为 lambda 的 S3 存储桶分配权限时遇到困难。
我有一个 lamba 函数,最终将 JSON 配置文件写入 S3 存储桶,我希望通过网络将其提供给应用程序。我最初单独设置了一个 S3 存储桶(不在 中serverless.yml),并且我的amba成功地在正确的 S3 存储桶中创建了文件,但当我将其部署到 AWS 时,出现“内部服务器错误”。我认为这是因为部署时设置的权限未授予它对存储桶的写入权限。
我有点不同意如何做到这一点。我已阅读此主题,例如,并尝试用serverless.yml以下内容补充我的内容:
provider:
name: aws
runtime: nodejs8.10
stage: dev
region: eu-west-1
iamRoleStatements:
- Effect: "Allow"
Action:
- "s3:PutObject"
Resource:
Fn::Join:
- ""
- - "arn:aws:s3:::"
- Ref: arn:aws:s3:::com.joostschuur.quizdata
Run Code Online (Sandbox Code Playgroud)
在本例中,arn:aws:s3:::com.joostschuur.quizdata是我设置的手动创建的 S3 存储桶,并且希望我部署的 lambda 具有写入权限。但是,这会导致部署错误:
CloudFormation 模板无效:模板格式错误:模板的资源块中未解析的资源依赖项 [arn:aws:s3:::com.joostschuur.quizdata]
如果有一种方法可以将所有 S3 设置放入 serverless.yml 中(即指定存储桶,指定其中的文件应可通过网络访问等),我也很乐意这样做。
建议?
amazon-s3 amazon-web-services aws-lambda serverless-framework
我正在尝试设置一个新的存储库,但不断收到错误消息
The CloudFormation template is invalid: Template error: instance of Fn::GetAtt
references undefined resource uatLambdaRole
Run Code Online (Sandbox Code Playgroud)
在我的 uat 阶段,但是具有完全相同格式的开发阶段工作正常。
我为每个环境都有一个资源文件。
开发者
devLambdaRole:
Type: AWS::IAM::Role
Properties:
RoleName: dev-lambda-role # The name of the role to be created in aws
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AWSLambdaFullAccess
#Documentation states the below policy is included automatically when you add VPC configuration but it is currently bugged.
- arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole
Run Code Online (Sandbox Code Playgroud)
乌特
uatLambdaRole:
Type: AWS::IAM::Role
Properties:
RoleName: uat-lambda-role …Run Code Online (Sandbox Code Playgroud) 我正在使用 aws-node 模板。我想做这样的事情:
sls deploy URL='https://postman-echo.com/post'
Run Code Online (Sandbox Code Playgroud)
其中URL是环境变量。我正在尝试将此环境变量传递给我的serverless.yml
provider:
name: aws
runtime: nodejs8.10
stage: dev
region: us-west-2
environment:
URL: ${env:URL}
Run Code Online (Sandbox Code Playgroud)
然后在我的handler.js中访问它
const axios = require('axios');
module.exports.hello = async (event, context) => {
console.log("Lambda invoked\n")
await axios.post(
process.env.URL // Accessing the environment variable.
).then(function (response) {
console.log(`Status: ${response.status}`)
})
.catch(function (error) {
console.log(`Error`)
console.error(error);
});
return {
statusCode: 200,
body: JSON.stringify({
message: 'Function executed successfully!',
input: event
}),
};
};
Run Code Online (Sandbox Code Playgroud)
我怀疑问题在于我如何将环境变量传递给程序,但我的研究没有结果。
environment-variables node.js aws-lambda serverless-framework
我正在使用无服务器框架来管理我的 AWS 资源。现在我想替换我的 cognito 用户池以更新别名、用户名属性等的配置。
我有: - 在 .yml 中更改了 cognito 用户池资源的配置 - 更改了 cognito 用户池名称和客户端名称
但是在部署时,我收到了错误:
Updates are not allowed for property - UserPoolName.
我预计这应该导致替换,而不是更新。
我错过了什么?谢谢。
AWS 新手在这里
我必须通过 gitlab CI 作为 lambda 托管我的 python 脚本,并通过 AWS 上的 cloudwatch 触发它。
我正在学习以下教程:
在第一个教程中,我只获取该.gitlab-ci.yml文件并将其添加到第二个教程中显示的教程中(但我选择 3.7 作为运行时而不是 python 3.6)
我有以下serverless.yml文件
service: numpy-test
provider:
name: aws
runtime: python3.7
functions:
numpy:
handler: handler.main
plugins:
- serverless-python-requirements
custom:
pythonRequirements:
dockerizePip: non-linux
package:
exclude:
- venv/**
Run Code Online (Sandbox Code Playgroud)
和以下.gitlab-ci.yml文件:
service: numpy-test
provider:
name: aws
runtime: python3.7
functions:
numpy:
handler: handler.main
plugins:
- serverless-python-requirements
custom:
pythonRequirements:
dockerizePip: non-linux
package:
exclude:
- venv/**
Run Code Online (Sandbox Code Playgroud)
当我推送.gitlab-ci.yml文件时,它运行没有任何错误。
我可以看到在我的 AWS lambda …
python amazon-web-services gitlab serverless-framework serverless
我一直在尝试和在线搜索,但无法找到回复。是否可以使用无服务器框架实现以下目标:
我想使用get.handler具有以下定义的代码来获取一个项目和获取所有项目。所以:
api.example.com/items/我检索所有项目api.example.com/items/1234我检索项目id = 1234 - get_items:
handler: project/items/get.handler
events:
- http:
path: items/{itemId}
method: get
Run Code Online (Sandbox Code Playgroud)
到目前为止,get.handler我检查event.pathParameters? event.pathParameters.itemId : null特定项目是否存在并调用某个getItem(itemdId)函数,如果它不存在,则调用一个getAll()函数。
如果我在它工作的路径中传递项目 id,但是当我发出请求时,api.example.com/items/我收到以下错误:
not a valid key=value pair (missing equal-sign) in Authorization header. 这意味着我的路径有问题,我必须将项目 ID 传递给路径参数。
我的问题是:有没有办法可以在该- http:区域使用多条路径,或者有什么推荐的方法可以解决这个问题(只需创建两个单独的处理程序)?
我的大部分基础设施都使用 Terraform,但同时我使用无服务器框架来定义一些 Lambda 函数。无服务器在幕后使用 CloudFormation,我需要访问 Terraform 创建的资源的一些 ARN。
我的想法是在 Terraform 中创建一个 CloudFormation 堆栈并导出我需要的所有值,但它抱怨说它无法在没有任何资源的情况下创建堆栈。我不想在 CloudFormation 中定义任何资源,只想定义输出,所以我虽然可能有一种方法可以定义一些虚拟资源,但我找不到任何资源。
有没有办法解决这个问题?如果没有,我也愿意接受将参数从 Terraform 传递到 CloudFormation 的其他建议。
amazon-web-services aws-cloudformation terraform serverless-framework