Apache Camel поддерживает использование s3client для подключения к AWS S3. Поскольку проблема здесь заключается в доступе к S3 из перекрестной учетной записи, сначала мы должны создать роль в учетной записи B с учетной записью A в качестве доверенной учетной записи. Обязательно предоставьте требуемый доступ S3 к этой роли с помощью политик.
Теперь создайте политику в учетной записи A, как показано ниже, чтобы взять на себя роль.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"sts:AssumeRole",
"sts:GetSessionToken"
],
"Resource": "arn:aws:iam::Account_B:role/Cross-account-s3-access"
}
]
}
Создайте роль в учетной записи A и прикрепите эту политику к вновь созданной роли. Назначьте эту политику экземпляру ec2, в котором развернут верблюд (применимо к любому приложению, требующему доступа к нескольким учетным записям).
Теперь мы можем сгенерировать временные учетные данные через любой STS API и использовать эти учетные данные для доступа к ресурсам из перекрестной учетной записи (в этом случае мы можем получить доступ к S3 из учетной записи B).
Поскольку эти учетные данные могут истечь через определенное время, нам нужно найти способ их обновить. AWS предоставляет API STSAssumeRoleSessionCredentialsProvider, который автоматически обновляет учетные данные. ниже приведен фрагмент кода для этого
Builder builder = new STSAssumeRoleSessionCredentialsProvider.Builder(roleArn, roleSession).withRoleSessionDurationSeconds(900);
return AmazonS3ClientBuilder.standard()
.withCredentials(builder.build())
.withRegion(region)
.build();
person
Bharani
schedule
13.07.2018