标签: aws-sdk

将 AWS CLI 配置文件用于特定节点程序的上下文

我有几个用于管理不同项目的 AWS 配置文件。我们将默认的称为“user1”,将我想要使用的称为“user2”

因此,如果我只是这样做,aws s3 ls它当然会给我 user1 的信息,或者如果我这样做,aws s3 ls --profile=user2它会给我 user2 的信息,这里一切都很好

我也知道我可以export AWS_DEFAULT_PROFILE=user2这样做aws s3 ls,这正确地给了我 user2 的存储桶

问题是,我有一个 Node 应用程序,当我在本地运行时,我想使用 user2 的配置文件。我已经尝试过各种方式AWS_DEFAULT_PROFILE=user2 npm run dev,但不知道该怎么做?

问题如何运行本地 Node 程序并使其 AWS SDK 使用我所需的配置文件?

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

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

使用 DynamoDB 时,同一主键下可以有多个条目吗?

我目前正在开发一项技能,将成为股票投资组合经理。我希望表格有三个标题

  1. 用户 ID(来自 Alexa)
  2. 股票名称
  3. 库存数量

UserID 是主键,目前我可以将股票数量添加到表中,然后在一个名为 GetPortfolioValue 的单独方法中查询数据库以返回特定 UserID 的股票名称和股票数量,然后我将执行一些操作计算返回投资组合值。

问题是,我无法在主键下添加另一个条目,因此投资组合中只能有一个股票期权,这很糟糕

我希望以后能够编辑投资组合,以防用户出售部分股票。

有没有办法使用 DynamoDB 来做到这一点?

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

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

为什么 doesObjectExist 和 listObjects 在 S3 的 Java API 上不一致?

我有一个 S3 存储桶demo,里面有一个对象demo/somefolder。当我调用s3.doesObjectExists("demo", "somefolder")它时返回 false。但是,当我调用 时s3.listObjects("demo", "somefolder")ObjectListing返回的 引用了S3ObjectSummary.

对这里发生的事情有什么想法吗?

amazon-s3 aws-sdk

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

如果使用 aws-sdk 已存在具有相同密钥的对象,则覆盖 S3 存储桶中的对象

我正在使用 aws-sdk 节点模块将文件上传到 s3 存储桶。如果我尝试上传存储桶中已存在密钥的对象,我希望它覆盖现有对象。

有没有办法实现这种行为?

这是我的代码:

