使用普通身份验证凭据时,我可以这样做:
ContextBuilder.newBuilder("aws-s3").credentials(keyId, key).buildView(BlobStoreContext.class);
... 访问 S3 的 BlobStoreContext。
在本机 Amazon java api 中,我可以使用安全令牌服务 (STS) 来承担角色并使用临时凭证来访问 S3 或任何其他 AWS 服务。
我如何在 jclouds 中做到这一点?
使用普通身份验证凭据时,我可以这样做:
ContextBuilder.newBuilder("aws-s3").credentials(keyId, key).buildView(BlobStoreContext.class);
... 访问 S3 的 BlobStoreContext。
在本机 Amazon java api 中,我可以使用安全令牌服务 (STS) 来承担角色并使用临时凭证来访问 S3 或任何其他 AWS 服务。
我如何在 jclouds 中做到这一点?
我想到了。
此代码段允许担任角色并使用临时凭据访问 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);