标签: aws-sdk-js

有没有办法从 node.js 同步调用 AWS Lambda?

我正在尝试通过 AWS Lambda 从现有应用程序运行特定函数,使用 JS SDK 从我的 node.js 应用程序调用 Lambda。由于我要覆盖现有函数,因此我必须保留其基本结构,即:

overwrittenFunction = function(params) {
    //get some data
    return dataArray;
}
Run Code Online (Sandbox Code Playgroud)

..所以我需要得到一个我可以返回的数组,如果我想保留我使用的库的底层结构。现在,据我所知,LAMBDA调用是异步的,因此它能够做这样的事情:

overwrittenFunction = function(params) {
    lambda.invoke(params, callback);
    function callback(err,data) {
        var dataArray = data;
    }
    return dataArray;
}
Run Code Online (Sandbox Code Playgroud)

(我也尝试过类似的承诺和异步/等待)。

afaik 我现在有两个选择:以某种方式弄清楚如何进行同步 Lambda 调用,或者修改我的库/现有应用程序(如果可能,我宁愿不这样做)。

有没有办法做这样的事情并以某种方式返回我期望的值?

(我正在使用节点 v8.9.4)

asynchronous amazon-web-services node.js aws-lambda aws-sdk-js

6
推荐指数
2
解决办法
7964
查看次数

AWS Javascript SDK:上传带有元数据的对象

Tye AWS.S3.ManagedUpload 对象允许您上传指定“标签”的对象,但我没有看到任何用于在上传的对象上指定元数据的文档。这可能吗?如果是这样,如何?

aws-sdk-js

6
推荐指数
1
解决办法
6715
查看次数

如何在 AWS-SDK JS 版本 3 中获取签名的 S3 Url?

我正在遵循Trivikr提出的解决方案,以添加对s3.getSignedUrlapi 的支持,该支持目前在较新的 v3 中不可用。我正在尝试创建一个签名的 url 以从存储桶中获取一个对象。

为方便起见,代码添加如下:

const { S3, GetObjectCommand } = require("@aws-sdk/client-s3"); // 1.0.0-gamma.2 version
const { S3RequestPresigner } = require("@aws-sdk/s3-request-presigner"); // 0.1.0-preview.2 version
const { createRequest } = require("@aws-sdk/util-create-request"); // 0.1.0-preview.2 version
const { formatUrl } = require("@aws-sdk/util-format-url"); // 0.1.0-preview.1 //version
const fetch = require("node-fetch");

