Использование AWS (S3) через jclouds - как взять на себя роль

При использовании простых аутентификационных учетных данных я могу сделать:

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

... чтобы получить доступ к BlobStoreContext для S3.

В нативном API Java Java я могу использовать Security Token Service (STS), чтобы взять на себя роль и использовать временные учетные данные для доступа к S3 или любому другому сервису AWS.

Как мне сделать это в jclouds?

1 ответ

Решение

Я понял.

Этот фрагмент кода позволяет взять на себя роль и использовать временные учетные данные для доступа к 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);
Другие вопросы по тегам