const uploadedImageData = await s3.upload({
          Bucket: AWS_bucket_name,
          Key: `profile-photo-${username}.jpg`,
          Body: resizedImage,
          ACL:'public-read-write',
        }).promise();```
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services aws-sdk

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

DynamoDB getItem 仅包含 id (aws sdk)

有没有什么方法可以只使用id来获取一个或多个元素具有相同的 id)?而不使用alsoe 属性?name

  let params = {
  TableName: "TableName",
  Key: {
    id: { S: req.body.ProjectId },
    // name: { S: req.body.name }
  },
};

ddb.getItem(params, function (err, data) {
  if (err) {
    console.log("Error", err);
    res.send(err);
  } else {
    console.log("Success", data);
    res.send(data);
  }
});
Run Code Online (Sandbox Code Playgroud)

});

javascript amazon-web-services node.js amazon-dynamodb aws-sdk

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

AWS STS 使用案例和优势

我对 STS 的用例和优点感到困惑。根据文档,它是临时获取一个角色来执行 AWS 中 IAM 用户或服务无法执行的任务。请注意,我说的是编程访问(不是控制台访问)

例如,IAM 用户可能没有 S3 权限。据我的理解:

  1. 他可以通过联系AWS STS来获取临时访问密钥/令牌,并获取S3的访问密钥和秘密。

  2. 有了这些临时凭证,他就可以访问 S3。

我的问题是:

  1. 要从 AWS STS 获取临时凭证,他仍然需要现有的访问令牌(永久)和秘密,对吧?

  2. 如果他现有的访问令牌和秘密被泄露,攻击者仍然可以使用它首先从 STS 获取临时凭证,然后访问 S3,对吧?据我所知,攻击者将无法使用他的永久访问令牌和秘密直接访问 S3。

我正在尝试了解其正确的用例。我知道我很困惑,但也许我在循环思考。

提前致谢。

amazon-web-services aws-cli aws-sdk aws-sts

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

使用 AWS 开发工具包 JavaScript 删除使用计划

我尝试通过调用deleteUsagePlan函数并传递usagePlanId参数来使用AWS SDK删除使用计划,如下所示:

  const params: AWSNXR.APIGateway.DeleteUsagePlanRequest = {
    usagePlanId: usage_plan_id,
  };

  const apigw = new AWS.APIGateway();

  const response = await apigw.deleteUsagePlan(params).promise();
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,我无法这样做,并且收到此错误:BadRequestException:无法删除使用计划 USAGE_PLAN_ID_HERE,因为有与其关联的 API 阶段,包括 API_ID_HERE:测试

重现步骤:

1-使用以下参数创建使用计划

名称:“my_usage_plan”,apiStages:[ apiId:“API_ID_HERE”,阶段:“测试”]

2-删除使用计划

使用计划 ID:USAGE_PLAN_ID

我在步骤 #2 中不断收到错误消息: BadRequestException: 无法删除使用计划 USAGE_PLAN_ID_HERE 因为有与其关联的 API 阶段,包括 API_ID_HERE:test

预期行为:

预期的行为是能够使用使用计划 ID 删除新创建的使用计划

附加内容:

我尝试解决此问题的方法: 1- 我尝试删除 API 网关上的测试阶段 2- 我使用相同的使用计划 ID 运行删除使用计划功能

使用计划已成功删除,没有任何错误,但是,我应该能够删除它,而无需删除阶段并在之后重新创建它。

amazon-web-services aws-sdk aws-api-gateway aws-sdk-js

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

DynamoDB 解组 dynamodb 记录数组?(SDK v3 JavaScript)

我找不到解组 DynamoDB 记录数组的方法?我从 DynamoDB 中的查询返回多个项目,但无法使用unmarshal来自@aws-sdk/util-dynamodb记录数组的函数。当我迭代记录数组并解组每一条记录时,这可行,但这不是最好的解决方案,因为我要返回大量数据。如何让 DynamoDB 返回多条记录,而无需迭代记录数组来解组每条记录?

代码:

  const client = new DynamoDBClient({ region: 'us-east-1' });  
  const currentDateUTC = moment().utc().format('YYYY-MM-DD');

  const command = new QueryCommand({
    TableName: 'Device-Data',
    IndexName: 'timestamp-index',
    KeyConditionExpression: '#timestamp = :timestamp',
    ExpressionAttributeNames: { '#timestamp': 'timestamp' },
    ExpressionAttributeValues: { ':timestamp': { S: currentDateUTC } },
  });
  
  const data = await client.send(command)
Run Code Online (Sandbox Code Playgroud)

回复:

[
  {
    deviceId: {
      S: "test1",
    },
    userId: {
      S: "318ecd46-bead-440f-83eb-60345aaa1c40",
    },
    timestamp: {
      S: "2022-06-12",
    },
    frequency: {
      S: "Monthly",
    },
  }, …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-dynamodb aws-sdk

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

如何使用 aws-sdk 方法从 elasticache 设置或获取数据

我正在尝试在节点js中使用aws-sdk从redis获取数据。到目前为止,我可以使用 client-elasticache 连接缓存。

redisClient = new ElastiCacheClient({region : "REGION"});
Run Code Online (Sandbox Code Playgroud)

图书馆 :@aws-sdk/client-elasticache

但我无法找到任何直接方法来使用此客户端从缓存获取数据,例如我们在 io-redis 中的get()mget() 。有没有办法使用 aws-sdk 获取这样的数据?

amazon-web-services amazon-elasticache aws-sdk aws-sdk-nodejs

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

如何在ruby脚本中将ruby变量设置为shell环境变量

我想用雾写一个ruby脚本(aws-sdk的包装器).当然,我可以硬编码我的aws密钥和ID,但是我希望能够将它动态设置为我的shell env变量,因为我管理多个帐户.

require 'fog'
require 'json'
require 'logger'

aws_key_id = $aws_key_id
aws_secret_key = $aws_secret_key
queue_url = $sqs_queue_url
Run Code Online (Sandbox Code Playgroud)

这会有用吗?

ruby amazon-web-services secret-key fog aws-sdk

0
推荐指数
1
解决办法
108
查看次数