这是我的 serverless.yml 文件中的一个片段:
Resources:
LogGroupInfo:
Type: 'AWS::Logs::LogGroup'
Properties:
RetentionInDays: 3
FirehoseInstance:
Properties:
DeliveryStreamName: ${opt:stage}-analytics
DeliveryStreamType: DirectPut
RedshiftDestinationConfiguration:
CloudWatchLoggingOptions:
Enabled: true
LogGroupName: !Ref LogGroupInfo
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误:
unknown tag !<!Ref> in "/Users/code/Project1/serverless.yml" at line 56, column 42:
... LogGroupName: !Ref LogGroupInfo
Run Code Online (Sandbox Code Playgroud)
当在 cloudformation 中用于创建堆栈时,此模板运行良好。为什么 !Ref 被 serverless.yml 拒绝?
我的设置-AWS Lambda,AWS Dynamo DB,nodejs和无服务器。
我正在从某些API获取JSON对象数组,并尝试将其插入我的Dynamo DB中。到目前为止,我唯一的解决方案是遍历数组,并对每个对象进行DocumentClient()PUT调用。
我的数据大约有1000个对象,并且写入吞吐量设置为1。因此,即使在插入约300条记录并出现此错误后,该解决方案也对我失败-The level of configured provisioned throughput for the table was exceeded.
可以在单个查询中完成吗?
我正在使用无服务器来部署 AWS CloudFormation 模板和一些功能,这是我的 serverless.yml 文件的一部分:
resources:
Resources:
MyUserPool: #An inline comment
Type: "AWS::Cognito::UserPool"
Properties:
UserPoolName: "MyUserPool"
Policies:
PasswordPolicy:
MinimumLength: 7
RequireLowercase: false
RequireNumbers: true
RequireSymbols: false
RequireUppercase: false
functions:
preSignUp:
handler: presignup.validate
events:
- cognitoUserPool:
pool: "MyUserPool"
trigger: PreSignUp
Run Code Online (Sandbox Code Playgroud)
如您所见,两个用户池名称相同,但是当我运行无服务器部署时,会创建 2 个具有相同名称的用户池。
这是一个错误还是我错过了什么?
amazon-web-services aws-cloudformation serverless-framework serverless
我正在使用 dynamoDb 作为我的数据库为我当前的应用程序构建一个无服务器后端。我使用 aws sam 将我的 lambda 函数上传到 aws。此外,我将所有表名作为全局变量传递给 lambda(nodejs8.10 运行时),以便process.env在我的 lambda 函数内的对象上访问它们。我面临的问题如下:每当我batchGetItem在 dynamoDB 上运行该方法时,我必须传递一个字符串作为我的表名,我无法根据全局变量动态更改表名:
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({region: 'ap-south-1'}, {apiVersion:'2012-08-10'});
const params = {
RequestItems: {
//needs to be a string, cannot be a variable containing a string
'tableName': {
Keys: [] //array of keys
}
}
}
dynamodb.batchGetItem(params, (err, result) => {
// some logic
})
Run Code Online (Sandbox Code Playgroud)
我需要将表名作为字符串传递,本质上是将表名硬编码到我的函数中。其他 DynamoDB 操作(例如getItem方法)接受参数对象中表名的键值对:
const tableName = process.env.TableName;
const getItemParams = { …Run Code Online (Sandbox Code Playgroud) 我已将 Word2Vec 模型保存到二进制文件中。我正在尝试将其加载到改编自此博客的无服务器 API 中,并以此为基础。
这在本地工作正常:
self.model = KeyedVectors.load_word2vec_format('./models/models.bin', binary=True)
Run Code Online (Sandbox Code Playgroud)
但是当从 S3 调用文件时,它会出错:
'IOError: [Errno 2] 没有那个文件或目录:'46659 100\n,|PUNCT \xec>\xd8>\xaf\xa8\x95'
def load_model(key):
response = S3.get_object(Bucket=BUCKET_NAME, Key=key)
model_str = response['Body'].read()
model = KeyedVectors.load_word2vec_format(model_str, binary=True)
return model
Run Code Online (Sandbox Code Playgroud) 我正在使用 lambda 函数开发小服务,该函数在您的 CLI 中使用curl.
首先,我开发了业务逻辑,使用 Serverless 部署和创建了 lambda。
其次,我使用 aws route 53 购买了域,使用 API 网关上的“自定义域名”配置了证书和路由域。
目前,如果您访问https://domain.io服务按预期工作,但如果您尝试调用curl domain.io它的输出:
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>CloudFront</center>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的目标是通过调用curl domain.io.
是否可以避免重定向?或者你可以在custom domain name没有证书的情况下创建 API吗?
目前我称之为curl -F domain.io将遵循重定向,但这不是我正在寻找的解决方案。
谢谢!
amazon-web-services amazon-route53 aws-api-gateway serverless
我尝试在我的无服务器 aws lambda 中应用 dynamodb。我的文件是这样的:
resources:
Resources:
StoreDynamoDbTable:
Type: 'AWS::DynamoDB::Table'
DeletionPolicy: Retain
Properties:
AttributeDefinitions:
- AttributeName: id
AttributeType: S
- AttributeName: lat
AttributeType: N
- AttributeName: lng
AttributeType: N
KeySchema:
- AttributeName: id
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
TableName: ${self:provider.environment.TableStore}
Run Code Online (Sandbox Code Playgroud)
我尝试应用 lat 和 lng 作为 storeTable 的属性,只是属性不是 key Schema,但每个 store 元素都应该具有这些属性。
但是有错误:
发生错误:StoreDynamoDbTable - Property AttributeDefinitions 与表的 KeySchema 和二级索引不一致。
如何使 lat 和 lng 只是桅杆属性,而不是索引的关键元素?
我不确定我的权限是否正确,但我试图listObjectsV2在我的 lambda 函数中使用,但我得到access denied error. 我正在使用无服务器。
这是我的 iAMRoleStatement
iamRoleStatements:
- Effect: "Allow"
Action:
- s3:GetObject
- s3:ListBucket
Resource:
- "arn:aws:s3:::${self:custom.bucket1}/*"
- "arn:aws:s3:::${self:custom.bucket2}/*"
Run Code Online (Sandbox Code Playgroud)
它给了我这样的回应:
{
"errorMessage": "Access Denied",
"errorType": "AccessDenied",
"stackTrace": [
"Request.extractError (/var/runtime/node_modules/aws-sdk/lib/services/s3.js:577:35)",
"Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105:20)",
"Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:77:10)",
"Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:683:14)",
"Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)",
"AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)",
"/var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10",
"Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)",
"Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:685:12)",
"Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:115:18)"
]
}
Run Code Online (Sandbox Code Playgroud)
这是功能
const AWS = require('aws-sdk')
const apiVersion = '2006-03-01'
module.exports.index = async (event, context) => {
const s3 = new AWS.S3({ apiVersion })
const …Run Code Online (Sandbox Code Playgroud) amazon-s3 amazon-web-services amazon-iam aws-lambda serverless
这个问题已经让我发疯了两天了。
目标:通过 AWS Javascript SDK 中的 getSignedUrl 函数提供的预签名 URL,将图像直接从浏览器上传到 S3。
我在使用 getSignedUrl 生成 URL 时没有遇到任何问题。下面的代码...
const params = {
Key: key,
Bucket: process.env.S3_BUCKET,
ContentType: "image/jpeg"
};
S3.getSignedUrl("putObject", params, callback);
Run Code Online (Sandbox Code Playgroud)
...产生类似:
https://s3.amazonaws.com/foobar-bucket/someImage.jpeg?AWSAccessKeyId=ACCESSKEY123&Content-Type=image%2Fjpeg&Expires=1543357053&Signature=3fgjyj7gpJiQvbIGhqWXSY40JUU%3D&x-amz-acl=private&x-amz-security-token=FQoGZXIvYXdzEDYaDPzeqKMbfgetCcZBaCL0AWftL%2BIT%2BP3tqTDVtNU1G8eC9sjl9unhwknrYvnEcrztfR9%2FO9AGD6VDiDDKfTQ9SmQpfXmiyTKDwAcevTwxeRnj6hGwnHgvzFVBzoslrB8MxrxjUpiI7NQW3oRMunbLskZ4LgvQYs8Rh%2FDjat4H%2F%2BvfPxDSQUSa41%2BFKcoySUHGh2xqfBFGCkHlIqVgk1KELDHmTaNckkvc9B4cgEXmAd3u1f1KC9mbobYcLLRPIzMj9bLJH%2BIlINylzubao1pCQ7m%2BWdX5xAZDhTSNwQfo4ywSWV7kUpbq2dgEriOiKAReEjmFQtuGqYBi3t2dhrasptOlXFXUozdz23wU%3D
但是通过 PUT 请求将图像上传到提供的 URL 总是会403 SignatureDoesNotMatch从 S3返回错误。
有什么作用:
什么不起作用:
aws-sdk节点中的区域对此问题的任何帮助将不胜感激。如果这仍然是一个问题,我将把我的电脑扔出窗外,然后沮丧地跳出去,因为它根本不想工作!
因此,我一直在尝试使用无服务器后端(即Aurora MySQL)设置BI工具。
架构如下:
在这些行上的实现:tutorial-link
现在,我正在探索用于将此后端与BI / Analytics工具连接以实现快速查询和可视化目的的选项。
由于我们的后端是Aurora MySQL Serverless,因此其局限性在于无法像使用预配置的终端那样直接连接到终结点。
如此处所述:https : //docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html
同样,我正在尝试设置一个AWS Direct Connect,目前处于请求阶段:
无论这是正确的方法,我都需要帮助,如果是,是否有任何将Direct Connect与Aurora Serverless一起使用的教程?
另一方面,是否有任何双工具成功地用于无服务器后端。
需要的是能够在最短的时间内启动并运行,以进行快速推断。然后转到ETL或更复杂的用例。
任何帮助,不胜感激!
谢谢,Arnab
devops amazon-aurora amazon-quicksight serverless aws-aurora-serverless
serverless ×10
aws-lambda ×4
amazon-s3 ×3
node.js ×2
amazon-iam ×1
devops ×1
gensim ×1
python ×1