使用无服务器框架v1.0.0,我的服务根目录中有一个'requirements.txt',内容是依赖python包的列表.(例如请求).
但是,由于看起来这些依赖项未作为打包的一部分安装,因此我的部署函数失败了
'无法导入模块'处理程序':没有名为requests的模块'
我认为它是无服务器的pip安装,但我的结果zip文件很小,很明显它没有这样做,无论是设计还是我的错,因为我错过了什么?是因为它的Lambda这样做了吗?如果是这样,我错过了什么?)
是否有文件说明了执行此操作所需的内容及其工作原理?是pip安装这些还是在aws lambda端无服务器?
感谢谢谢!
我想为serverless.yml中列出的不同功能分配不同的权限
functions:
hello:
handler: handler.hello
crawl-distributor:
handler: CrawlDistributor.handler
product-scanner:
handler: ProductScanner.handler
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:*
- lambda:*
Resource: "*"
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.当我在提供程序级别添加iamRoleStatements时,它可以工作,但最终会将权限应用于所有函数.
provider:
name: aws
runtime: nodejs4.3
stage: api
region: us-east-1
profile: dev
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:*
- lambda:*
Resource: "*"
Run Code Online (Sandbox Code Playgroud) 我想知道serverless.yml在无服务器框架的部署过程中是否可以利用创建存储桶并向其添加特定文件.
到目前为止,我已经能够添加创建存储桶的S3资源,但不知道如何添加特定文件.
resources:
Resources:
UploadBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: ${self:custom.s3.bucket}
AccessControl: Private
CorsConfiguration:
CorsRules:
- AllowedMethods:
- GET
- PUT
- POST
- HEAD
AllowedOrigins:
- "*"
AllowedHeaders:
- "*"
Run Code Online (Sandbox Code Playgroud)
不确定是否可能,或者serverless.yml在部署过程中如何利用上传默认文件(如果还没有).
amazon-s3 aws-cloudformation aws-lambda serverless-framework
我需要使用AWS elasticsearch服务,但也希望自动化它.我们有无服务器配置.我们如何使用serverless.yml创建AWS elasticsearch服务?
我有一个如下所示的请求:
package pricing
import scala.beans.BeanProperty
class Request(@BeanProperty var name: String, @BeanProperty var surname: String) {
def this() = this(name="defName", surname="defSurname")
}
Run Code Online (Sandbox Code Playgroud)
处理程序如下:
package pricing
import com.amazonaws.services.lambda.runtime.{Context, RequestHandler}
import scala.collection.JavaConverters
import spray.json._
class ApiGatewayHandler extends RequestHandler[Request, ApiGatewayResponse] {
import DefaultJsonProtocol._
def handleRequest(input: Request, context: Context): ApiGatewayResponse = {
val headers = Map("x-foo" -> "coucou")
val msg = "Hello " + input.name
val message = Map[String, String]("message" -> msg )
ApiGatewayResponse(
200,
message.toJson.toString(),
JavaConverters.mapAsJavaMap[String, Object](headers),
true
)
}
}
Run Code Online (Sandbox Code Playgroud)
已被记录为:
functions:
pricing: …Run Code Online (Sandbox Code Playgroud) 无服务器框架配置允许:
deploymentBucket:
name: foo
Run Code Online (Sandbox Code Playgroud)
但是,它始终serverless在foo存储桶内创建对象键.我希望能够部署到不同的密钥,如BAR.
deploymentBucket:
name: foo/BAR # illustration only, doesn't work
Run Code Online (Sandbox Code Playgroud)
我有什么选择?
amazon-s3 amazon-web-services aws-lambda serverless-framework
我正在尝试在AWS上创建一个多区域无服务器应用程序.我按照这里给出的说明进行操作.我正在使用无服务器框架,它使用Cloudformation脚本在AWS上创建所有资源.
我想为API网关创建一个自定义域作为区域端点.创建区域端点时,它会生成目标域.我想知道如何在Cloudformation脚本中获取目标域的值?
当我创建Edge优化端点时,我使用该DistributionDomainName属性获取CloudFront部署的值.但是,在创建区域端点时,我没有看到目标域名的任何属性.我尝试使用DistributionDomainName区域端点的属性,但它会抛出一个错误,表示没有DistributionDomainName.
以下是我脚本的一部分 -
# Creates a custom domain for the ApiGateway
customDomain:
Type: 'AWS::ApiGateway::DomainName'
Properties:
DomainName: ${self:custom.domain}
EndpointConfiguration:
Types:
- REGIONAL
RegionalCertificateArn: ${self:custom.certificateArn}
# Insert a DNS record in route53 hosted zone to redirect from the custom domain to CF distribution
dnsRecord:
Type: AWS::Route53::RecordSet
Properties:
Region: ${self:provider.region}
SetIdentifier: ${self:provider.region}
HostedZoneId: ${self:custom.hostedZoneId}
Name: ${self:custom.domain}
Type: CNAME
TTL: 60
ResourceRecords:
- "Fn::GetAtt": [customDomain, DistributionDomainName]
Run Code Online (Sandbox Code Playgroud)
请帮忙.谢谢!
UPDATE
Cloudformation现在通过RegionalDomainName属性返回区域域名.它可以用作Fn:GetAtt : [customDomain, …
regional amazon-web-services aws-cloudformation aws-api-gateway serverless-framework
我有一个使用私有Git(在Github上)repo上的Python无服务器项目.
Requirements.txt文件如下所示:
itsdangerous==0.24
boto3>=1.7
git+ssh://git@github.com/company/repo.git#egg=my_alias
Run Code Online (Sandbox Code Playgroud)
项目的配置主要是这样的
plugins:
- serverless-python-requirements
- serverless-wsgi
custom:
wsgi:
app: app.app
packRequirements: false
pythonRequirements:
dockerizePip: true
dockerSsh: true
Run Code Online (Sandbox Code Playgroud)
当我使用此命令进行部署时:
sls deploy --aws-profile my_id --stage dev --region eu-west-1
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Command "git clone -q ssh://git@github.com/company/repo.git /tmp/pip-install-a0_8bh5a/my_alias" failed with error code 128 in None
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我怀疑我为Github访问配置SSH密钥的方式或无服务器包的配置.
我正在使用 VS Code 开发 AWS Lambda 函数,我开始使用无服务器框架和无服务器离线库,但是,我无法使用 VS Code 的调试模式在本地调试代码。
我指的是许多网站,以下是其中之一: https://medium.com/@OneMuppet_/debugging-lambada-functions-locally-in-vscode-with-actual-break-points-deee6235f590
我的项目结构如下:
Package.json:
launch.json:
当我开始调试时出现以下错误:
有人可以指导一下正确的配置吗?
javascript node.js visual-studio-code serverless-framework serverless-offline
我正在尝试使用无服务器建立一个工作流程,该工作流程创建一个新的 S3 存储桶、一个新的 SQS 队列,当在 S3 存储桶中创建一个对象时,将消息放入队列中,并在队列上有足够的消息时启动 lambda队列。我的资源块中有以下内容:
resources:
Resources:
AnalyticsQueue:
Type: "AWS::SQS::Queue"
Properties:
QueueName: "my-queue"
S3EventQueuePolicy:
Type: AWS::SQS::QueuePolicy
DependsOn: AnalyticsQueue
Properties:
PolicyDocument:
Id: SQSPolicy
Statement:
- Effect: Allow
Action: sqs:SendMessage:*
Resource: !Ref AnalyticsQueue
Queues:
- !GetAtt AnalyticsQueue.Arn
AnalyticsBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: "my-bucket"
NotificationConfiguration:
QueueConfigurations:
- Event: s3:ObjectCreated:*
Queue: !GetAtt AnalyticsQueue.Arn
Run Code Online (Sandbox Code Playgroud)
当我尝试部署它时,我收到以下错误:
发生错误:AnalyticsBucket - 无法验证以下目标配置(服务:Amazon S3;状态代码:400;错误代码:InvalidArgument;请求 ID:E2A1F8BD6BEE6EF4;)。
经过一番谷歌搜索,我发现问题出NotificationConfiguration在AnalyticsBucket. 如果我删除整个子块,它部署得很好,但显然在创建对象时不会在队列上生成消息。
正在寻找解决这个问题的方法。
amazon-s3 amazon-sqs aws-cloudformation serverless-framework
aws-lambda ×5
amazon-s3 ×3
amazon-iam ×1
amazon-sqs ×1
java ×1
javascript ×1
node.js ×1
pip ×1
python ×1
regional ×1
scala ×1
serverless ×1