亚马逊S3 - 访问私人桶

时间:2017-12-04 01:20:17

标签: amazon-web-services amazon-s3 tableau tableau-server

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

1 个答案:

答案 0 :(得分:2)

通过Tableau访问私人广告

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

查看function parameter上的文章了解详情。

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

自定义生成的S3网址以访问专用存储区

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

  • 使用Connect to your S3 data with the Amazon Athena connector in Tableau 10.3。例如,为GET对象签名的URL。

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

    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 Gateway和Lambda为经过身份验证的用户提供访问端点,从而为此设置无服务器解决方案。

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