【发布时间】:2017-12-04 10:33:50
【问题描述】:
我在私有 S3 存储桶中有多个图像,我希望 Tableau 实例能够访问这些图像。是否有 URL 或某种方式可以访问这些图像,同时仍然保持 S3 存储桶的私密性?
【问题讨论】:
标签: amazon-web-services amazon-s3 tableau-api
我在私有 S3 存储桶中有多个图像,我希望 Tableau 实例能够访问这些图像。是否有 URL 或某种方式可以访问这些图像,同时仍然保持 S3 存储桶的私密性?
【问题讨论】:
标签: amazon-web-services amazon-s3 tableau-api
通过 Tableau 访问私有存储桶
您可以设置具有 S3 访问权限的 IAM 用户并允许 Tableau 访问。
查看Connect to your S3 data with the Amazon Athena connector in Tableau 10.3上的文章了解更多详情。
注意:您需要配置 Amazon Athena 以查询 S3 内容。
自定义生成的 S3 网址以访问私有存储桶
是的。您可以使用 AWS 开发工具包从后端生成签名 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 Gateway 和 Lambda 为经过身份验证的用户提供访问端点。
此外,您还可以使用带有身份池的 AWS Cognito UserPools 来直接访问 S3 私有内容,而无需执行上述步骤。为此,您需要使用 Cognito UserPools 或联合身份作为与 Cognito 身份池连接的身份提供者。
【讨论】: