小编sma*_*020的帖子

调用 GetObjectTagging 操作时,Amazon S3 cp 失败并显示 (AccessDenied)

当我尝试将数据从公共存储桶复制到我自己的存储桶时,它失败并出现以下错误

aws s3 cp s3://awssampledbuswest2/tickit/spectrum/sales/sales_ts.000 s3://<my bkt>/

copy failed: s3://awssampledbuswest2/tickit/spectrum/sales/sales_ts.000 to s3://<my bkt>/sales_ts.000 An error occurred (AccessDenied) when calling the GetObjectTagging operation: Access Denied
Run Code Online (Sandbox Code Playgroud)

由于源路径可供每个人使用,因此任何人都可以尝试通过替换<my bkt>为您自己的路径来执行相同的操作。

令人惊讶的是,我可以将文件从公共存储桶下载到本地文件系统并将其上传到我自己的存储桶中

aws s3 cp s3://awssampledbuswest2/tickit/spectrum/sales/ . --recursive
Run Code Online (Sandbox Code Playgroud)

和

aws s3 cp sales_ts.000 s3://<my bkt>/
Run Code Online (Sandbox Code Playgroud)

非常感谢任何解释为什么会发生这种错误以及如何避免此错误!

附言。我尝试与 AWS 账户所有者和以下 IAM 用户联系,但没有成功。 在此输入图像描述

amazon-s3 amazon-web-services

12
推荐指数
4
解决办法
2万
查看次数

从 Amazon S3 路径读取 TFRecord 文件

我尝试使用文件路径和 tf.data.TFRecordDataset() 直接从 Amazon S3 存储桶读取 TFRecord 文件。

似乎 tf.data.TFRecordDataset() 只接受 tf.string 或 tf.data.dataset 格式的文件名。

我尝试遵循,但没有成功。

filenames = ["s3://path_to_TFRecord"]
dataset = tf.data.TFRecordDataset(filenames)
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 s3fs 和文件句柄来解决该问题,但失败了。

任何解决方案表示赞赏。

amazon-s3 amazon-web-services tensorflow

7
推荐指数
0
解决办法
447
查看次数

如何使用 Java 将文件上传到 AWS 中的预签名 URL?

URL url = new URL("https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/arn%3Aaws%3Adevicefarm%3Aus-west-2%3A225178842088%3Aproject%3A1e6bbc52-5070-4505-b4aa-592d5e807b15/uploads/arn%3Aaws%3Adevicefarm%3Aus-west-2%3A225178842088%3Aupload%3A1e6bbc52-5070-4505-b4aa-592d5e807b15/501fdfee-877b-42b7-b180-de584309a082/Hamza-test-app.apk?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20181011T092801Z&X-Amz-SignedHeaders=host&X-Amz-Expires=86400&X-Amz-Credential=AKIAJSORV74ENYFBITRQ%2F20181011%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=f041f2bf43eca1ba993fbf7185ad8bcb8eccec8429f2877bc32ab22a761fa2a");
        File file = new File("C:\\Users\\Hamza\\Desktop\\Hamza-test-app.apk");
        //Create Connection
        HttpURLConnection connection =  (HttpURLConnection) url.openConnection();
        connection.setDoOutput(true);
        connection.setRequestMethod("PUT");
        BufferedOutputStream bos = new BufferedOutputStream(connection.getOutputStream());
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
        int i;
        // read byte by byte until end of stream
        while ((i = bis.read()) > 0) {
    bos.write(i);
        }
        bos.flush();
        bis.close();
        bos.close();


        System.out.println("HTTP response code: " + connection.getResponseCode());
    }catch(Exception ex){
        System.out.println("Failed to Upload File");
    }
Run Code Online (Sandbox Code Playgroud)

我想用 java 将文件上传到 aws 农场设备,但文件未上传到 aws 项目上传列表。

java amazon-s3 amazon-web-services aws-lambda aws-java-sdk

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

如何使用 AWS 开发工具包 V2 配置 Amazon S3 终端节点?

在 AWS SDK V1 中,我将凭证设置为:

BasicAWSCredentials awsCredentials = new BasicAWSCredentials(Credentials.access_key, Credentials.secret_access_key);
Run Code Online (Sandbox Code Playgroud)

然后将端点设置为:

EndpointConfiguration endpoint = new EndpointConfiguration("<endpoint URL>", "<region>"); 
Run Code Online (Sandbox Code Playgroud)

然后创建客户端:

AmazonS3 s3client = AmazonS3ClientBuilder.standard()
            .withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
            .withEndpointConfiguration(endpoint)
            .build(); 
Run Code Online (Sandbox Code Playgroud)

如何使用 AWS 开发工具包 V2 设置同一客户端?

java amazon-s3 amazon-web-services

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

如何通过 @aws-sdk/client-redshift-data 访问 Amazon Redshift

我开发了后端数据库为 Redshift 的示例应用程序,并尝试通过以下 SDK 代码执行查询。

import { RedshiftDataClient, ExecuteStatementCommand } from '@aws-sdk/client-redshift-data';


