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

时间:2014-05-07 14:12:40

标签: java amazon-web-services amazon-s3 jclouds aws-sts

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

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

...访问S3的BlobStoreContext。

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

我如何在jclouds中这样做?

1 个答案:

答案 0 :(得分:2)

我明白了。

此代码段允许承担角色并使用临时凭证访问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);