Amazon S3 - 访问私有桶

Amazon S3 - Access to Private Bucket

我在私有 S3 存储桶中有多个图像,我希望 Tableau 实例能够访问这些图像。是否有 URL 或某种方式来访问这些图像,同时仍然保持 S3 存储桶的私密性?

通过 Tableau 访问私有存储桶

您可以设置一个具有 S3 访问权限的 IAM 用户并允许 Tableau 访问。

查看 Connect to your S3 data with the Amazon Athena connector in Tableau 10.3 上的文章了解更多详情。

注意:查询S3内容需要配置Amazon Athena。

自定义生成的 S3 Urls 以访问私有存储桶

是的。您可以使用 AWS SDK 从后端生成 Signed URL。这可以直接使用 S3 或通过 AWS CloudFront 完成。

  • 使用 S3 Signed Urls。例如,为 GET 对象签名 Url。

    var params = {Bucket: 'bucket', Key: 'key'};
    var url = s3.getSignedUrl('getObject', params);
    console.log('The URL is', url);
    
  • 使用 CloudFront Signed Urls。例如,在 CloudFront 中为 GET 签名 Url。

    var cfsign = require('aws-cloudfront-sign');
    
    var signingParams = {
      keypairId: process.env.PUBLIC_KEY,
      privateKeyString: process.env.PRIVATE_KEY,
      // Optional - this can be used as an alternative to privateKeyString
      privateKeyPath: '/path/to/private/key',
      expireTime: 1426625464599
    }
    
    // Generating a signed URL
    var signedUrl = cfsign.getSignedUrl(
     'http://example.cloudfront.net/path/to/s3/object', 
      signingParams
    );
    

    注意:生成 Url 需要在后端完成。您可以为此设置无服务器解决方案,方法是使用 AWS API 网关和 Lambda 为经过身份验证的用户提供端点以供访问。

此外,您还可以将 AWS Cognito UserPools 与身份池结合使用,无需执行上述步骤即可直接访问 S3 私有内容。为此,您需要使用 Cognito UserPools 或联合身份作为与 Cognito 身份池连接的身份提供者。