(async () => {
 try {

  const region = "us-east-1";
  const Bucket = `SOME_BUCKET_NAME`;
  const Key = `SOME_KEY_VALUE`;
  const credentials = {
      accessKeyId: ACCESS_KEY_HERE,
      secretAccessKey: SECRET_KEY_HERE,
      sessionToken: SESSION_TOKEN_HERE …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services aws-sdk-nodejs aws-sdk-js

6
推荐指数
2
解决办法
1546
查看次数

如何使用 Amazon SES API V2 获取 DKIM 和域验证码

为了完成 SES 域验证,我需要做两件事:

一切都可以像往常一样通过 API 完成(我通过CloudFormation 自定义资源使用 SES API )。

我正在尝试使用AWS.SESV2 (2019)验证域并创建 DKIM 。

问题在于AWS.SESV2.createEmailIdentity创建域验证码和 DKIM。

但是我无法从 API 响应中取回域验证码...我可以在 API 响应中找到 3 个 DKIM 令牌,但我无法获取验证令牌,尽管它已创建并且在 AWS 控制台中可见.

我需要从 API 调用中获取域验证令牌,因为我正在执行 IaaC。我不希望从 AWS 控制台进行任何手动复制/粘贴。

我可以在下面的文档中看到 DKIM 令牌,但已创建的域验证令牌在哪里?

在此处输入图片说明


我也很难理解AWS.SES (2010) 和AWS.SESV2 (2019)之间的区别。使用这 2 个 API 可以完成所有事情吗?哪一个用于什么用例?

看起来域验证可以使用AWS.SES.verifyDomainIdentity完成,但AWS.SESV2中没有类似的内容。

但是 DKIM 可以使用AWS.SES.verifyDomainDkimAWS.SESV2使用这两个接口来完成创建电子邮件身份

我正在尝试使用这两个 API …

amazon-web-services amazon-ses aws-sdk-js

6
推荐指数
0
解决办法
163
查看次数

React Native Android 中的 AWS SNS 错误“URL.hostname 未实现”

在 React Native 中使用适用于 JavaScript v3 的 AWS 开发工具包中的 SNS 服务

当我尝试创建端点(或通过 AWS 执行任何命令)时,出现此错误URL.hostname is not implemented

  • 我尝试了许多其他命令;同样的错误
  • 我所做的唯一会产生不同错误的事情是,如果我region在创建客户端时从参数中删除。Region is missing然后它在同一个地方出错。但值得注意的是,如果我只是asdf123为区域传递无意义的 (),它会产生相同的 URL.hostname 错误
import { CognitoIdentityClient } from "@aws-sdk/client-cognito-identity";
import { fromCognitoIdentityPool } from "@aws-sdk/credential-provider-cognito-identity";
import { SNSClient, CreatePlatformEndpointCommand } from "@aws-sdk/client-sns";

const region = 'us-west-2'
const sns = new SNSClient({
    region: region,
    credentials: fromCognitoIdentityPool({
        client: new CognitoIdentityClient({ region }),
        identityPoolId: identityPoolId,
    }) /// doesn't matter whether I pass credentials or not, …
Run Code Online (Sandbox Code Playgroud)

react-native aws-sdk-js

6
推荐指数
1
解决办法
6345
查看次数

从 AWS S3 SDK v3 中的 getObject 获取可读对象

我正在将使用 AWS S3 SDK v2 的库转换为 v3。

我的库是另一个库的接口的实现。另一个库提供抽象文件存储的接口(例如,在本地文件系统或云中存储)。

目前我有这个功能(v2 SDK):

public async getFileStream(filename: string): Promise<Readable> {
  return this.s3.getObject({
                Bucket: this.bucket,
                Key: filename,
            })
            .createReadStream();
}
Run Code Online (Sandbox Code Playgroud)

新的 v3 SDK 不再有createReadStream。我检查了互联网上的各个网站,他们都建议使用.Body.transformToWebStream().pipe. 我不能这样做,因为我需要返回Readable.

我尝试这样做(v3 SDK):

import { Readable } from 'node:stream';

public async getFileStream(filename: string): Promise<Readable> {
   return Readable.fromWeb(
       (await this.s3.getObject({
                    Bucket: this.bucket,
                    Key: filename,
              })
        ).Body.transformToWebStream()
   );
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Argument of type 'ReadableStream<any>' is not assignable to parameter of type 'import("stream/web").ReadableStream<any>'.
  Type 'ReadableStream<any>' is missing the …
Run Code Online (Sandbox Code Playgroud)

node.js aws-sdk node-streams aws-sdk-js

6
推荐指数
1
解决办法
3526
查看次数

由 client-s3 Typescript 库上传时公开 S3 对象

我使用 Typescript 代码将文件上传到 S3,如下所示:

    import {PutObjectCommand, PutObjectCommandInput, S3Client} from "@aws-sdk/client-s3";
    const s3 = new S3Client(config);
    const uploadParams: PutObjectCommandInput = {
        Bucket: bucketName,
        Key: filename,
        Body: fileData
    };
 
    await s3.send(new PutObjectCommand(uploadParams));
Run Code Online (Sandbox Code Playgroud)

但是,我需要在上传后将对象公开,以便将其作为静态网站的一部分进行访问,并将其作为私有上传。我如何告诉 s3 客户端也将其公开?

amazon-s3 typescript aws-sdk aws-sdk-nodejs aws-sdk-js

5
推荐指数
1
解决办法
4040
查看次数

如何为 AWS V3 Dynamo 客户端设置超时

我已经开始在我的一些服务中使用新的 AWS 版本 3 sdk。不幸的是,并不总是清楚如何使用版本 2 sdk 中提供的模块化版本 3 代码中的某些功能。

要为非模块化 sdk 设置超时,您可以执行以下操作:

AWS.config.update({
     httpOptions: {
        connectTimeout: 10000,
        timeout: 10000
    }
 });
Run Code Online (Sandbox Code Playgroud)

但是,当我想使用版本 3 sdk 并使用 Dynamo 客户端时,我明确尝试不使用全局 AWS 对象。据我所知,DynamoDBClient 的配置输入不接受 httpOptions,这通常是设置超时的地方。

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
const REGION = process.env.AWS_REGION;
const v3DynamoClient: DynamoDBClient = new DynamoDBClient({ region: REGION });
Run Code Online (Sandbox Code Playgroud)

如何为 AWS V3 sdk 中的 DynamoDBClient 设置超时?

amazon-dynamodb aws-sdk-js

5
推荐指数
2
解决办法
7559
查看次数

S3 ManagedUpload 相当于 aws javascript sdk v3?

在旧版本的 javascript 中,我使用 ManagedUpload 函数将大文件上传到 s3,它将进行排队并管理文件的多部分。但在 V3 中,这个函数在文档中没有任何地方,是被删除了吗?或者还有其他选择吗?请帮忙...

aws-sdk aws-sdk-js aws-sdk-js-v3

5
推荐指数
1
解决办法
2851
查看次数

在cloudflare工作人员中使用aws4fetch包进行AWS api调用?

我无法使用 aws4fetch 调用 AWS Api。

有人能给我一个如何使用 cloudflare 工作人员调用 S3 putobject 的示例吗?

amazon-s3 aws-sdk aws-sdk-js cloudflare-workers

5
推荐指数
1
解决办法
1970
查看次数