export const resolvers: IResolvers<unknown, Context> = {
  Query: {
    user: (parent, args, context): User => ({ login: context.login }),
    region: (): string => getRegion(),
    getData: async () => {
      const redshift_client = new RedshiftDataClient({});
      
      const request = new ExecuteStatementCommand({
        ClusterIdentifier: 'testrs',
        Sql: `select * from test`,
        SecretArn: 'arn:aws:secretsmanager:us-east-1:12345561:secret:test-HYRSWs',
        Database: 'test',
      });

      try {
        const data = await redshift_client.send(request);
        console.log('data', data);
        return data;
      } catch (error) {
        console.error(error);
        throw …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-redshift aws-sdk

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

我们可以同时查询和删除 Amazon DynamoDB 中的项目吗?

我们想要运行一个查询,其中返回的所有项目都将被删除。更明确地说,我们真正想要做的是运行一个查询,其中如果某个项目与条件匹配,则应将其包含在响应中,并从 Amazon DynamoDB 中删除。然后查询应该选择第二个选项。

因此,在查询响应后,数据库中将不存在此类订单,因为它们已被即时删除。


包含 5 个项目(项目示例图片如下)的示例工作流程如下所示 -

在此输入图像描述


  • 查询运行检查 if From= Kartik。
  • 查询出现在第一项 ( 1000) 上并发现它与条件匹配。
  • 它捕获该项目,并将其从表中删除。现在,只有响应包含此项,而不是表。
  • 查询移动到更多项目 ( 1001& 1002) 并发现它们不符合条件,因此它甚至不会捕获它们,也不会删除它们。
  • 查询找到1003符合条件的第 4 项 ( )。因此,它在响应中捕获它,并将其从表中删除。
  • 与上述第 5 项 ( 1004) 相同。

现在,查询完成,并返回仅包含第 1、第 4 和第 5 项的响应。现在,如果我去 DynamoDB 中查找它们,它将返回错误,因为它们已从那里删除。


所以,这就是我想要的流程。这有可能做到吗?

任何帮助表示赞赏!谢谢!

amazon-web-services amazon-dynamodb dynamodb-queries

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

如何通过一对一的消息处理来实施 Amazon SQS (fifo)-lambda

我有一个用例,其中有一个带有 lambda 函数的 Amazon SQS fifo 队列。我需要确保 fifo 仅在前一个 lambda 执行完成时才触发 lambda(事件也按顺序出现)。从 aws 文档来看,fifo 支持一次处理,但它没有在任何地方提到它不会在 lambda 上推送更多事件,直到第一条消息完全处理为止。

我需要确保仅当 lambda 函数完全处理前一条消息时才处理下一条消息。

有没有办法确保当消息 1 完全由 lambda 处理时,消息 2 只由 lambda 处理?

queue message-queue amazon-sqs amazon-web-services aws-lambda

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

如何使用 python 将文件上传到 Amazon S3 签名的 url?

我已成功使用 boto3 生成 Amazon S3 签名 URL。

import logging
import boto3
from botocore.exceptions import ClientError

def create_presigned_url(bucket_name, object_name, expiration=3600):
    """Generate a presigned URL to share an S3 object

    :param bucket_name: string
    :param object_name: string
    :param expiration: Time in seconds for the presigned URL to remain valid - 1 hour in this case
    :return: Presigned URL as string. If error, returns None.
    """

    # Generate a presigned URL for the S3 object
    s3_client = boto3.client('s3')
    try:
        response = s3_client.generate_presigned_url('get_object', Params={'Bucket': bucket_name, …
Run Code Online (Sandbox Code Playgroud)

python amazon-s3 amazon-web-services pre-signed-url boto3

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

为什么Amazon DynamoDB的Delete方法不返回删除的结果?

我正在为删除操作创建一个快速 api ,成功删除项目后,我希望删除的项目显示为响应,该项目正在从表中删除,但当从 CURL 命令运行时, API 给出空对象 {}作为响应,我正在关注aws 的这些文档。

这是我的代码

router.delete('/delete/:id',function(req, res, next) {
  
  const params = {
    TableName: 'Notes',
    Key: {
      id: req.params.id,
    },
  };

  dynamoDb.delete(params, function (error,data) {
    if (error) {
      console.log(error);
      res.status(400).json({ error: 'Could not update user' });
    }
    res.status(200).json(data);
  });
})
Run Code Online (Sandbox Code Playgroud)

卷曲命令

curl -H "Content-Type: application/json" -X DELETE xxxxxxxxxxxxxxx/dev/user/delete/alexdebrie2 
Run Code Online (Sandbox Code Playgroud)

amazon-web-services node.js express amazon-dynamodb

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

使用 Amazon S3 SignedURL 从浏览器客户端 PUT 文件是否安全?

我的后端是一个 nodejs 应用程序,我希望用户将图像上传到 Amazon S3 存储桶。

从我的服务器运行:

const s3 = new AWS.S3({
  params: {
    Bucket: bucket
  }
});

app.get('/api/images/signed-url', authMiddleware, (req, res) => {
  s3.getSignedUrl('putObject', 
    { ContentType: 'image/jpeg', Key: uuid() + '.jpeg' }, 
    (_err, url) => res.send({ signedUrl })
})
Run Code Online (Sandbox Code Playgroud)

然后从我的浏览器客户端上传到该端点

该网址如下所示:

https://my-s3-bucket.s3.ap-southeast-2.amazonaws.com/0050db00-c64c-419a-83c2-e8615120f458.jpeg?AWSAccessKeyId=MY_ACCESS_KEY&Content-Type=image%2Fjpeg&Expires=1625365030&Signature=1ebnshTgeMKoLMAH%2Bi2FLletsAU%3D
Run Code Online (Sandbox Code Playgroud)

鉴于此 URL 包含 my MY_ACCESS_KEY_ID,与客户共享是否安全?我不分享我的秘密(显然),但它是等式的一半。

amazon-s3 amazon-web-services pre-signed-url

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