我的插件有问题serverless-offline。我希望它只能在本地开发(开发阶段)时访问,而不能在任何其他阶段访问
我的serverless.yml看起来像这样:
service: foo
provider:
# ...
stage: dev
plugins:
- serverless-offline
custom:
stage: "${opt:stage, self:provider.stage}"
# ...
Run Code Online (Sandbox Code Playgroud)
它工作正常(在我的本地计算机上)
我尝试过这个解决方案(将插件作为自定义变量传递),但它不起作用
service: foo
provider:
# ...
stage: dev
custom:
stage: "${opt:stage, self:provider.stage}"
plugins:
dev:
- serverless-offline
# ...
plugins: ${self:custom.plugins.${self:custom.stage}}
Run Code Online (Sandbox Code Playgroud)
运行时sls offline start它给我一个错误Serverless command "offline" not found
我已将 serverless-offline 包含为devDependencies(package.json) - 在生产中,当插件包含在 serverless.yml 中时,它会给出错误Serverless command "offline" not found
如何解决这种问题(现在我必须在部署之前将其注释掉)?
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("Hello");
}
}
Thread thread1 = new Thread(runnable);
thread1.start();
Thread thread2 = new Thread(runnable);
thread2.start();
Thread thread3 = new Thread(runnable);
thread3.start();
Thread thread4 = new Thread(runnable);
thread4.start();
}}
Run Code Online (Sandbox Code Playgroud)
我已经正常尝试过,效果很好。但在 lambda 函数上,它将无法正常工作。线程在线程完全执行之前死亡。当调用 return 语句时,它会自动停止线程。
Expected result
Hello
Hello
Hello
Hello
Actual Result
Hello
Run Code Online (Sandbox Code Playgroud) java multithreading amazon-web-services aws-lambda serverless
我正在尝试使用无服务器和 DynamoDB 组合一个非常简单的 AWS Lambda。
我创建项目的代码是:
dynamoDb: DocumentClient
constructor() {
this.dynamoDb = new DynamoDB.DocumentClient({region: 'us-east-1'})
}
saveFiles(files: File[]): Promise<boolean> {
return new Promise<boolean>((resolve, reject ) => {
files.forEach(file => {
const tableName = process.env.DYNAMODB_TABLE
this.dynamoDb.put({
TableName: tableName,
Item: {
downloaded: {N : `${file.downloaded ? 1 : 0}`},
location: {S: `${file.location}`}
}
}, (error, result) => {
if (!!error) {
reject(error)
return
}
console.debug(`DB Save result: ${JSON.stringify(result)}`)
resolve(true)
})
})
})
}
Run Code Online (Sandbox Code Playgroud)
错误是:
handler.ts:41
code:"ResourceNotFoundException"
message:"Requested resource not found"
name:"ResourceNotFoundException"
requestId:"2ST4DCE3NJ85UE32OAD6PUMTBJVV4KQNSO5AEMVJF66Q9ASUAAJG" …Run Code Online (Sandbox Code Playgroud) javascript amazon-web-services node.js amazon-dynamodb serverless
我正在阅读这篇 Medium 文章https://medium.com/@awesome1888/how-to-use-serverless-locally-with-webpack-and-docker-5e268f71715,其中一个项目设置了这些依赖项,
$ npm install serverless serverless-offline serverless-webpack webpack webpack-node-externals babel-loader @babel/core @babel/preset-env @babel/plugin-proposal-object-rest-spread --save-dev
Run Code Online (Sandbox Code Playgroud)
这个serverless.yml文件,
service: my-first-lambda
# enable required plugins, in order to make what we want
plugins:
- serverless-webpack
- serverless-offline
# serverless supports different cloud environments to run at.
# we will be deploying and running this project at AWS cloud with Node v8.10 environment
provider:
name: aws
runtime: nodejs8.10
region: eu-central-1
stage: dev
# here we describe our lambda function …Run Code Online (Sandbox Code Playgroud) 我正在尝试遵循此示例,https://www.apollographql.com/docs/apollo-server/deployment/lambda/创建一个无服务器 GraphQL 服务器,该服务器返回“Hello world”。
根目录基本上只包含两个文件,graphql.js以及serverless.yml:
> tree . -I node_modules
.
??? graphql.js
??? package-lock.json
??? package.json
??? serverless.yml
Run Code Online (Sandbox Code Playgroud)
其中,如示例中所示,graphql.js读取
const { ApolloServer, gql } = require('apollo-server-lambda');
const typeDefs = gql`
type Query {
hello: String
}
`;
const resolvers = {
Query: {
hello: () => 'Hello world!',
},
}
const server = new ApolloServer({ typeDefs, resolvers });
exports.graphqlHandler = server.createHandler();
Run Code Online (Sandbox Code Playgroud)
并serverless.yml阅读
service: apollo-lambda
provider:
name: aws
runtime: nodejs8.10 …Run Code Online (Sandbox Code Playgroud) 原始问题:如何从 SAM Cloud-formation 中的 AWS APIGateway 域名中获取区域域名
编辑:我改变了这个问题,希望能获得更多流量到这个答案,因为它回答了几个问题,而不仅仅是我原来的问题。
当我尝试部署我的堆栈时出现以下错误:
resource DomainName does not support attribute type regionalDomainName in Fn::GetAtt
我的 yml 文件如下所示:
PublicApi:
Type: AWS::Serverless::Api
Properties:
Name: PublicApi
...
EndpointConfiguration: REGIONAL
DomainName:
Type: AWS::ApiGateway::DomainName
Properties:
RegionalCertificateArn: "arn:aws:acm:${Region}:XXXXXXXXXXX:certificate/XXXXXXXXXXXXX"
DomainName: !Sub ${Stage}.${name}
EndpointConfiguration:
Types:
- REGIONAL
myDNSRecord:
Type: AWS::Route53::RecordSet
Properties:
HostedZoneId : Z1UJRXOUMOOFQ8
Name: !Sub ${Stage}.${name}
AliasTarget:
HostedZoneId: Z1UJRXOUMOOFQ8
DNSName: !GetAtt DomainName.regionalDomainName
Type: A
UrlMapping:
Type: AWS::ApiGateway::BasePathMapping
DependsOn:
- PublicApi
Properties:
DomainName: !Ref DomainName
RestApiId: !Ref PublicApi
Stage: !Ref Stage
Run Code Online (Sandbox Code Playgroud)
以下内容来自域名文档 …
yaml amazon-web-services aws-cloudformation serverless aws-sam
我需要使用无服务器和密钥将 AWS lambda 函数部署到文件中的环境变量中。我不想使用 AWS 机密/系统管理器。如何在 serverless.yml 文件中隐藏环境变量?
当我手动上传和部署我的 nodejs AWS lambda 函数时,它能够从环境变量中读取数据并运行。我想使用无服务器而不是手动部署来处理这个问题。
我的无服务器 yml 文件如下:
service: sample-lambda
provider:
name: aws
runtime: nodejs10.x
stage: dev
region: us-east-2
apiName: getData
profile: MYAWS
timeout: 300
memorySize: 512
functions:
getData:
handler: handler.getData
name: getData
description: API to get data from server
environment:
key1: 12345
key2: abcdef
server: sample
events:
- http:
path: getData
method: post
cors: true
Run Code Online (Sandbox Code Playgroud) 我有多个无服务器应用程序我使用无服务器离线插件在本地运行它
我正在设置端口
custom:
serverless-offline:
httpPort: 4000
Run Code Online (Sandbox Code Playgroud)
另一个无服务器
custom:
serverless-offline:
httpPort: 3000
Run Code Online (Sandbox Code Playgroud)
在任何时候,我只能运行其他节目的一项服务:
在端口 3002 上启动无服务器离线 lambda 服务器时出现意外错误:{ 错误:侦听 EADDRINUSE:地址已在使用中
但我没有在任何地方使用 3002 但它显示 3002
这是什么错误?
127.0.0.1:3002
我的 AWS lambda 项目具有以下结构:
module
app.py
b.py
Run Code Online (Sandbox Code Playgroud)
app.py是我的默认 aws lambda 函数lambda_handler,它工作正常。我决定将所有繁重的计算从它中提取出来以calc实现b.py.
然后,我将它导入到app.py:
from module.b import calc
Run Code Online (Sandbox Code Playgroud)
现在,当我在本地运行它时sam local invoke Function --event events/event.json,它会引发一个错误:
{"errorType":"Runtime.ImportModuleError","errorMessage":"无法导入模块'app':没有名为'module'的模块"}
在我看来,当它准备运行代码时,它将文件移动到其他目录,因此导入中断。为了解决这个问题,我尝试使用相对导入:
from .b import calc
Run Code Online (Sandbox Code Playgroud)
但它也引发了一个错误:
{"errorType":"Runtime.ImportModuleError","errorMessage":"无法导入模块'app':尝试相对导入,没有已知的父包"}
如何在 aws lambda 上设置多文件 python 应用程序?
我对 AWS 的无服务器部署有疑问。我对它相当陌生,所以我不确定问题是什么。
我在网上找到了一些解决方案,但都没有奏效,因此任何想法都会被极大地接受。我也知道这里有一个非常相似的问题,但该解决方案不起作用,在询问更多细节后没有人回答,所以我提出了一个新问题。请帮忙!
Error: Unknown object type "asyncfunction"
at Object._object (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:218:17)
at Object._function (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:319:14)
at Object.dispatch (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:185:30)
at /Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:246:18
at Array.forEach (<anonymous>)
at Object._object (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:242:21)
at Object._function (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:319:14)
at Object.dispatch (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:185:30)
at /Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:246:18
at Array.forEach (<anonymous>)
at Object._object (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:242:21)
at Object.dispatch (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:185:30)
at /Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:246:18
at Array.forEach (<anonymous>)
at Object._object (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:242:21)
at Object.dispatch (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:185:30)
at /Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:246:18
at Array.forEach (<anonymous>)
at Object._object (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:242:21)
at Object.dispatch (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:185:30)
at /Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:246:18
at Array.forEach (<anonymous>)
at Object._object (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:242:21)
at Object.dispatch (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:185:30)
at /Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:246:18
at Array.forEach …Run Code Online (Sandbox Code Playgroud) serverless ×10
aws-lambda ×3
node.js ×3
javascript ×2
apollo ×1
aws-sam ×1
graphql ×1
java ×1
lambda ×1
python ×1
webpack ×1
yaml ×1