DynamoDB 的Number类型支持 38 位十进制精度。这不足以存储需要 39 位数字的 128 位整数。最大值为 340,282,366,920,938,463,463,374,607,431,768,211,455 为 unsigned 128 位整数或 170,141,183,460,469,231,731,861,730,861,730,861,730,861,861,861,873 这些都是 39 位数字。
如果我不能存储128位,那么有多少整型数据位可我在商店Number?
这是使用内联编辑器的 node.js 代码:
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
console.log('Loading function');
exports.handler = async (event) => {
// TODO implement
var responseMsg = '';
var bucket = '';
var key = '';
if ('Records' in event) {
var s3Data = event.Records[0].s3;
console.log('s3Data: ' + JSON.stringify(s3Data));
bucket = s3Data.bucket.name;
key = s3Data.object.key;
}
console.log('Bucket:' + bucket);
console.log('Key:' + key);
var params = {
Bucket: bucket,
Key: key
};
console.log('Params:' + JSON.stringify(params));
s3.getObject(params, function (err, data) {
console.log('getObject');
if …Run Code Online (Sandbox Code Playgroud) 我正在实现一个 Web 应用程序,它调用 lambda 函数从数据库中获取数据。
我选择了 Serverless Aurora 并编写了代码,但"Error: Received packet in the wrong sequence."在查询方法中出现异常。
我用谷歌搜索了这个问题,但几乎所有问题都太旧了。
一篇文章说是的问题,browisify但我不使用它。
我正在使用带有打字稿的无服务器框架。
const mysql = require('serverless-mysql')({
config: {
host: process.env.DB_HOST,
database: process.env.DB_NAME,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD
}
});
export async function query(sql: string, param?: Array<string>): Promise<any> {
const results = await mysql.query(sql).catch(e => {
console.log(e); // Error: Received packet in the wrong sequence
throw new Error(e);
});
await mysql.end();
return results;
}
Run Code Online (Sandbox Code Playgroud)
以下也不起作用
export async function query(sql: string, param?: Array<string>): …Run Code Online (Sandbox Code Playgroud) 我以前使用多合一的aws-sdknpm 模块 ( https://www.npmjs.com/package/aws-sdk ) 来调用 AWS Lambda 函数,为此,以下代码运行良好:
//Some code to get "credentials"
...
const AWS = require('aws-sdk');
const lambda = new AWS.Lambda({
accessKeyId: credentials.accessKeyId,
secretAccessKey: credentials.secretAccessKey,
region: Config.REGION
});
lambda.invoke(pullParams, (err, data) =>
//I would do something with data
);
...
Run Code Online (Sandbox Code Playgroud)
现在,从https://github.com/aws/aws-sdk-js-v3得到提示,我希望使用模块化@aws-sdk/client-lambda-node,因为它是我项目中唯一需要的类。因此,我已经更改了我的代码(如此处所建议的:https : //github.com/aws/aws-sdk-js-v3/tree/master/packages/client-lambda-node#usage),如下所示:
import * as AWS from "@aws-sdk/client-lambda-node/Lambda";
/*
I believe there is a typo in the form of
"
import * as AWS from "@aws-sdk/@aws-sdk/client-lambda-node/Lambda";
"
at …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个允许多个文件上传的 API 端点。
我不想将任何文件写入磁盘,而是缓冲它们并通过管道传输到 S3。
这是我上传单个文件的代码。一旦我尝试将多个文件发布到 中的端点route.js,它就不起作用。
route.js- 我会尽可能保持与框架无关
import Busboy from 'busboy'
// or const Busboy = require('busboy')
const parseForm = async req => {
return new Promise((resolve, reject) => {
const form = new Busboy({ headers: req.headers })
let chunks = []
form.on('file', (field, file, filename, enc, mime) => {
file.on('data', data => {
chunks.push(data)
})
})
form.on('error', err => {
reject(err)
})
form.on('finish', () => {
const buf = Buffer.concat(chunks)
resolve({
fileBuffer: buf,
fileType: …Run Code Online (Sandbox Code Playgroud) 我正在使用 NodeJS 将适用于 AWS 的 javascript SDK 从 V2 迁移到 V3。我们的应用程序需要在几个地方检查凭据。之前我们使用了凭证提供程序链,但我在 V3 中找不到等效项。当我的脚本在本地运行时,我需要查看共享 INI 文件 ( SharedIniFileCredential),但该脚本也在 kubernetes 中运行,所以(我认为)我还需要roleAssumerWithWebIdentity. 如何在 V3 中使用凭证链?
使用 AWS 控制台 --> AWS Cost Management --> Cost Explorer 时 - 我得到以下值:
当我使用@aws-sdk/client-cost-explorer“EC2 - 其他”和“Amazon Load Balancer”时,我得到不同的结果。
配置:
import { CostExplorerClient, GetCostAndUsageCommand } from '@aws-sdk/client-cost-explorer';
const client = new CostExplorerClient({
region,
credentials: {
accessKeyId,
secretAccessKey
}
});
const params = {
TimePeriod: {
Start: startDate,
End: endDate
},
Filter: {
Dimensions: {
Key: 'SERVICE',
Values: [
'EC2 - Other', 'Amazon ElastiCache'
]
}
},
GroupBy: [
{
Type: 'DIMENSION',
Key: 'SERVICE',
},
],
Granularity: 'DAILY',
Metrics: [ …Run Code Online (Sandbox Code Playgroud) javascript amazon-web-services node.js aws-sdk-js aws-sdk-js-v3
我有一个使用 aws-sdk 的 javascript 项目。不,我想使用amazon-cognito-identity-js。页面上写着:
请注意,Amazon Cognito AWS SDK for JavaScript 只是 AWS Javascript SDK 命名空间的精简版,命名为 AWSCognito 而不是 AWS。它仅引用 Amazon Cognito Identity 服务。
事实上,例如,我可以使用以下命令创建 CognitoIdentityServiceProvider:
CognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider();
Run Code Online (Sandbox Code Playgroud)
但是我该怎么做,就像对用户进行身份验证一样?根据amazon-cognito-identity-js文档:
authenticationDetails = new CognitoIdentityServiceProvider.AuthenticationDetails({Userame: ..., Password: ...});
cognitoUser.authenticateUser(authenticationDetails, ...)
Run Code Online (Sandbox Code Playgroud)
但是 CognitoIdentityServiceProvider 对象没有 AuthenticationDetails 属性。
当我使用 aws-sdk 而不是 amazon-cognito-identity-js 时,我是否必须做一些不同的事情?
或者我的假设是错误的,我同时需要 aws-sdk 和 amazon-cognito-identity-js?
截至目前,至少有 5 个与 Cognito 相关的 AWS SDK 软件包。
其中一些在方法上是重叠的。许多只是略有不同。这些文档和链接有的已经过时,有的完全不正确。
大多数文档使用 ES5,一些使用 ES6,一些使用 TypeScript,一些使用 Node。
开发人员如何知道如何从中得出正面或反面的结论?
s3.upload()提供的方法以及通过调用生成的临时IAM 凭证
直接从浏览器上传文件时,对于非分段上传以及分段上传的第一部分,一切正常上传。AWS.STS.getFederationToken()
但是,当s3.upload()尝试发送分段上传的第二部分时, S3会响应错误403 Access Denied。
为什么?
为了实现这一目标,我在浏览器中使用了适用于 Javascript 的 AWS 开发工具包s3.upload()的方法,据我所知,它只不过是其对.new AWS.S3.ManagedUpload()
我正在尝试的简单说明可以在这里找到:https://aws.amazon.com/blogs/developer/announcing-the-amazon-s3-management-uploader-in-the-aws-sdk-for- javascript/
此外,我还使用API 层AWS.STS.getFederationToken()提供临时IAM 用户凭证来授权上传。
1、2、3:
<input type="file">。AWS.STS.getFederationToken()一个Policy参数进行调用,该参数将其权限范围限制为将文件上传到提供钥匙。然后将生成的临时信用返回给浏览器。AWS.S3客户端,然后执行该AWS.S3.upload()方法来执行文件的(据称)自动分段上传。api.myapp.com/vendUploadCreds.js
这是调用的 API 层方法,用于生成和出售临时上传凭证。此时,该帐户已通过身份验证并被授权接收凭据并上传文件。
module.exports = function vendUploadCreds(request, response) {
var …Run Code Online (Sandbox Code Playgroud) aws-sdk-js ×10
node.js ×5
aws-lambda ×3
amazon-s3 ×2
aws-sdk ×2
javascript ×2
busboy ×1
multipart ×1
upload ×1