У меня есть служба Elasticsearch Service, управляемая AWS (скажем, smallES
), в которой есть правильно работающая корзина S3, к которой добавляются индексы скользящей дневной скользящей статистики за последний год.По какой-то бизнес-причине я создал еще один управляемый AWS кластер ES (скажем, bigES
).Я хочу восстановить данные за последний год из bucket
в bigES
.Гарантируется, что smallES
bigES
и bucket
находятся в одном регионе и имеют одинаковый VPC.
Итак, я создал политику:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:ListBucketMultipartUploads",
"s3:ListBucketVersions"
],
"Resource": [
"arn:aws:s3:::bucket"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Resource": [
"arn:aws:s3:::bucket/*"
]
}
]
}
И прикрепил политику с помощьюроль.Доверительные отношения для этой роли:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Теперь, когда я создаю снимок по http-запросу в том же VPC, он может создать моментальный снимок-репо для bigES
, и я тоже могу запросить это
curl -XGET 'http://bigESid.region.es.amazonaws.com:80/_snapshot'
Вывод
{
"snapshot-repo": {
"type": "s3",
"settings": {
"bucket": "bucket",
"region": "region",
"role_arn": "role_arn"
}
}
}
Но когда я пытаюсь увидеть снимки в этом репозитории моментальных снимков, я получаю сообщение об ошибке (описано ниже)
curl -XGET 'http://bigESid.region.es.amazonaws.com:80/_cat/snapshots/snapshot-repo'
Я получаю следующееошибка:
{
"error": {
"root_cause": [
{
"type": "a_w_s_security_token_service_exception",
"reason": "User: arn:aws:sts::acountid:assumed-role/cp-sts-grant-role/swift-region-prod-365021432299 is not authorized to perform: sts:AssumeRole on resource: role-arn (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: some-id)"
}
],
"type": "a_w_s_security_token_service_exception",
"reason": "User: arn:aws:sts::acountid:assumed-role/cp-sts-grant-role/swift-region-prod-365021432299 is not authorized to perform: sts:AssumeRole on resource: role-arn (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: some-id)"
},
"status": 500
}
Я предоставил доступ s3 к своей роли, но не повезло.Я разместил все запросы http от машины ec2 внутри VPC.
Также стоит упомянуть, что если я выполняю запрос, подобный следующему, я вижу ожидаемый результат
curl -XGET 'http://smallESid.region.es.amazonaws.com:80/_cat/snapshots/snapshot-repo'
IDK почемуЯ пытался создать роль, которая имеет доверительные отношения, такие как следующие.Все еще не повезло.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Заранее благодарим за любую помощь / предложения.