通过 jclouds 使用 AWS (S3) - 如何承担角色

Posted

技术标签:

【中文标题】通过 jclouds 使用 AWS (S3) - 如何承担角色【英文标题】:Using AWS (S3) via jclouds - how to assume role 【发布时间】:2014-06-24 13:45:09 【问题描述】:

当使用普通的身份验证凭据时,我可以这样做:

ContextBuilder.newBuilder("aws-s3").credentials(keyId, key).buildView(BlobStoreContext.class);

... 访问 S3 的 BlobStoreContext。

在本机 Amazon java api 中,我可以使用安全令牌服务 (STS) 担任角色并使用临时凭证来访问 S3 或任何其他 AWS 服务。

我如何在 jclouds 中做到这一点?

【问题讨论】:

【参考方案1】:

我想通了。

此代码 sn-p 允许承担角色并使用临时凭据访问 S3:

STSApi api = ContextBuilder.newBuilder("sts").credentials(keyId,
        key).buildApi(STSApi.class);

AssumeRoleOptions assumeRoleOptions = new AssumeRoleOptions().durationSeconds(3600).externalId(externalId);
final UserAndSessionCredentials credentials = api.assumeRole(roleArn, sessionName, assumeRoleOptions);

Supplier<Credentials> credentialsSupplier = new Supplier<Credentials>() 
    @Override
    public Credentials get() 
        return credentials.getCredentials();
    
;
BlobStoreContext context = ContextBuilder.newBuilder("aws-s3").credentialsSupplier(credentialsSupplier).buildView(BlobStoreContext.class);

【讨论】:

以上是关于通过 jclouds 使用 AWS (S3) - 如何承担角色的主要内容,如果未能解决你的问题,请参考以下文章

JClouds S3:上传文件时指定内容长度

使用 jclouds API 创建 aws-ec2 实例

JClouds:如何将新卷附加到 AWS EC2 实例

jclouds 支持较新的 vCloud API

我如何通过AWS SNS设置有关上传事件的AWS S3?

通过 AWS 开发工具包创建签名的 S3 和 Cloudfront URL